Note an error if we are unable to list/extract specified files.
This commit is contained in:
parent
8c725e624a
commit
c119ab9e29
@ -144,6 +144,7 @@ static int writeTarFile(const char* tarName, int verboseFlag, char **argv,
|
||||
extern int tar_main(int argc, char **argv)
|
||||
{
|
||||
char** excludeList=NULL;
|
||||
char** extractList=NULL;
|
||||
#if defined BB_FEATURE_TAR_EXCLUDE
|
||||
int excludeListSize=0;
|
||||
#endif
|
||||
@ -230,8 +231,10 @@ extern int tar_main(int argc, char **argv)
|
||||
#endif
|
||||
}
|
||||
if (listFlag == TRUE || extractFlag == TRUE) {
|
||||
if (*argv)
|
||||
extractList = argv;
|
||||
exit(readTarFile(tarName, extractFlag, listFlag, tostdoutFlag,
|
||||
verboseFlag, argv, excludeList));
|
||||
verboseFlag, extractList, excludeList));
|
||||
}
|
||||
|
||||
flagError:
|
||||
@ -569,7 +572,7 @@ static int readTarFile(const char* tarName, int extractFlag, int listFlag,
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
if (*extractList != NULL) {
|
||||
if (extractList != NULL) {
|
||||
int skipFlag = TRUE;
|
||||
for (tmpList = extractList; *tmpList != NULL; tmpList++) {
|
||||
if (strncmp( *tmpList, header.name, strlen(*tmpList))==0 || (
|
||||
@ -580,6 +583,9 @@ static int readTarFile(const char* tarName, int extractFlag, int listFlag,
|
||||
* the extractFlag set to FALSE, so the junk in the tarball
|
||||
* is properly skipped over */
|
||||
skipFlag = FALSE;
|
||||
memmove(extractList+1, extractList,
|
||||
sizeof(*extractList)*(tmpList-extractList));
|
||||
extractList++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -712,6 +718,12 @@ static int readTarFile(const char* tarName, int extractFlag, int listFlag,
|
||||
/* Stuff to do when we are done */
|
||||
endgame:
|
||||
close( tarFd);
|
||||
if (extractList != NULL) {
|
||||
for (; *extractList != NULL; extractList++) {
|
||||
errorMsg("%s: Not found in archive\n", *extractList);
|
||||
errorFlag = TRUE;
|
||||
}
|
||||
}
|
||||
if ( *(header.name) == '\0' ) {
|
||||
if (errorFlag==TRUE)
|
||||
errorMsg( "Error exit delayed from previous errors\n");
|
||||
|
16
tar.c
16
tar.c
@ -144,6 +144,7 @@ static int writeTarFile(const char* tarName, int verboseFlag, char **argv,
|
||||
extern int tar_main(int argc, char **argv)
|
||||
{
|
||||
char** excludeList=NULL;
|
||||
char** extractList=NULL;
|
||||
#if defined BB_FEATURE_TAR_EXCLUDE
|
||||
int excludeListSize=0;
|
||||
#endif
|
||||
@ -230,8 +231,10 @@ extern int tar_main(int argc, char **argv)
|
||||
#endif
|
||||
}
|
||||
if (listFlag == TRUE || extractFlag == TRUE) {
|
||||
if (*argv)
|
||||
extractList = argv;
|
||||
exit(readTarFile(tarName, extractFlag, listFlag, tostdoutFlag,
|
||||
verboseFlag, argv, excludeList));
|
||||
verboseFlag, extractList, excludeList));
|
||||
}
|
||||
|
||||
flagError:
|
||||
@ -569,7 +572,7 @@ static int readTarFile(const char* tarName, int extractFlag, int listFlag,
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
if (*extractList != NULL) {
|
||||
if (extractList != NULL) {
|
||||
int skipFlag = TRUE;
|
||||
for (tmpList = extractList; *tmpList != NULL; tmpList++) {
|
||||
if (strncmp( *tmpList, header.name, strlen(*tmpList))==0 || (
|
||||
@ -580,6 +583,9 @@ static int readTarFile(const char* tarName, int extractFlag, int listFlag,
|
||||
* the extractFlag set to FALSE, so the junk in the tarball
|
||||
* is properly skipped over */
|
||||
skipFlag = FALSE;
|
||||
memmove(extractList+1, extractList,
|
||||
sizeof(*extractList)*(tmpList-extractList));
|
||||
extractList++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -712,6 +718,12 @@ static int readTarFile(const char* tarName, int extractFlag, int listFlag,
|
||||
/* Stuff to do when we are done */
|
||||
endgame:
|
||||
close( tarFd);
|
||||
if (extractList != NULL) {
|
||||
for (; *extractList != NULL; extractList++) {
|
||||
errorMsg("%s: Not found in archive\n", *extractList);
|
||||
errorFlag = TRUE;
|
||||
}
|
||||
}
|
||||
if ( *(header.name) == '\0' ) {
|
||||
if (errorFlag==TRUE)
|
||||
errorMsg( "Error exit delayed from previous errors\n");
|
||||
|
Loading…
Reference in New Issue
Block a user