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