aboutsummaryrefslogtreecommitdiff
path: root/archival/tar.c
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2002-11-08 07:09:42 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2002-11-08 07:09:42 +0000
commitf6bf7a03fec2ae854bdbf7a597484b7ab49a4a51 (patch)
tree58a1eafb8c61be3a3b5567e69588cb227021018d /archival/tar.c
parentb26674b2f8a300d9ec41a7a728426beb0536acd2 (diff)
downloadbusybox-w32-f6bf7a03fec2ae854bdbf7a597484b7ab49a4a51.tar.gz
busybox-w32-f6bf7a03fec2ae854bdbf7a597484b7ab49a4a51.tar.bz2
busybox-w32-f6bf7a03fec2ae854bdbf7a597484b7ab49a4a51.zip
Fix reading from stdin (me), Fix tar segfault when no arguments specified (Geoffrey Lee)
Diffstat (limited to 'archival/tar.c')
-rw-r--r--archival/tar.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/archival/tar.c b/archival/tar.c
index 95ef33b74..01ec90c6f 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -611,6 +611,10 @@ int tar_main(int argc, char **argv)
611 unsigned char tar_create = FALSE; 611 unsigned char tar_create = FALSE;
612#endif 612#endif
613 613
614 if (argc < 2) {
615 show_usage();
616 }
617
614 /* Prepend '-' to the first argument if required */ 618 /* Prepend '-' to the first argument if required */
615 if (argv[1][0] != '-') { 619 if (argv[1][0] != '-') {
616 char *tmp = xmalloc(strlen(argv[1]) + 2); 620 char *tmp = xmalloc(strlen(argv[1]) + 2);
@@ -619,10 +623,6 @@ int tar_main(int argc, char **argv)
619 argv[1] = tmp; 623 argv[1] = tmp;
620 } 624 }
621 625
622 if (argc < 2) {
623 show_usage();
624 }
625
626 /* Initialise default values */ 626 /* Initialise default values */
627 tar_handle = init_handle(); 627 tar_handle = init_handle();
628 tar_handle->flags = ARCHIVE_CREATE_LEADING_DIRS; 628 tar_handle->flags = ARCHIVE_CREATE_LEADING_DIRS;
@@ -736,13 +736,13 @@ int tar_main(int argc, char **argv)
736 { 736 {
737 if ((tar_filename[0] == '-') && (tar_filename[1] == '\0')) { 737 if ((tar_filename[0] == '-') && (tar_filename[1] == '\0')) {
738 tar_handle->src_fd = fileno(stdin); 738 tar_handle->src_fd = fileno(stdin);
739 tar_handle->seek = seek_by_char;
739 } else { 740 } else {
740 tar_handle->seek = seek_by_jump; 741 tar_handle->seek = seek_by_jump;
741 tar_handle->src_fd = xopen(tar_filename, O_RDONLY); 742 tar_handle->src_fd = xopen(tar_filename, O_RDONLY);
742 } 743 }
743#ifdef CONFIG_FEATURE_TAR_GZIP 744#ifdef CONFIG_FEATURE_TAR_GZIP
744 if (get_header_ptr == get_header_tar_gz) { 745 if (get_header_ptr == get_header_tar_gz) {
745 tar_handle->seek = seek_by_char;
746 get_header_tar_gz(tar_handle); 746 get_header_tar_gz(tar_handle);
747 } else 747 } else
748#endif /* CONFIG_FEATURE_TAR_GZIP */ 748#endif /* CONFIG_FEATURE_TAR_GZIP */