* mount.h (fs_info::fsn): New member.
(fs_info::clear): Clear fsn. (fs_info::fsname): New read accessor for fsn. * mount.cc (fs_info::update): Fill in fsn member with lowercased filesystem name if filesystem is not well-known. Fall back to "unknown" if filesystem name is missing. (fillout_mntent): Print filesystem name retrieved in fs_info::update rather than static string "unknown".
This commit is contained in:
		| @@ -1,3 +1,14 @@ | |||||||
|  | 2009-07-23  Corinna Vinschen  <corinna@vinschen.de> | ||||||
|  |  | ||||||
|  | 	* mount.h (fs_info::fsn): New member. | ||||||
|  | 	(fs_info::clear): Clear fsn. | ||||||
|  | 	(fs_info::fsname): New read accessor for fsn. | ||||||
|  | 	* mount.cc (fs_info::update): Fill in fsn member with lowercased | ||||||
|  | 	filesystem name if filesystem is not well-known.  Fall back to | ||||||
|  | 	"unknown" if filesystem name is missing. | ||||||
|  | 	(fillout_mntent): Print filesystem name retrieved in fs_info::update | ||||||
|  | 	rather than static string "unknown". | ||||||
|  |  | ||||||
| 2009-07-23  Corinna Vinschen  <corinna@vinschen.de> | 2009-07-23  Corinna Vinschen  <corinna@vinschen.de> | ||||||
|  |  | ||||||
| 	* mount.cc (fs_info::update): Revert to open filesystem with access set | 	* mount.cc (fs_info::update): Revert to open filesystem with access set | ||||||
|   | |||||||
| @@ -276,7 +276,14 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) | |||||||
|       if (is_udf () && wincap.has_broken_udf ()) |       if (is_udf () && wincap.has_broken_udf ()) | ||||||
| 	caseinsensitive (true); | 	caseinsensitive (true); | ||||||
|     } |     } | ||||||
|  |   if (!got_fs ()) | ||||||
|  |     { | ||||||
|  |       /* The filesystem name is only used in fillout_mntent and only if | ||||||
|  |          the filesystem isn't one of the well-known filesystems anyway. */ | ||||||
|  |       sys_wcstombs (fsn, sizeof fsn, ffai_buf.ffai.FileSystemName, | ||||||
|  | 		    ffai_buf.ffai.FileSystemNameLength / sizeof (WCHAR)); | ||||||
|  |       strlwr (fsn); | ||||||
|  |     } | ||||||
|   has_acls (flags () & FS_PERSISTENT_ACLS); |   has_acls (flags () & FS_PERSISTENT_ACLS); | ||||||
|   /* Netapp inodes numbers are fly-by-night. */ |   /* Netapp inodes numbers are fly-by-night. */ | ||||||
|   hasgood_inode ((has_acls () && !is_netapp ()) || is_nfs ()); |   hasgood_inode ((has_acls () && !is_netapp ()) || is_nfs ()); | ||||||
| @@ -1421,7 +1428,7 @@ fillout_mntent (const char *native_path, const char *posix_path, unsigned flags) | |||||||
|   else if (mntinfo.is_sunwnfs ()) |   else if (mntinfo.is_sunwnfs ()) | ||||||
|     strcpy (_my_tls.locals.mnt_type, (char *) "sunwnfs"); |     strcpy (_my_tls.locals.mnt_type, (char *) "sunwnfs"); | ||||||
|   else |   else | ||||||
|     strcpy (_my_tls.locals.mnt_type, (char *) "unknown"); |     strcpy (_my_tls.locals.mnt_type, mntinfo.fsname ()); | ||||||
|  |  | ||||||
|   ret.mnt_type = _my_tls.locals.mnt_type; |   ret.mnt_type = _my_tls.locals.mnt_type; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -43,10 +43,16 @@ class fs_info | |||||||
|     }; |     }; | ||||||
|   } status; |   } status; | ||||||
|   ULONG sernum; |   ULONG sernum; | ||||||
|  |   char fsn[80]; | ||||||
|   unsigned long got_fs () { return status.fs_flags; } |   unsigned long got_fs () { return status.fs_flags; } | ||||||
|  |  | ||||||
|  public: |  public: | ||||||
|   void clear () { memset (&status, 0 , sizeof status); sernum = 0UL; } |   void clear () | ||||||
|  |   { | ||||||
|  |     memset (&status, 0 , sizeof status); | ||||||
|  |     sernum = 0UL;  | ||||||
|  |     fsn[0] = '\0'; | ||||||
|  |   } | ||||||
|   fs_info () { clear (); } |   fs_info () { clear (); } | ||||||
|  |  | ||||||
|   IMPLEMENT_STATUS_FLAG (ULONG, flags) |   IMPLEMENT_STATUS_FLAG (ULONG, flags) | ||||||
| @@ -71,6 +77,7 @@ class fs_info | |||||||
|  |  | ||||||
|   int has_buggy_open () const {return is_sunwnfs ();} |   int has_buggy_open () const {return is_sunwnfs ();} | ||||||
|   int has_buggy_fileid_dirinfo () const {return is_unixfs ();} |   int has_buggy_fileid_dirinfo () const {return is_unixfs ();} | ||||||
|  |   const char *fsname () const { return fsn[0] ? fsn : "unknown"; } | ||||||
|  |  | ||||||
|   bool update (PUNICODE_STRING, HANDLE) __attribute__ ((regparm (3))); |   bool update (PUNICODE_STRING, HANDLE) __attribute__ ((regparm (3))); | ||||||
| }; | }; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user