summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/cmd/tar.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/sys/src/cmd/tar.c b/sys/src/cmd/tar.c
index dc3d3536d..af2b5625a 100644
--- a/sys/src/cmd/tar.c
+++ b/sys/src/cmd/tar.c
@@ -1138,7 +1138,7 @@ wrmeta(int fd, Hdr *hp, long mtime, int mode) /* update metadata */
/*
* copy a file from the archive into the filesystem.
- * fname is result of name(), so has two extra bytes at beginning.
+ * fname is result of getname(), so has two extra bytes at beginning.
*/
static void
extract1(int ar, Hdr *hp, char *fname)
@@ -1214,7 +1214,7 @@ skip(int ar, Hdr *hp, char *fname)
static char*
getname(int ar, Hdr *hp)
{
- static char namebuf[Maxlongname+1], *nextname = nil;
+ static char buf[2+Maxlongname+1], *namebuf = buf+2, *nextname = nil;
ulong blksleft, blksread;
char *fname, *p;
int n;
@@ -1243,10 +1243,6 @@ getname(int ar, Hdr *hp)
*p = '\0';
fname = nil;
nextname = namebuf;
- } else {
- namebuf[Maxlongname] = '\0';
- strncpy(namebuf, fname, Maxlongname);
- fname = namebuf;
}
return fname;
}