aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Reisig <boris@boris.ca>2012-05-24 09:01:55 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2012-05-24 09:01:55 +0200
commitdfc2473b9ed88039697ac89ee2a4301cdaefcf84 (patch)
tree7814ba22f4c103fe7873e11c88a912d6df566ddf
parent6e9284db78ddfe8d7dcf3775aed78665099f827f (diff)
downloadbusybox-w32-dfc2473b9ed88039697ac89ee2a4301cdaefcf84.tar.gz
busybox-w32-dfc2473b9ed88039697ac89ee2a4301cdaefcf84.tar.bz2
busybox-w32-dfc2473b9ed88039697ac89ee2a4301cdaefcf84.zip
tar: support -J, --xz explicit compression option
function old new delta tar_main 868 881 +13 tar_longopts 285 290 +5 packed_usage 29267 29270 +3 Signed-off-by: Boris Reisig <boris@boris.ca> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--archival/tar.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/archival/tar.c b/archival/tar.c
index a64d6510f..a3565d6ae 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -693,6 +693,7 @@ static llist_t *append_file_list_to_list(llist_t *list)
693//usage: "-[" IF_FEATURE_TAR_CREATE("c") "xt" 693//usage: "-[" IF_FEATURE_TAR_CREATE("c") "xt"
694//usage: IF_FEATURE_SEAMLESS_Z("Z") 694//usage: IF_FEATURE_SEAMLESS_Z("Z")
695//usage: IF_FEATURE_SEAMLESS_GZ("z") 695//usage: IF_FEATURE_SEAMLESS_GZ("z")
696//usage: IF_FEATURE_SEAMLESS_XZ("J")
696//usage: IF_FEATURE_SEAMLESS_BZ2("j") 697//usage: IF_FEATURE_SEAMLESS_BZ2("j")
697//usage: IF_FEATURE_SEAMLESS_LZMA("a") 698//usage: IF_FEATURE_SEAMLESS_LZMA("a")
698//usage: IF_FEATURE_TAR_CREATE("h") 699//usage: IF_FEATURE_TAR_CREATE("h")
@@ -719,6 +720,9 @@ static llist_t *append_file_list_to_list(llist_t *list)
719//usage: IF_FEATURE_SEAMLESS_GZ( 720//usage: IF_FEATURE_SEAMLESS_GZ(
720//usage: "\n z (De)compress using gzip" 721//usage: "\n z (De)compress using gzip"
721//usage: ) 722//usage: )
723//usage: IF_FEATURE_SEAMLESS_XZ(
724//usage: "\n J (De)compress using xz"
725//usage: )
722//usage: IF_FEATURE_SEAMLESS_BZ2( 726//usage: IF_FEATURE_SEAMLESS_BZ2(
723//usage: "\n j (De)compress using bzip2" 727//usage: "\n j (De)compress using bzip2"
724//usage: ) 728//usage: )
@@ -765,7 +769,8 @@ enum {
765 IF_FEATURE_TAR_FROM( OPTBIT_INCLUDE_FROM,) 769 IF_FEATURE_TAR_FROM( OPTBIT_INCLUDE_FROM,)
766 IF_FEATURE_TAR_FROM( OPTBIT_EXCLUDE_FROM,) 770 IF_FEATURE_TAR_FROM( OPTBIT_EXCLUDE_FROM,)
767 IF_FEATURE_SEAMLESS_GZ( OPTBIT_GZIP ,) 771 IF_FEATURE_SEAMLESS_GZ( OPTBIT_GZIP ,)
768 IF_FEATURE_SEAMLESS_Z( OPTBIT_COMPRESS ,) // 16th bit 772 IF_FEATURE_SEAMLESS_XZ( OPTBIT_XZ ,) // 16th bit
773 IF_FEATURE_SEAMLESS_Z( OPTBIT_COMPRESS ,)
769 IF_FEATURE_TAR_NOPRESERVE_TIME(OPTBIT_NOPRESERVE_TIME,) 774 IF_FEATURE_TAR_NOPRESERVE_TIME(OPTBIT_NOPRESERVE_TIME,)
770#if ENABLE_FEATURE_TAR_LONG_OPTIONS 775#if ENABLE_FEATURE_TAR_LONG_OPTIONS
771 OPTBIT_NORECURSION, 776 OPTBIT_NORECURSION,
@@ -790,6 +795,7 @@ enum {
790 OPT_INCLUDE_FROM = IF_FEATURE_TAR_FROM( (1 << OPTBIT_INCLUDE_FROM)) + 0, // T 795 OPT_INCLUDE_FROM = IF_FEATURE_TAR_FROM( (1 << OPTBIT_INCLUDE_FROM)) + 0, // T
791 OPT_EXCLUDE_FROM = IF_FEATURE_TAR_FROM( (1 << OPTBIT_EXCLUDE_FROM)) + 0, // X 796 OPT_EXCLUDE_FROM = IF_FEATURE_TAR_FROM( (1 << OPTBIT_EXCLUDE_FROM)) + 0, // X
792 OPT_GZIP = IF_FEATURE_SEAMLESS_GZ( (1 << OPTBIT_GZIP )) + 0, // z 797 OPT_GZIP = IF_FEATURE_SEAMLESS_GZ( (1 << OPTBIT_GZIP )) + 0, // z
798 OPT_XZ = IF_FEATURE_SEAMLESS_XZ( (1 << OPTBIT_XZ )) + 0, // J
793 OPT_COMPRESS = IF_FEATURE_SEAMLESS_Z( (1 << OPTBIT_COMPRESS )) + 0, // Z 799 OPT_COMPRESS = IF_FEATURE_SEAMLESS_Z( (1 << OPTBIT_COMPRESS )) + 0, // Z
794 OPT_NOPRESERVE_TIME = IF_FEATURE_TAR_NOPRESERVE_TIME((1 << OPTBIT_NOPRESERVE_TIME)) + 0, // m 800 OPT_NOPRESERVE_TIME = IF_FEATURE_TAR_NOPRESERVE_TIME((1 << OPTBIT_NOPRESERVE_TIME)) + 0, // m
795 OPT_NORECURSION = IF_FEATURE_TAR_LONG_OPTIONS((1 << OPTBIT_NORECURSION )) + 0, // no-recursion 801 OPT_NORECURSION = IF_FEATURE_TAR_LONG_OPTIONS((1 << OPTBIT_NORECURSION )) + 0, // no-recursion
@@ -798,7 +804,7 @@ enum {
798 OPT_NOPRESERVE_PERM = IF_FEATURE_TAR_LONG_OPTIONS((1 << OPTBIT_NOPRESERVE_PERM)) + 0, // no-same-permissions 804 OPT_NOPRESERVE_PERM = IF_FEATURE_TAR_LONG_OPTIONS((1 << OPTBIT_NOPRESERVE_PERM)) + 0, // no-same-permissions
799 OPT_OVERWRITE = IF_FEATURE_TAR_LONG_OPTIONS((1 << OPTBIT_OVERWRITE )) + 0, // overwrite 805 OPT_OVERWRITE = IF_FEATURE_TAR_LONG_OPTIONS((1 << OPTBIT_OVERWRITE )) + 0, // overwrite
800 806
801 OPT_ANY_COMPRESS = (OPT_BZIP2 | OPT_LZMA | OPT_GZIP | OPT_COMPRESS), 807 OPT_ANY_COMPRESS = (OPT_BZIP2 | OPT_LZMA | OPT_GZIP | OPT_XZ | OPT_COMPRESS),
802}; 808};
803#if ENABLE_FEATURE_TAR_LONG_OPTIONS 809#if ENABLE_FEATURE_TAR_LONG_OPTIONS
804static const char tar_longopts[] ALIGN1 = 810static const char tar_longopts[] ALIGN1 =
@@ -831,6 +837,9 @@ static const char tar_longopts[] ALIGN1 =
831# if ENABLE_FEATURE_SEAMLESS_GZ 837# if ENABLE_FEATURE_SEAMLESS_GZ
832 "gzip\0" No_argument "z" 838 "gzip\0" No_argument "z"
833# endif 839# endif
840# if ENABLE_FEATURE_SEAMLESS_XZ
841 "xz\0" No_argument "J"
842# endif
834# if ENABLE_FEATURE_SEAMLESS_Z 843# if ENABLE_FEATURE_SEAMLESS_Z
835 "compress\0" No_argument "Z" 844 "compress\0" No_argument "Z"
836# endif 845# endif
@@ -924,6 +933,7 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
924 IF_FEATURE_SEAMLESS_LZMA("a" ) 933 IF_FEATURE_SEAMLESS_LZMA("a" )
925 IF_FEATURE_TAR_FROM( "T:X:") 934 IF_FEATURE_TAR_FROM( "T:X:")
926 IF_FEATURE_SEAMLESS_GZ( "z" ) 935 IF_FEATURE_SEAMLESS_GZ( "z" )
936 IF_FEATURE_SEAMLESS_XZ( "J" )
927 IF_FEATURE_SEAMLESS_Z( "Z" ) 937 IF_FEATURE_SEAMLESS_Z( "Z" )
928 IF_FEATURE_TAR_NOPRESERVE_TIME("m") 938 IF_FEATURE_TAR_NOPRESERVE_TIME("m")
929 , &base_dir // -C dir 939 , &base_dir // -C dir
@@ -1076,6 +1086,9 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
1076 if (opt & OPT_LZMA) 1086 if (opt & OPT_LZMA)
1077 USE_FOR_MMU(xformer = unpack_lzma_stream;) 1087 USE_FOR_MMU(xformer = unpack_lzma_stream;)
1078 USE_FOR_NOMMU(xformer_prog = "unlzma";) 1088 USE_FOR_NOMMU(xformer_prog = "unlzma";)
1089 if (opt & OPT_XZ)
1090 USE_FOR_MMU(xformer = unpack_xz_stream;)
1091 USE_FOR_NOMMU(xformer_prog = "unxz";)
1079 1092
1080 open_transformer_with_sig(tar_handle->src_fd, xformer, xformer_prog); 1093 open_transformer_with_sig(tar_handle->src_fd, xformer, xformer_prog);
1081 /* Can't lseek over pipes */ 1094 /* Can't lseek over pipes */