/*
* Mini tar implementation for busybox
*
- * Note, that as of BusyBox 0.43 tar has been completely rewritten from the
- * ground up. It still has remnents of the old code lying about, but it pretty
- * different (i.e. cleaner, less global variables, etc)
+ * Note, that as of BusyBox-0.43, tar has been completely rewritten from the
+ * ground up. It still has remnents of the old code lying about, but it is
+ * very different now (i.e. cleaner, less global variables, etc)
*
* Copyright (C) 2000 by Lineo, inc.
* Written by Erik Andersen <andersen@lineo.com>, <andersee@debian.org>
chksum = getOctal(rawHeader->chksum, sizeof(rawHeader->chksum));
header->type = rawHeader->typeflag;
header->linkname = rawHeader->linkname;
- /* Check for and relativify any absolute paths */
- if ( *(header->linkname) == '/' ) {
- static int alreadyWarned=FALSE;
-
- while (*(header->linkname) == '/')
- ++*(header->linkname);
-
- if (alreadyWarned == FALSE) {
- errorMsg("tar: Removing leading '/' from link names\n");
- alreadyWarned = TRUE;
- }
- }
header->devmajor = getOctal(rawHeader->devmajor, sizeof(rawHeader->devmajor));
header->devminor = getOctal(rawHeader->devminor, sizeof(rawHeader->devminor));
if (! *header.uname)
strcpy(header.uname, "root");
- // FIXME (or most likely not): I break Hard Links
+ /* WARNING/NOTICE: I break Hard Links */
if (S_ISLNK(statbuf->st_mode)) {
char buffer[BUFSIZ];
header.typeflag = SYMTYPE;
errorMsg("Error reading symlink '%s': %s\n", header.name, strerror(errno));
return ( FALSE);
}
- if (*buffer=='/') {
- static int alreadyWarned=FALSE;
- if (alreadyWarned==FALSE) {
- errorMsg("tar: Removing leading '/' from link names\n");
- alreadyWarned=TRUE;
- }
- strncpy(header.linkname, buffer+1, sizeof(header.linkname));
- }
- else {
- strncpy(header.linkname, buffer, sizeof(header.linkname));
- }
+ strncpy(header.linkname, buffer, sizeof(header.linkname));
} else if (S_ISDIR(statbuf->st_mode)) {
header.typeflag = DIRTYPE;
strncat(header.name, "/", sizeof(header.name));