]> sourceware.org Git - newlib-cygwin.git/commitdiff
* fhandler.cc (fhandler_base::fpathconf): Fix _PC_NAME_MAX and
authorCorinna Vinschen <corinna@vinschen.de>
Sat, 16 Feb 2008 09:43:19 +0000 (09:43 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Sat, 16 Feb 2008 09:43:19 +0000 (09:43 +0000)
_PC_PATH_MAX cases.

winsup/cygwin/ChangeLog
winsup/cygwin/fhandler.cc

index 948edce87b2385316496e4180bf11061c229df89..663f06d9a136594569d0d8deaae446bb4755306c 100644 (file)
@@ -1,3 +1,8 @@
+2008-02-16  Corinna Vinschen  <corinna@vinschen.de>
+
+       * fhandler.cc (fhandler_base::fpathconf): Fix _PC_NAME_MAX and
+       _PC_PATH_MAX cases.
+
 2008-02-15  Corinna Vinschen  <corinna@vinschen.de>
 
        * include/sys/cygwin.h (__INT_MAX_PATH): Remove.
index 75528d35e3734feea3f6dbcc0da4b88aa4dc8d59..f47805bde42fcfe54e22509ac686beadfbddfd21 100644 (file)
@@ -1541,6 +1541,8 @@ fhandler_base::fsync ()
 int
 fhandler_base::fpathconf (int v)
 {
+  int ret;
+
   switch (v)
     {
     case _PC_LINK_MAX:
@@ -1558,10 +1560,16 @@ fhandler_base::fpathconf (int v)
       break;
     case _PC_NAME_MAX:
       /* NAME_MAX is without trailing \0 */
-      return pc.isdir () ? PATH_MAX - strlen (get_name ()) - 2 : NAME_MAX;
+      if (!pc.isdir ())
+        return NAME_MAX;
+      ret = NT_MAX_PATH - strlen (get_name ()) - 2;
+      return ret < 0 ? 0 : ret > NAME_MAX ? NAME_MAX : ret;
     case _PC_PATH_MAX:
       /* PATH_MAX is with trailing \0 */
-      return pc.isdir () ? PATH_MAX - strlen (get_name ()) - 1 : PATH_MAX;
+      if (!pc.isdir ())
+       return PATH_MAX;
+      ret = NT_MAX_PATH - strlen (get_name ()) - 1;
+      return ret < 0 ? 0 : ret > PATH_MAX ? PATH_MAX : ret;
     case _PC_PIPE_BUF:
       if (pc.isdir ()
          || get_device () == FH_FIFO || get_device () == FH_PIPE
This page took 0.035194 seconds and 5 git commands to generate.