Fix reading from stdin (me), Fix tar segfault when no arguments specified (Geoffrey Lee)
diff --git a/archival/tar.c b/archival/tar.c
index 95ef33b..01ec90c 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -611,6 +611,10 @@
 	unsigned char tar_create = FALSE;
 #endif
 
+	if (argc < 2) {
+		show_usage();
+	}
+
 	/* Prepend '-' to the first argument if required */
 	if (argv[1][0] != '-') {
 		char *tmp = xmalloc(strlen(argv[1]) + 2);
@@ -619,10 +623,6 @@
 		argv[1] = tmp;
 	}
 
-	if (argc < 2) {
-		show_usage();
-	}
-
 	/* Initialise default values */
 	tar_handle = init_handle();
 	tar_handle->flags = ARCHIVE_CREATE_LEADING_DIRS;
@@ -736,13 +736,13 @@
 	{
 		if ((tar_filename[0] == '-') && (tar_filename[1] == '\0')) {
 			tar_handle->src_fd = fileno(stdin);
+			tar_handle->seek = seek_by_char;
 		} else {
 			tar_handle->seek = seek_by_jump;
 			tar_handle->src_fd = xopen(tar_filename, O_RDONLY);
 		}
 #ifdef CONFIG_FEATURE_TAR_GZIP
 		if (get_header_ptr == get_header_tar_gz) {
-			tar_handle->seek = seek_by_char;
 			get_header_tar_gz(tar_handle);
 		} else
 #endif /* CONFIG_FEATURE_TAR_GZIP */