Note an error if we are unable to list/extract specified files.

This commit is contained in:
Matt Kraai 2000-11-30 04:44:54 +00:00
parent 8c725e624a
commit c119ab9e29
2 changed files with 28 additions and 4 deletions

View File

@ -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
View File

@ -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");