]> Dogcows Code - chaz/tar/blobdiff - src/xheader.c
(sparse_map_decoder): Fix misleading diagnostic.
[chaz/tar] / src / xheader.c
index 8f727a9a5eb1c24f7179aad6e935b9180df5eec7..8399df81fd41faa1a55d8961f564cd231c561185 100644 (file)
@@ -235,6 +235,7 @@ xheader_format_name (struct tar_stat_info *st, const char *fmt, size_t n)
   size_t len = strlen (fmt);
   char *q;
   const char *p;
+  char *dirp = NULL;
   char *dir = NULL;
   char *base = NULL;
   char pidbuf[UINTMAX_STRSIZE_BOUND];
@@ -253,8 +254,9 @@ xheader_format_name (struct tar_stat_info *st, const char *fmt, size_t n)
        case 'd':
          if (st)
            {
-             dir = safer_name_suffix (dir_name (st->orig_file_name),
-                                      false, absolute_names_option);
+             if (!dirp)
+               dirp = dir_name (st->orig_file_name);
+             dir = safer_name_suffix (dirp, false, absolute_names_option);
              len += strlen (dir) - 2;
            }
          break;
@@ -328,6 +330,8 @@ xheader_format_name (struct tar_stat_info *st, const char *fmt, size_t n)
        *q++ = *p++;
     }
 
+  free (dirp);
+  
   /* Do not allow it to end in a slash */
   while (q > buf && ISSLASH (q[-1]))
     q--;
@@ -1245,7 +1249,7 @@ sparse_map_decoder (struct tar_stat_info *st, char const *arg,
          else
            {
              ERROR ((0, 0, _("Malformed extended header: excess %s=%s"),
-                     "GNU.sparse.numbytes", arg));
+                     keyword, arg));
              return;
            }
        }
This page took 0.020977 seconds and 4 git commands to generate.