Don't unlink files if we are extracting to stdout.
diff --git a/archival/tar.c b/archival/tar.c
index cab53aa..597e9b8 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -600,9 +600,9 @@
 			printf("\n");
 		}
 
-		/* Remove any clutter lying in our way */
-		if (extractFlag == TRUE)	/* .. but only if we are extracting (as */
-			unlink( header.name);	/* opposed to listing) (rob@sysgo.de)   */
+		/* Remove files if we would overwrite them */
+		if (extractFlag == TRUE && tostdOut == FALSE)
+			unlink(header.name);
 
 		/* If we got here, we can be certain we have a legitimate 
 		 * header to work with.  So work with it.  */
diff --git a/tar.c b/tar.c
index cab53aa..597e9b8 100644
--- a/tar.c
+++ b/tar.c
@@ -600,9 +600,9 @@
 			printf("\n");
 		}
 
-		/* Remove any clutter lying in our way */
-		if (extractFlag == TRUE)	/* .. but only if we are extracting (as */
-			unlink( header.name);	/* opposed to listing) (rob@sysgo.de)   */
+		/* Remove files if we would overwrite them */
+		if (extractFlag == TRUE && tostdOut == FALSE)
+			unlink(header.name);
 
 		/* If we got here, we can be certain we have a legitimate 
 		 * header to work with.  So work with it.  */