]> Dogcows Code - chaz/tar/blobdiff - src/misc.c
Use relative addressing in deferred unlinks.
[chaz/tar] / src / misc.c
index bd396a307d2e37b0091262cd3e73092f54ef1899..343d5f9ffdf3bf9e84b51c2295e4e92562ba2e6a 100644 (file)
@@ -229,11 +229,12 @@ zap_slashes (char *name)
 }
 
 /* Normalize FILE_NAME by removing redundant slashes and "."
-   components, including redundant trailing slashes.  Leave ".."
-   alone, as it may be significant in the presence of symlinks and on
-   platforms where "/.." != "/".  Destructive version: modifies its
-   argument. */
-static void
+   components, including redundant trailing slashes.
+   Leave ".." alone, as it may be significant in the presence 
+   of symlinks and on platforms where "/.." != "/".
+
+   Destructive version: modifies its argument. */
+void
 normalize_filename_x (char *file_name)
 {
   char *name = file_name + FILE_SYSTEM_PREFIX_LEN (file_name);
@@ -267,8 +268,9 @@ normalize_filename_x (char *file_name)
 }
 
 /* Normalize NAME by removing redundant slashes and "." components,
-   including redundant trailing slashes.  Return a normalized
-   newly-allocated copy.  */
+   including redundant trailing slashes.
+
+   Return a normalized newly-allocated copy.  */
 
 char *
 normalize_filename (const char *name)
@@ -978,6 +980,12 @@ chdir_do (int i)
     }
 }
 \f
+const char *
+tar_dirname (void)
+{
+  return wd[chdir_current].name;
+}
+
 const char *
 tar_getcwd (void)
 {
@@ -993,8 +1001,10 @@ tar_getcwd (void)
   if (0 == chdir_current || !wd[chdir_current].cwd)
     {
       if (IS_ABSOLUTE_FILE_NAME (wd[chdir_current].name))
-       return wd[chdir_current].name;
-      
+       {
+         wd[chdir_current].cwd = xstrdup (wd[chdir_current].name);
+         return wd[chdir_current].cwd;
+       }
       if (!wd[0].cwd)
        wd[0].cwd = cwd;
 
This page took 0.018875 seconds and 4 git commands to generate.