ntdll: Fixed file system name comparison on *BSD.
This commit is contained in:
parent
0c9c00cf2b
commit
8765a0da83
|
@ -1736,24 +1736,21 @@ NTSTATUS WINAPI NtQueryAttributesFile( const OBJECT_ATTRIBUTES *attr, FILE_BASIC
|
|||
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__APPLE__)
|
||||
/* helper for FILE_GetDeviceInfo to hide some platform differences in fstatfs */
|
||||
static inline void get_device_info_fstatfs( FILE_FS_DEVICE_INFORMATION *info, const char *fstypename,
|
||||
size_t fstypesize, unsigned int flags )
|
||||
unsigned int flags )
|
||||
{
|
||||
if (!strncmp("cd9660", fstypename, fstypesize) ||
|
||||
!strncmp("udf", fstypename, fstypesize))
|
||||
if (!strcmp("cd9660", fstypename) || !strcmp("udf", fstypename))
|
||||
{
|
||||
info->DeviceType = FILE_DEVICE_CD_ROM_FILE_SYSTEM;
|
||||
/* Don't assume read-only, let the mount options set it below */
|
||||
info->Characteristics |= FILE_REMOVABLE_MEDIA;
|
||||
}
|
||||
else if (!strncmp("nfs", fstypename, fstypesize) ||
|
||||
!strncmp("nwfs", fstypename, fstypesize) ||
|
||||
!strncmp("smbfs", fstypename, fstypesize) ||
|
||||
!strncmp("afpfs", fstypename, fstypesize))
|
||||
else if (!strcmp("nfs", fstypename) || !strcmp("nwfs", fstypename) ||
|
||||
!strcmp("smbfs", fstypename) || !strcmp("afpfs", fstypename))
|
||||
{
|
||||
info->DeviceType = FILE_DEVICE_NETWORK_FILE_SYSTEM;
|
||||
info->Characteristics |= FILE_REMOTE_DEVICE;
|
||||
}
|
||||
else if (!strncmp("procfs", fstypename, fstypesize))
|
||||
else if (!strcmp("procfs", fstypename))
|
||||
info->DeviceType = FILE_DEVICE_VIRTUAL_DISK;
|
||||
else
|
||||
info->DeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
|
||||
|
@ -1849,16 +1846,14 @@ static NTSTATUS get_device_info( int fd, FILE_FS_DEVICE_INFORMATION *info )
|
|||
if (fstatfs( fd, &stfs ) < 0)
|
||||
info->DeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
|
||||
else
|
||||
get_device_info_fstatfs( info, stfs.f_fstypename,
|
||||
sizeof(stfs.f_fstypename), stfs.f_flags );
|
||||
get_device_info_fstatfs( info, stfs.f_fstypename, stfs.f_flags );
|
||||
#elif defined(__NetBSD__)
|
||||
struct statvfs stfs;
|
||||
|
||||
if (fstatvfs( fd, &stfs) < 0)
|
||||
info->DeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
|
||||
else
|
||||
get_device_info_fstatfs( info, stfs.f_fstypename,
|
||||
sizeof(stfs.f_fstypename), stfs.f_flag );
|
||||
get_device_info_fstatfs( info, stfs.f_fstypename, stfs.f_flag );
|
||||
#elif defined(sun)
|
||||
/* Use dkio to work out device types */
|
||||
{
|
||||
|
|
|
@ -802,14 +802,12 @@ static int is_device_removable( dev_t dev, int unix_fd )
|
|||
struct statfs stfs;
|
||||
|
||||
if (fstatfs( unix_fd, &stfs ) == -1) return 0;
|
||||
return (!strncmp("cd9660", stfs.f_fstypename, sizeof(stfs.f_fstypename)) ||
|
||||
!strncmp("udf", stfs.f_fstypename, sizeof(stfs.f_fstypename)));
|
||||
return (!strcmp("cd9660", stfs.f_fstypename) || !strcmp("udf", stfs.f_fstypename));
|
||||
#elif defined(__NetBSD__)
|
||||
struct statvfs stfs;
|
||||
|
||||
if (fstatvfs( unix_fd, &stfs ) == -1) return 0;
|
||||
return (!strncmp("cd9660", stfs.f_fstypename, sizeof(stfs.f_fstypename)) ||
|
||||
!strncmp("udf", stfs.f_fstypename, sizeof(stfs.f_fstypename)));
|
||||
return (!strcmp("cd9660", stfs.f_fstypename) || !strcmp("udf", stfs.f_fstypename));
|
||||
#elif defined(sun)
|
||||
# include <sys/dkio.h>
|
||||
# include <sys/vtoc.h>
|
||||
|
|
Loading…
Reference in New Issue