tar: add a comment about previous subtle fix
authorDenis Vlasenko <vda.linux@googlemail.com>
Mon, 24 Sep 2007 19:32:53 +0000 (19:32 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Mon, 24 Sep 2007 19:32:53 +0000 (19:32 -0000)
archival/tar.c

index bbda52d144bb8f2e448d3aef77bfb9fa4b621b99..18b6267013f1b2721dc4902959e569754a8a5b69 100644 (file)
@@ -386,6 +386,7 @@ static int writeFileToTarball(const char *fileName, struct stat *statbuf,
        const char *header_name;
        int inputFileFd = -1;
 
+       /* Strip leading '/' (must be before memorizing hardlink's name) */
        header_name = fileName;
        while (header_name[0] == '/') {
                static smallint warned;
@@ -400,6 +401,12 @@ static int writeFileToTarball(const char *fileName, struct stat *statbuf,
        if (header_name[0] == '\0')
                return TRUE;
 
+       /* It is against the rules to archive a socket */
+       if (S_ISSOCK(statbuf->st_mode)) {
+               bb_error_msg("%s: socket ignored", fileName);
+               return TRUE;
+       }
+
        /*
         * Check to see if we are dealing with a hard link.
         * If so -
@@ -414,12 +421,6 @@ static int writeFileToTarball(const char *fileName, struct stat *statbuf,
                        addHardLinkInfo(&tbInfo->hlInfoHead, statbuf, header_name);
        }
 
-       /* It is against the rules to archive a socket */
-       if (S_ISSOCK(statbuf->st_mode)) {
-               bb_error_msg("%s: socket ignored", fileName);
-               return TRUE;
-       }
-
        /* It is a bad idea to store the archive we are in the process of creating,
         * so check the device and inode to be sure that this particular file isn't
         * the new tarball */