Note an error if we are unable to list/extract specified files.
diff --git a/archival/tar.c b/archival/tar.c
index a845df1..826ab96 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -144,6 +144,7 @@
 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 @@
 #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 @@
 				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 @@
 					 * 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 @@
 	/* 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");