tar: exclude files before updating hardlink info list
When excluding one file, and including another file that is a hardlink of the excluded file, it should be stored as an ordinary file. function old new delta writeFileToTarball 489 493 +4 Signed-off-by: Harald van Dijk <harald@gigawatt.nl> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
3d40dfabe1
commit
8ae6a4344d
@ -507,6 +507,9 @@ static int FAST_FUNC writeFileToTarball(struct recursive_state *state,
|
|||||||
if (header_name[0] == '\0')
|
if (header_name[0] == '\0')
|
||||||
return TRUE;
|
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 */
|
/* It is against the rules to archive a socket */
|
||||||
if (S_ISSOCK(statbuf->st_mode)) {
|
if (S_ISSOCK(statbuf->st_mode)) {
|
||||||
bb_error_msg("%s: socket ignored", fileName);
|
bb_error_msg("%s: socket ignored", fileName);
|
||||||
@ -540,9 +543,6 @@ static int FAST_FUNC writeFileToTarball(struct recursive_state *state,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (exclude_file(tbInfo->excludeList, header_name))
|
|
||||||
return SKIP;
|
|
||||||
|
|
||||||
# if !ENABLE_FEATURE_TAR_GNU_EXTENSIONS
|
# if !ENABLE_FEATURE_TAR_GNU_EXTENSIONS
|
||||||
if (strlen(header_name) >= NAME_SIZE) {
|
if (strlen(header_name) >= NAME_SIZE) {
|
||||||
bb_simple_error_msg("names longer than "NAME_SIZE_STR" chars not supported");
|
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 */
|
/* open the file we want to archive, and make sure all is well */
|
||||||
inputFileFd = open_or_warn(fileName, O_RDONLY);
|
inputFileFd = open_or_warn(fileName, O_RDONLY);
|
||||||
if (inputFileFd < 0) {
|
if (inputFileFd < 0) {
|
||||||
return FALSE;
|
return FALSE; /* make recursive_action() return FALSE */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add an entry to the tarball */
|
/* Add an entry to the tarball */
|
||||||
if (writeTarHeader(tbInfo, header_name, fileName, statbuf) == FALSE) {
|
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 */
|
/* If it was a regular file, write out the body */
|
||||||
|
Loading…
Reference in New Issue
Block a user