Sync from coreutils.
[gnulib.git] / lib / dirname.c
index 9b60076..f1930c8 100644 (file)
@@ -1,6 +1,6 @@
-/* dirname.c -- return all but the last element in a path
+/* dirname.c -- return all but the last element in a file name
 
-   Copyright (C) 1990, 1998, 2000, 2001, 2003, 2004 Free Software
+   Copyright (C) 1990, 1998, 2000, 2001, 2003, 2004, 2005 Free Software
    Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
 #include <string.h>
 #include "xalloc.h"
 
-/* Return the length of `dirname (PATH)', or zero if PATH is
+/* Return the length of `dirname (FILE)', or zero if FILE is
    in the working directory.  Works properly even if
    there are trailing slashes (by effectively ignoring them).  */
 size_t
-dir_len (char const *path)
+dir_len (char const *file)
 {
-  size_t prefix_length = FILE_SYSTEM_PREFIX_LEN (path);
+  size_t prefix_length = FILE_SYSTEM_PREFIX_LEN (file);
   size_t length;
 
   /* Strip the basename and any redundant slashes before it.  */
-  for (length = base_name (path) - path;  prefix_length < length;  length--)
-    if (! ISSLASH (path[length - 1]))
+  for (length = base_name (file) - file;  prefix_length < length;  length--)
+    if (! ISSLASH (file[length - 1]))
       return length;
 
   /* But don't strip the only slash from "/".  */
-  return prefix_length + ISSLASH (path[prefix_length]);
+  return prefix_length + ISSLASH (file[prefix_length]);
 }
 
-/* Return the leading directories part of PATH,
+/* Return the leading directories part of FILE,
    allocated with xmalloc.
    Works properly even if there are trailing slashes
    (by effectively ignoring them).  */
 
 char *
-dir_name (char const *path)
+dir_name (char const *file)
 {
-  size_t length = dir_len (path);
-  bool append_dot = (length == FILE_SYSTEM_PREFIX_LEN (path));
-  char *newpath = xmalloc (length + append_dot + 1);
-  memcpy (newpath, path, length);
+  size_t length = dir_len (file);
+  bool append_dot = (length == FILE_SYSTEM_PREFIX_LEN (file));
+  char *dir = xmalloc (length + append_dot + 1);
+  memcpy (dir, file, length);
   if (append_dot)
-    newpath[length++] = '.';
-  newpath[length] = 0;
-  return newpath;
+    dir[length++] = '.';
+  dir[length] = 0;
+  return dir;
 }
 
 #ifdef TEST_DIRNAME
@@ -108,13 +108,13 @@ main (int argc, char *argv[])
   buff[MAX_BUFF_LEN] = 0;
   while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0])
     {
-      char path[MAX_BUFF_LEN];
+      char file[MAX_BUFF_LEN];
       char expected_result[MAX_BUFF_LEN];
       char const *result;
-      sscanf (buff, "%s %s", path, expected_result);
-      result = dir_name (path);
+      sscanf (buff, "%s %s", file, expected_result);
+      result = dir_name (file);
       if (strcmp (result, expected_result))
-       printf ("%s: got %s, expected %s\n", path, result, expected_result);
+       printf ("%s: got %s, expected %s\n", file, result, expected_result);
     }
   return 0;
 }