drive.c implement option to change fsname in config file

Tony Lambregts tony_lambregts at telusplanet.net
Tue Feb 25 11:19:46 CST 2003


This is as far as I've got with this for now. It works. If nothing else 
it is a backup of the work I've done so far, and gives you something to 
comment on. I toyed with the idea of having it validate the names 
against a table but that seems (to me) too restrictive. Anyway...

Change Log: Implement option to change FSname in config file.

Files changed files/drive.c
              documentation/samples/config
              documentation/configuring.sgml

-- 

Tony Lambregts

-------------- next part --------------
Index: files/drive.c
===================================================================
RCS file: /home/wine/wine/files/drive.c,v
retrieving revision 1.84
diff -u -u -r1.84 drive.c
--- files/drive.c	24 Jan 2003 00:54:58 -0000	1.84
+++ files/drive.c	25 Feb 2003 17:07:17 -0000
@@ -86,6 +86,7 @@
     DWORD     serial_conf;    /* drive serial number as cfg'd in wine config */
     UINT      type;      /* drive type */
     UINT      flags;     /* drive flags */
+    WCHAR     FSname[12];     /* file system name */
     UINT      codepage;  /* drive code page */
     dev_t     dev;       /* unix device number */
     ino_t     ino;       /* unix inode number */
@@ -201,6 +202,9 @@
     static const WCHAR FilesystemW[] = {'F','i','l','e','s','y','s','t','e','m',0};
     static const WCHAR win95W[] = {'w','i','n','9','5',0};
     static const WCHAR DeviceW[] = {'D','e','v','i','c','e',0};
+    static const WCHAR FSnameW[] = {'F','S','n','a','m','e',0};
+    static const WCHAR def_FSnameW[] = {'F','A','T',0};
+     
     static const WCHAR ReadVolInfoW[] = {'R','e','a','d','V','o','l','I','n','f','o',0};
     static const WCHAR FailReadOnlyW[] = {'F','a','i','l','R','e','a','d','O','n','l','y',0};
     static const WCHAR driveC_labelW[] = {'D','r','i','v','e',' ','C',' ',' ',' ',' ',0};
@@ -276,6 +280,9 @@
             /* Get the filesystem type */
             PROFILE_GetWineIniString( name, FilesystemW, win95W, buffer, 80 );
             drive->flags = DRIVE_GetFSFlags( name, buffer );
+	    
+            /* Get the filesystem name */
+            PROFILE_GetWineIniString( name, FSnameW, def_FSnameW, drive->FSname, 12 );	    
 
             /* Get the device */
             PROFILE_GetWineIniString( name, DeviceW, empty_strW, buffer, 80 );
@@ -1973,8 +1980,8 @@
         }
 	else
         {
-            static const WCHAR fatW[] = {'F','A','T',0};
-            strncpyW( fsname, fatW, fsname_len );
+         /*   static const WCHAR fatW[] = {'F','A','T',0}; */
+            strncpyW( fsname, DOSDrives[drive].FSname, fsname_len );
         }
         fsname[fsname_len - 1] = 0; /* ensure 0 termination */
     }
Index: documentation/samples/config
===================================================================
RCS file: /home/wine/wine/documentation/samples/config,v
retrieving revision 1.39
diff -u -u -r1.39 config
--- documentation/samples/config	12 Feb 2003 01:12:18 -0000	1.39
+++ documentation/samples/config	25 Feb 2003 17:07:18 -0000
@@ -21,6 +21,7 @@
 ;;   - "msdos" for FAT16 (ugly, upgrading to VFAT driver strongly recommended)
 ;;   DON'T use "unix" unless you intend to port programs using Winelib !
 ;; "Device"="/dev/xx" (only if you want to allow raw device access)
+;; "FSname"="xxx" Override for file system name (default="FAT") up to 11 chars
 ;;
 [Drive A]
 "Path" = "/mnt/fd0"
Index: documentation/configuring.sgml
===================================================================
RCS file: /home/wine/wine/documentation/configuring.sgml,v
retrieving revision 1.22
diff -u -u -r1.22 configuring.sgml
--- documentation/configuring.sgml	24 Dec 2002 00:56:33 -0000	1.22
+++ documentation/configuring.sgml	25 Feb 2003 17:07:20 -0000
@@ -290,6 +290,20 @@
             </varlistentry>
           </variablelist>
 
+          <para>
+            <programlisting>"FSname" = "xxx"</programlisting>
+            This Setting overrides the default fsname. If this value is
+            not set wine defaults to "FAT". Leaving this blank should 
+            be OK in most cases. The maximum size for FSname is 11 
+            characters. Some other common fsnames are FAT32 and NTFS.
+          </para>
+          <note>
+            <para>
+              CD-ROM drives are not affected by this setting, they 
+              always return "CDFS"
+            </para>
+          </note>
+
           <programlisting>"Device" = "/dev/xx"</programlisting>
           <para>
 	    Needed for raw device access and label and serial number reading.


More information about the wine-patches mailing list