tar: exclude files before updating hardlink info list
No binary (build failed)
—
(log yok)
| @@ -507,6 +507,9 @@ static int FAST_FUNC writeFileToTarball(struct recursive_state *state, | |
| if (header_name[0] == '\0') | |
| return TRUE; | |
| + | if (exclude_file(tbInfo->excludeList, header_name)) |
| + | return SKIP; /* "do not recurse on this directory", no error message printed */ |
| + | |
| /* It is against the rules to archive a socket */ | |
| if (S_ISSOCK(statbuf->st_mode)) { | |
| bb_error_msg("%s: socket ignored", fileName); | |
| @@ -540,9 +543,6 @@ static int FAST_FUNC writeFileToTarball(struct recursive_state *state, | |
| return TRUE; | |
| } | |
| - | if (exclude_file(tbInfo->excludeList, header_name)) |
| - | return SKIP; |
| - | |
| # if !ENABLE_FEATURE_TAR_GNU_EXTENSIONS | |
| if (strlen(header_name) >= NAME_SIZE) { | |
| bb_simple_error_msg("names longer than "NAME_SIZE_STR" chars not supported"); | |
| @@ -555,13 +555,13 @@ static int FAST_FUNC writeFileToTarball(struct recursive_state *state, | |
| /* open the file we want to archive, and make sure all is well */ | |
| inputFileFd = open_or_warn(fileName, O_RDONLY); | |
| if (inputFileFd < 0) { | |
| - | return FALSE; |
| + | return FALSE; /* make recursive_action() return FALSE */ |
| } | |
| } | |
| /* Add an entry to the tarball */ | |
| if (writeTarHeader(tbInfo, header_name, fileName, statbuf) == FALSE) { | |
| - | return FALSE; |
| + | return FALSE; /* make recursive_action() return FALSE */ |
| } | |
| /* If it was a regular file, write out the body */ | |