diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2002-11-08 07:09:42 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2002-11-08 07:09:42 +0000 |
commit | f6bf7a03fec2ae854bdbf7a597484b7ab49a4a51 (patch) | |
tree | 58a1eafb8c61be3a3b5567e69588cb227021018d /archival/tar.c | |
parent | b26674b2f8a300d9ec41a7a728426beb0536acd2 (diff) | |
download | busybox-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.c | 10 |
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 */ |