Fix boolean_t/B_FALSE/B_TRUE compilation issue
[kopensolaris-gnu/glibc.git] / hurd / hurdlookup.c
index e8ccc51..8270132 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1992,93,94,95,96,97,99,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1992,1993,1994,1995,1996,1997,1999,2001,2004,2006
+       Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -63,11 +64,14 @@ __hurd_file_name_lookup (error_t (*use_init_port)
   if (! lookup)
     lookup = __dir_lookup;
 
+  if (file_name[0] == '\0')
+    return ENOENT;
+
   startport = (file_name[0] == '/') ? INIT_PORT_CRDIR : INIT_PORT_CWDIR;
   while (file_name[0] == '/')
     file_name++;
 
-  if (flags & O_NOFOLLOW)      /* See comments below about O_NOFOLLOW.  */
+  if (flags & O_NOFOLLOW)      /* See lookup-retry.c about O_NOFOLLOW.  */
     flags |= O_NOTRANS;
 
   if (flags & O_DIRECTORY)
@@ -138,6 +142,8 @@ __hurd_file_name_split (error_t (*use_init_port)
                                     dirname, 0, 0, dir);
        }
     }
+  else if (file_name[0] == '\0')
+    return ENOENT;
   else
     {
       /* "foobar" => cwdir + "foobar".  */
@@ -178,19 +184,7 @@ __hurd_directory_name_split (error_t (*use_init_port)
        --lastslash;
 
       /* Find the last one earlier in the string, before the trailing ones.  */
-#if __GLIBC__ > 2 || __GLIBC_MINOR__ >= 2
       lastslash = __memrchr (file_name, '/', lastslash - file_name);
-#else
-      /* Keep backing up, looking for a slash.  */
-      do
-       if (lastslash == file_name)
-         {
-           /* Hit the start with no slash.  */
-           lastslash = NULL;
-           break;
-         }
-      while (*lastslash-- != '/');
-#endif
     }
 
   if (lastslash != NULL)
@@ -213,6 +207,8 @@ __hurd_directory_name_split (error_t (*use_init_port)
                                     dirname, 0, 0, dir);
        }
     }
+  else if (file_name[0] == '\0')
+    return ENOENT;
   else
     {
       /* "foobar" => cwdir + "foobar".  */