diff options
author | Boris Reisig <boris@boris.ca> | 2012-05-24 09:01:55 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2012-05-24 09:01:55 +0200 |
commit | dfc2473b9ed88039697ac89ee2a4301cdaefcf84 (patch) | |
tree | 7814ba22f4c103fe7873e11c88a912d6df566ddf | |
parent | 6e9284db78ddfe8d7dcf3775aed78665099f827f (diff) | |
download | busybox-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.c | 17 |
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 |
804 | static const char tar_longopts[] ALIGN1 = | 810 | static 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 */ |