]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix accessing files on networked drives on MS-Windows
authorEli Zaretskii <eliz@gnu.org>
Sat, 23 May 2020 05:50:22 +0000 (08:50 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 23 May 2020 05:50:22 +0000 (08:50 +0300)
* src/w32.c (acl_get_file): Set errno to ENOTSUP if
get_file_security returns ERROR_NOT_SUPPORTED.  (Bug#41463)

src/w32.c

index 62c53fd77115ff73e9fc45f6d12c49c7e1f2ae64..78e75f0937eb6cc32247ca83b6ed94b60c6e522a 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -6398,7 +6398,15 @@ acl_get_file (const char *fname, acl_type_t type)
              if (!get_file_security (fname, si, psd, sd_len, &sd_len))
                {
                  xfree (psd);
-                 errno = EIO;
+                 err = GetLastError ();
+                 if (err == ERROR_NOT_SUPPORTED)
+                   errno = ENOTSUP;
+                 else if (err == ERROR_FILE_NOT_FOUND
+                          || err == ERROR_PATH_NOT_FOUND
+                          || err == ERROR_INVALID_NAME)
+                   errno = ENOENT;
+                 else
+                   errno = EIO;
                  psd = NULL;
                }
            }
@@ -6409,6 +6417,8 @@ acl_get_file (const char *fname, acl_type_t type)
                      be encoded in the current ANSI codepage. */
                   || err == ERROR_INVALID_NAME)
            errno = ENOENT;
+         else if (err == ERROR_NOT_SUPPORTED)
+           errno = ENOTSUP;
          else
            errno = EIO;
        }