Fix for using '-' as the filename when reading from stdin
diff --git a/archival/tar.c b/archival/tar.c
index 6ef698e..0f0d4fd 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -626,14 +626,6 @@
 	tar_handle->src_fd = fileno(stdin);
 	tar_handle->flags = ARCHIVE_CREATE_LEADING_DIRS;
 
-	/* Prepend '-' to the first argument if required */
-	if (argv[1][0] != '-') {
-		char *tmp = xmalloc(strlen(argv[1]) + 2);
-
-		tmp[0] = '-';
-		strcpy(tmp + 1, argv[1]);
-		argv[1] = tmp;
-	}
 	while ((opt = getopt(argc, argv, "ctxT:X:C:f:Opvz")) != -1) {
 		switch (opt) {
 			/* One and only one of these is required */
@@ -704,6 +696,10 @@
 		}
 	}
 
+	if (*argv[optind] == '-') {
+		optind++;
+	}
+
 	/* Setup an array of filenames to work with */
 	/* TODO: This is the same as in ar, seperate function ? */
 	while (optind < argc) {
@@ -750,7 +746,9 @@
 			while (get_header_tar(tar_handle) == EXIT_SUCCESS);
 
 #ifdef CONFIG_FEATURE_CLEAN_UP
-	close(tar_handle->src_fd);
+	if (tar_handle->src_fd != fileno(stdin)) {
+		close(tar_handle->src_fd);
+	}
 #endif
 
 	return(EXIT_SUCCESS);