mediatype patch
Ove Kaaven
ovehk at ping.uio.no
Sat Oct 20 10:31:35 CDT 2001
Remember to run tools/make_requests after applying...
Log:
Ove Kaaven <ovek at transgaming.com>
Save a disk file's media type in the server object.
Index: files/dos_fs.c
===================================================================
RCS file: /cvsroot/winex/wine/files/dos_fs.c,v
retrieving revision 1.1.1.13
retrieving revision 1.2
diff -u -r1.1.1.13 -r1.2
--- files/dos_fs.c 2001/10/04 13:46:22 1.1.1.13
+++ files/dos_fs.c 2001/10/19 16:40:51 1.2
@@ -765,7 +765,7 @@
if (!strcmp(DOSFS_Devices[i].name,"NUL"))
return FILE_CreateFile( "/dev/null", access,
FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,
- OPEN_EXISTING, 0, 0, TRUE );
+ OPEN_EXISTING, 0, 0, TRUE, 0 );
if (!strcmp(DOSFS_Devices[i].name,"CON")) {
HANDLE to_dup;
switch (access & (GENERIC_READ|GENERIC_WRITE)) {
Index: files/drive.c
===================================================================
RCS file: /cvsroot/winex/wine/files/drive.c,v
retrieving revision 1.1.1.14
retrieving revision 1.2
diff -u -r1.1.1.14 -r1.2
--- files/drive.c 2001/10/04 13:46:23 1.1.1.14
+++ files/drive.c 2001/10/19 16:40:51 1.2
@@ -669,7 +669,7 @@
/***********************************************************************
* DRIVE_GetType
*/
-static UINT DRIVE_GetType( int drive )
+UINT DRIVE_GetType( int drive )
{
if (!DRIVE_IsValid( drive )) return DRIVE_UNKNOWN;
return DOSDrives[drive].type;
Index: files/file.c
===================================================================
RCS file: /cvsroot/winex/wine/files/file.c,v
retrieving revision 1.1.1.20
retrieving revision 1.2
diff -u -r1.1.1.20 -r1.2
--- files/file.c 2001/10/13 20:10:41 1.1.1.20
+++ files/file.c 2001/10/19 16:40:52 1.2
@@ -281,7 +281,8 @@
*/
HANDLE FILE_CreateFile( LPCSTR filename, DWORD access, DWORD sharing,
LPSECURITY_ATTRIBUTES sa, DWORD creation,
- DWORD attributes, HANDLE template, BOOL fail_read_only )
+ DWORD attributes, HANDLE template, BOOL fail_read_only,
+ UINT mediatype )
{
DWORD err;
HANDLE ret;
@@ -297,11 +298,12 @@
restart:
SERVER_START_VAR_REQ( create_file, len )
{
- req->access = access;
- req->inherit = (sa && (sa->nLength>=sizeof(*sa)) && sa->bInheritHandle);
- req->sharing = sharing;
- req->create = creation;
- req->attrs = attributes;
+ req->access = access;
+ req->inherit = (sa && (sa->nLength>=sizeof(*sa)) && sa->bInheritHandle);
+ req->sharing = sharing;
+ req->create = creation;
+ req->attrs = attributes;
+ req->mediatype = mediatype;
memcpy( server_data_ptr(req), filename, len );
SetLastError(0);
err = SERVER_CALL();
@@ -509,7 +511,8 @@
ret = FILE_CreateFile( full_name.long_name, access, sharing,
sa, creation, attributes, template,
- DRIVE_GetFlags(full_name.drive) & DRIVE_FAIL_READ_ONLY );
+ DRIVE_GetFlags(full_name.drive) & DRIVE_FAIL_READ_ONLY,
+ DRIVE_GetType(full_name.drive) );
done:
if (!ret) ret = INVALID_HANDLE_VALUE;
return ret;
@@ -977,7 +980,8 @@
hFileRet = FILE_CreateFile( full_name.long_name, access, sharing,
NULL, OPEN_EXISTING, 0, 0,
- DRIVE_GetFlags(full_name.drive) & DRIVE_FAIL_READ_ONLY );
+ DRIVE_GetFlags(full_name.drive) & DRIVE_FAIL_READ_ONLY,
+ DRIVE_GetType(full_name.drive) );
if (!hFileRet) goto not_found;
GetFileTime( hFileRet, NULL, NULL, &filetime );
Index: include/drive.h
===================================================================
RCS file: /cvsroot/winex/wine/include/drive.h,v
retrieving revision 1.1.1.3
retrieving revision 1.2
diff -u -r1.1.1.3 -r1.2
--- include/drive.h 2000/12/12 13:59:32 1.1.1.3
+++ include/drive.h 2001/10/19 16:40:52 1.2
@@ -32,6 +32,7 @@
extern const char * DRIVE_GetLabel( int drive );
extern DWORD DRIVE_GetSerialNumber( int drive );
extern int DRIVE_SetSerialNumber( int drive, DWORD serial );
+extern UINT DRIVE_GetType( int drive );
extern UINT DRIVE_GetFlags( int drive );
extern int DRIVE_Chdir( int drive, const char *path );
extern int DRIVE_Disable( int drive );
Index: include/file.h
===================================================================
RCS file: /cvsroot/winex/wine/include/file.h,v
retrieving revision 1.1.1.8
retrieving revision 1.2
diff -u -r1.1.1.8 -r1.2
--- include/file.h 2001/08/29 18:21:53 1.1.1.8
+++ include/file.h 2001/10/19 16:40:52 1.2
@@ -77,7 +77,8 @@
extern HFILE16 FILE_Dup2( HFILE16 hFile1, HFILE16 hFile2 );
extern HANDLE FILE_CreateFile( LPCSTR filename, DWORD access, DWORD sharing,
LPSECURITY_ATTRIBUTES sa, DWORD creation,
- DWORD attributes, HANDLE template, BOOL fail_read_only );
+ DWORD attributes, HANDLE template, BOOL fail_read_only,
+ UINT mediatype );
extern HANDLE FILE_CreateDevice( int client_id, DWORD access, LPSECURITY_ATTRIBUTES sa );
extern LONG WINAPI WIN16_hread(HFILE16,SEGPTR,LONG);
Index: misc/registry.c
===================================================================
RCS file: /cvsroot/winex/wine/misc/registry.c,v
retrieving revision 1.1.1.11
retrieving revision 1.2
diff -u -r1.1.1.11 -r1.2
--- misc/registry.c 2001/08/29 18:23:31 1.1.1.11
+++ misc/registry.c 2001/10/19 16:40:52 1.2
@@ -1184,7 +1184,7 @@
case WINE_REG_VER_2: {
HANDLE file;
if ((file = FILE_CreateFile( fn, GENERIC_READ, 0, NULL, OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL, 0, TRUE )))
+ FILE_ATTRIBUTE_NORMAL, 0, TRUE, 0 )))
{
SERVER_START_REQ( load_registry )
{
Index: server/console.c
===================================================================
RCS file: /cvsroot/winex/wine/server/console.c,v
retrieving revision 1.1.1.8
retrieving revision 1.2
diff -u -r1.1.1.8 -r1.2
--- server/console.c 2001/10/13 20:12:44 1.1.1.8
+++ server/console.c 2001/10/19 16:40:52 1.2
@@ -358,6 +358,7 @@
if (req)
{
req->type = FILE_TYPE_CHAR;
+ req->mediatype = 0;
req->attr = 0;
req->access_time = 0;
req->write_time = 0;
Index: server/device.c
===================================================================
RCS file: /cvsroot/winex/wine/server/device.c,v
retrieving revision 1.1.1.4
retrieving revision 1.2
diff -u -r1.1.1.4 -r1.2
--- server/device.c 2001/10/13 20:12:45 1.1.1.4
+++ server/device.c 2001/10/19 16:40:52 1.2
@@ -72,6 +72,7 @@
if (req)
{
req->type = FILE_TYPE_UNKNOWN;
+ req->mediatype = 0;
req->attr = dev->id; /* hack! */
req->access_time = 0;
req->write_time = 0;
Index: server/file.c
===================================================================
RCS file: /cvsroot/winex/wine/server/file.c,v
retrieving revision 1.1.1.9
retrieving revision 1.2
diff -u -r1.1.1.9 -r1.2
--- server/file.c 2001/10/13 20:12:45 1.1.1.9
+++ server/file.c 2001/10/19 16:40:52 1.2
@@ -38,6 +38,7 @@
unsigned int access; /* file access (GENERIC_READ/WRITE) */
unsigned int flags; /* flags (FILE_FLAG_*) */
unsigned int sharing; /* file sharing mode */
+ int mediatype; /* media type file is on */
};
#define NAME_HASH_SIZE 37
@@ -108,18 +109,20 @@
struct file *file;
if ((file = alloc_object( &file_ops, fd )))
{
- file->name = NULL;
- file->next = NULL;
- file->access = access;
- file->flags = attrs;
- file->sharing = sharing;
+ file->name = NULL;
+ file->next = NULL;
+ file->access = access;
+ file->flags = attrs;
+ file->sharing = sharing;
+ file->mediatype = 0;
}
return file;
}
static struct file *create_file( const char *nameptr, size_t len, unsigned int access,
- unsigned int sharing, int create, unsigned int attrs )
+ unsigned int sharing, int create, unsigned int attrs,
+ int mediatype )
{
struct file *file;
int hash, flags;
@@ -175,6 +178,7 @@
return NULL;
}
file->name = name;
+ file->mediatype = mediatype;
file->next = file_hash[hash];
file_hash[hash] = file;
return file;
@@ -281,6 +285,7 @@
if (S_ISDIR(st.st_mode)) req->attr = FILE_ATTRIBUTE_DIRECTORY;
else req->attr = FILE_ATTRIBUTE_ARCHIVE;
if (!(st.st_mode & S_IWUSR)) req->attr |= FILE_ATTRIBUTE_READONLY;
+ req->mediatype = file->mediatype;
req->access_time = st.st_atime;
req->write_time = st.st_mtime;
if (S_ISDIR(st.st_mode))
@@ -463,7 +468,7 @@
req->handle = 0;
if ((file = create_file( get_req_data(req), get_req_data_size(req), req->access,
- req->sharing, req->create, req->attrs )))
+ req->sharing, req->create, req->attrs, req->mediatype )))
{
req->handle = alloc_handle( current->process, file, req->access, req->inherit );
release_object( file );
Index: server/named_pipe.c
===================================================================
RCS file: /cvsroot/winex/wine/server/named_pipe.c,v
retrieving revision 1.1.1.3
retrieving revision 1.2
diff -u -r1.1.1.3 -r1.2
--- server/named_pipe.c 2001/10/14 15:25:46 1.1.1.3
+++ server/named_pipe.c 2001/10/19 16:40:52 1.2
@@ -173,6 +173,7 @@
if (req)
{
req->type = FILE_TYPE_PIPE;
+ req->mediatype = 0;
req->attr = 0;
req->access_time = 0;
req->write_time = 0;
Index: server/pipe.c
===================================================================
RCS file: /cvsroot/winex/wine/server/pipe.c,v
retrieving revision 1.1.1.6
retrieving revision 1.2
diff -u -r1.1.1.6 -r1.2
--- server/pipe.c 2001/10/13 20:12:46 1.1.1.6
+++ server/pipe.c 2001/10/19 16:40:52 1.2
@@ -129,6 +129,7 @@
if (req)
{
req->type = FILE_TYPE_PIPE;
+ req->mediatype = 0;
req->attr = 0;
req->access_time = 0;
req->write_time = 0;
Index: server/protocol.def
===================================================================
RCS file: /cvsroot/winex/wine/server/protocol.def,v
retrieving revision 1.1.1.4
retrieving revision 1.6
diff -u -r1.1.1.4 -r1.6
--- server/protocol.def 2001/10/13 20:12:52 1.1.1.4
+++ server/protocol.def 2001/10/19 16:40:52 1.6
@@ -505,6 +505,7 @@
unsigned int sharing; /* sharing flags */
int create; /* file create action */
unsigned int attrs; /* file attributes for creation */
+ int mediatype; /* media type file is on */
VARARG(filename,string); /* file name */
@REPLY
handle_t handle; /* handle to the file */
@@ -571,6 +572,7 @@
handle_t handle; /* handle to the file */
@REPLY
int type; /* file type */
+ int mediatype; /* media type file is on */
int attr; /* file attributes */
time_t access_time; /* last access time */
time_t write_time; /* last write time */
Index: server/serial.c
===================================================================
RCS file: /cvsroot/winex/wine/server/serial.c,v
retrieving revision 1.1.1.9
retrieving revision 1.2
diff -u -r1.1.1.9 -r1.2
--- server/serial.c 2001/10/13 20:12:49 1.1.1.9
+++ server/serial.c 2001/10/19 16:40:52 1.2
@@ -163,6 +163,7 @@
if (req)
{
req->type = FILE_TYPE_CHAR;
+ req->mediatype = 0;
req->attr = 0;
req->access_time = 0;
req->write_time = 0;
Index: server/sock.c
===================================================================
RCS file: /cvsroot/winex/wine/server/sock.c,v
retrieving revision 1.1.1.7
retrieving revision 1.2
diff -u -r1.1.1.7 -r1.2
--- server/sock.c 2001/10/14 15:25:45 1.1.1.7
+++ server/sock.c 2001/10/19 16:40:52 1.2
@@ -272,6 +272,7 @@
if (req)
{
req->type = FILE_TYPE_PIPE;
+ req->mediatype = 0;
req->attr = 0;
req->access_time = 0;
req->write_time = 0;
More information about the wine-patches
mailing list