scripts/functions: extract: portable call for old and defective tars 1.13
authorTitus von Boxberg <titus@v9g.de>
Tue Nov 22 10:08:10 2011 +0100 (2011-11-22)
branch1.13
changeset 28429ee6a3a0f3de
parent 2841 64fe22ca6e6f
child 2843 aaa46c1a2c2a
scripts/functions: extract: portable call for old and defective tars

Instead of using -J, --lzma, --use-compress-program or the like
use <compressor> -dc <file> | tar -f -

Signed-off-by: Titus von Boxberg <titus@v9g.de>
(transplanted from 49af7802dcd538ec3cb64337030b03ac2c6344d2)
scripts/functions
     1.1 --- a/scripts/functions	Fri Nov 18 11:32:50 2011 +0800
     1.2 +++ b/scripts/functions	Tue Nov 22 10:08:10 2011 +0100
     1.3 @@ -761,15 +761,15 @@
     1.4      # - so, if we get an lzma tarball, and either 'xz' or 'lzma' is
     1.5      #   missing, we can assume the other is available
     1.6      if [ "${CT_CONFIGURE_has_lzma}" = "y" ]; then
     1.7 -        lzma_prog=lzma
     1.8 +        lzma_prog="lzma -fdc"
     1.9      else
    1.10 -        lzma_prog=xz
    1.11 +        lzma_prog="xz -fdc"
    1.12      fi
    1.13      case "${ext}" in
    1.14 -        .tar.xz)      CT_DoExecLog FILE tar "${tar_opts[@]}" --use-compress-program=xz -f "${full_file}";;
    1.15 -        .tar.lzma)    CT_DoExecLog FILE tar "${tar_opts[@]}" --use-compress-program="${lzma_prog}" -f "${full_file}";;
    1.16 -        .tar.bz2)     CT_DoExecLog FILE tar "${tar_opts[@]}" -j -f "${full_file}";;
    1.17 -        .tar.gz|.tgz) CT_DoExecLog FILE tar "${tar_opts[@]}" -z -f "${full_file}";;
    1.18 +        .tar.xz)      xz -fdc "${full_file}" | CT_DoExecLog FILE tar "${tar_opts[@]}" -f -;;
    1.19 +        .tar.lzma)    ${lzma_prog} "${full_file}" | CT_DoExecLog FILE tar "${tar_opts[@]}" -f -;;
    1.20 +        .tar.bz2)     bzip2 -dc "${full_file}" | CT_DoExecLog FILE tar "${tar_opts[@]}" -f -;;
    1.21 +        .tar.gz|.tgz) gzip -dc "${full_file}" | CT_DoExecLog FILE tar "${tar_opts[@]}" -f -;;
    1.22          .tar)         CT_DoExecLog FILE tar "${tar_opts[@]}" -f "${full_file}";;
    1.23          /.git)        CT_ExtractGit "${basename}" "${@}";;
    1.24          *)            CT_DoLog WARN "Don't know how to handle '${basename}${ext}': unknown extension"