* 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:
Corinna Vinschen 2009-07-23 11:46:06 +00:00
parent 8b1e0815ab
commit a6131454a5
3 changed files with 28 additions and 3 deletions

View File

@ -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>
* mount.cc (fs_info::update): Revert to open filesystem with access set

View File

@ -276,7 +276,14 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol)
if (is_udf () && wincap.has_broken_udf ())
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);
/* Netapp inodes numbers are fly-by-night. */
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 ())
strcpy (_my_tls.locals.mnt_type, (char *) "sunwnfs");
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;

View File

@ -43,10 +43,16 @@ class fs_info
};
} status;
ULONG sernum;
char fsn[80];
unsigned long got_fs () { return status.fs_flags; }
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 (); }
IMPLEMENT_STATUS_FLAG (ULONG, flags)
@ -71,6 +77,7 @@ class fs_info
int has_buggy_open () const {return is_sunwnfs ();}
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)));
};