diff options
| author | Eli Zaretskii | 2008-08-15 13:54:14 +0000 |
|---|---|---|
| committer | Eli Zaretskii | 2008-08-15 13:54:14 +0000 |
| commit | a644b2e42cf86022603ecfa15c59a637f311a95d (patch) | |
| tree | 599191c90f533e9b63e66860fba18829babbc805 /src | |
| parent | b8526f6ea42d5c51070f4ddddcecc44e15022995 (diff) | |
| download | emacs-a644b2e42cf86022603ecfa15c59a637f311a95d.tar.gz emacs-a644b2e42cf86022603ecfa15c59a637f311a95d.zip | |
(stat): Only root directory passed to GetDriveType.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 3 | ||||
| -rw-r--r-- | src/w32.c | 16 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 1576266855e..2af33df079b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -3,6 +3,9 @@ | |||
| 3 | * w32.c (_MEMORY_STATUS_EX, MEMORY_STATUS_EX, LPMEMORY_STATUS_EX): | 3 | * w32.c (_MEMORY_STATUS_EX, MEMORY_STATUS_EX, LPMEMORY_STATUS_EX): |
| 4 | Rename from _MEMORYSTATUSEX, MEMORYSTATUSEX, LPMEMORYSTATUSEX. | 4 | Rename from _MEMORYSTATUSEX, MEMORYSTATUSEX, LPMEMORYSTATUSEX. |
| 5 | All users changed. | 5 | All users changed. |
| 6 | (stat): Only root directory passed to GetDriveType. Allow RAM | ||
| 7 | disk as well as local fixed disk when w32-get-true-file-attributes | ||
| 8 | is set to `local'. | ||
| 6 | 9 | ||
| 7 | 2008-08-14 Lawrence Mitchell <wence@gmx.li> | 10 | 2008-08-14 Lawrence Mitchell <wence@gmx.li> |
| 8 | 11 | ||
| @@ -2879,6 +2879,8 @@ int | |||
| 2879 | stat (const char * path, struct stat * buf) | 2879 | stat (const char * path, struct stat * buf) |
| 2880 | { | 2880 | { |
| 2881 | char *name, *r; | 2881 | char *name, *r; |
| 2882 | char drive_root[4]; | ||
| 2883 | UINT devtype; | ||
| 2882 | WIN32_FIND_DATA wfd; | 2884 | WIN32_FIND_DATA wfd; |
| 2883 | HANDLE fh; | 2885 | HANDLE fh; |
| 2884 | unsigned __int64 fake_inode; | 2886 | unsigned __int64 fake_inode; |
| @@ -2983,9 +2985,19 @@ stat (const char * path, struct stat * buf) | |||
| 2983 | } | 2985 | } |
| 2984 | } | 2986 | } |
| 2985 | 2987 | ||
| 2988 | /* GetDriveType needs the root directory of NAME's drive. */ | ||
| 2989 | if (!(strlen (name) >= 2 && IS_DEVICE_SEP (name[1]))) | ||
| 2990 | devtype = GetDriveType (NULL); /* use root of current diectory */ | ||
| 2991 | else | ||
| 2992 | { | ||
| 2993 | strncpy (drive_root, name, 3); | ||
| 2994 | drive_root[3] = '\0'; | ||
| 2995 | devtype = GetDriveType (drive_root); | ||
| 2996 | } | ||
| 2997 | |||
| 2986 | if (!(NILP (Vw32_get_true_file_attributes) | 2998 | if (!(NILP (Vw32_get_true_file_attributes) |
| 2987 | || (EQ (Vw32_get_true_file_attributes, Qlocal) && | 2999 | || (EQ (Vw32_get_true_file_attributes, Qlocal) |
| 2988 | GetDriveType (name) != DRIVE_FIXED)) | 3000 | && devtype != DRIVE_FIXED && devtype != DRIVE_RAMDISK)) |
| 2989 | /* No access rights required to get info. */ | 3001 | /* No access rights required to get info. */ |
| 2990 | && (fh = CreateFile (name, 0, 0, NULL, OPEN_EXISTING, | 3002 | && (fh = CreateFile (name, 0, 0, NULL, OPEN_EXISTING, |
| 2991 | FILE_FLAG_BACKUP_SEMANTICS, NULL)) | 3003 | FILE_FLAG_BACKUP_SEMANTICS, NULL)) |