aboutsummaryrefslogtreecommitdiff
path: root/archival/tar.c
diff options
context:
space:
mode:
author"Vladimir N. Oleynik" <dzo@simtreas.ru>2005-10-12 08:17:29 +0000
committer"Vladimir N. Oleynik" <dzo@simtreas.ru>2005-10-12 08:17:29 +0000
commitf5888696967416075ba52434ed6059e3a7f4957b (patch)
tree00140a4d803dd893fb87305e8aa25ee40d0d0d44 /archival/tar.c
parent161aae727399e97c1c532fb6877de0d34d821bb5 (diff)
downloadbusybox-w32-f5888696967416075ba52434ed6059e3a7f4957b.tar.gz
busybox-w32-f5888696967416075ba52434ed6059e3a7f4957b.tar.bz2
busybox-w32-f5888696967416075ba52434ed6059e3a7f4957b.zip
new featured bb_opt_complementally, correct argc checking
Diffstat (limited to 'archival/tar.c')
-rw-r--r--archival/tar.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/archival/tar.c b/archival/tar.c
index d98426748..32e9cbaa6 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -603,7 +603,7 @@ static char get_header_tar_Z(archive_handle_t *archive_handle)
603# define TAR_OPT_STR_CREATE "ch" 603# define TAR_OPT_STR_CREATE "ch"
604# define TAR_OPT_FLAG_CREATE 2 604# define TAR_OPT_FLAG_CREATE 2
605#else 605#else
606//# define CTX_CREATE 0 606# define CTX_CREATE 0
607# define TAR_OPT_STR_CREATE "" 607# define TAR_OPT_STR_CREATE ""
608# define TAR_OPT_FLAG_CREATE 0 608# define TAR_OPT_FLAG_CREATE 0
609#endif 609#endif
@@ -690,10 +690,6 @@ int tar_main(int argc, char **argv)
690 unsigned long opt; 690 unsigned long opt;
691 unsigned long ctx_flag = 0; 691 unsigned long ctx_flag = 0;
692 692
693 if (argc < 2) {
694 bb_show_usage();
695 }
696
697 /* Prepend '-' to the first argument if required */ 693 /* Prepend '-' to the first argument if required */
698 if (argv[1][0] != '-') 694 if (argv[1][0] != '-')
699 argv[1] = bb_xasprintf("-%s", argv[1]); 695 argv[1] = bb_xasprintf("-%s", argv[1]);
@@ -702,11 +698,14 @@ int tar_main(int argc, char **argv)
702 tar_handle = init_handle(); 698 tar_handle = init_handle();
703 tar_handle->flags = ARCHIVE_CREATE_LEADING_DIRS | ARCHIVE_PRESERVE_DATE | ARCHIVE_EXTRACT_UNCONDITIONAL; 699 tar_handle->flags = ARCHIVE_CREATE_LEADING_DIRS | ARCHIVE_PRESERVE_DATE | ARCHIVE_EXTRACT_UNCONDITIONAL;
704 700
705 bb_opt_complementally = "?c~tx:t~cx:x~ct:X*:T*"; 701#ifdef CONFIG_FEATURE_TAR_CREATE
702 bb_opt_complementally = "?:c?c:t?t:x?x:c~tx:t~cx:x~ct:X*:T*";
703#else
704 bb_opt_complementally = "?:t?t:x?x:t~x:x~t:X*:T*";
705#endif
706#ifdef CONFIG_FEATURE_TAR_LONG_OPTIONS 706#ifdef CONFIG_FEATURE_TAR_LONG_OPTIONS
707 bb_applet_long_options = tar_long_options; 707 bb_applet_long_options = tar_long_options;
708#endif 708#endif
709
710 opt = bb_getopt_ulflags(argc, argv, tar_options, 709 opt = bb_getopt_ulflags(argc, argv, tar_options,
711 &base_dir, /* Change to dir <optarg> */ 710 &base_dir, /* Change to dir <optarg> */
712 &tar_filename /* archive filename */ 711 &tar_filename /* archive filename */
@@ -716,14 +715,7 @@ int tar_main(int argc, char **argv)
716#endif 715#endif
717 ); 716 );
718 717
719#ifdef CONFIG_FEATURE_TAR_CREATE
720 ctx_flag = opt & (CTX_CREATE | CTX_TEST | CTX_EXTRACT); 718 ctx_flag = opt & (CTX_CREATE | CTX_TEST | CTX_EXTRACT);
721#else
722 ctx_flag = opt & (CTX_TEST | CTX_EXTRACT);
723#endif
724 if (ctx_flag == 0) {
725 bb_show_usage();
726 }
727 if(ctx_flag & CTX_TEST) { 719 if(ctx_flag & CTX_TEST) {
728 if ((tar_handle->action_header == header_list) || 720 if ((tar_handle->action_header == header_list) ||
729 (tar_handle->action_header == header_verbose_list)) { 721 (tar_handle->action_header == header_verbose_list)) {