OSDN Git Service

* path.cc (path_conv::check): Fill in fileattr for /dev, defaulting to
authorcgf <cgf>
Wed, 24 Aug 2005 14:17:53 +0000 (14:17 +0000)
committercgf <cgf>
Wed, 24 Aug 2005 14:17:53 +0000 (14:17 +0000)
directory if /dev doesn't actually exist.
(win32_device_name): Don't consider FH_DEV to be a device since it's really a
directory which should go through mount processing.

winsup/cygwin/ChangeLog
winsup/cygwin/path.cc

index 30012a0..c97cb61 100644 (file)
@@ -1,5 +1,12 @@
 2005-08-24  Christopher Faylor  <cgf@timesys.com>
 
+       * path.cc (path_conv::check): Fill in fileattr for /dev, defaulting to
+       directory if /dev doesn't actually exist.
+       (win32_device_name): Don't consider FH_DEV to be a device since it's
+       really a directory which should go through mount processing.
+
+2005-08-24  Christopher Faylor  <cgf@timesys.com>
+
        * cygheap.h (cygheap_types): Add HEAP_COMMUNE.
        * fhandler_proc.cc: Use cygheap rather than user heap for allocation of
        filebuf throughout.
index 787251d..7f169fd 100644 (file)
@@ -641,9 +641,13 @@ path_conv::check (const char *src, unsigned opt,
            }
          else if (dev == FH_DEV)
            {
-             fileattr = FILE_ATTRIBUTE_DIRECTORY;
              dev.devn = FH_FS;
-             goto out;
+             fileattr = GetFileAttributes (this->path);
+             if (!component && fileattr == INVALID_FILE_ATTRIBUTES)
+               {
+                 fileattr = FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_READONLY;
+                 goto out;
+               }
            }
          else if (isvirtual_dev (dev.devn))
            {
@@ -1053,7 +1057,7 @@ static bool
 win32_device_name (const char *src_path, char *win32_path, device& dev)
 {
   dev.parse (src_path);
-  if (dev.devn == FH_FS)
+  if (dev == FH_FS || dev == FH_DEV)
     return false;
   strcpy (win32_path, dev.native);
   return true;