Mercurial > repo
diff p7zip_9.20.1/contrib/gzip-like_CLI_wrapper_for_7z/p7zip @ 707:8e902fcb8792
<Sgeo> run tar -xjf p7zip.tar.bz2
author | HackBot |
---|---|
date | Sat, 15 Sep 2012 23:18:55 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/p7zip_9.20.1/contrib/gzip-like_CLI_wrapper_for_7z/p7zip Sat Sep 15 23:18:55 2012 +0000 @@ -0,0 +1,144 @@ +#!/bin/sh +# gzip-like CLI wrapper for p7zip +# version 2.0 +# +# History +# 2.0 : +# - support for -filename, "file name" +# - p7zip file1 file2 ... + +set -e + +usage () + { + echo "Usage: $0 [-d] [-h|--help] [--] [ name ... ]" + echo "" + echo " -h print this help" + echo " -d decompress file" + echo " -- treats all subsequent arguments as file names, even if they start with a dash" + echo "" + exit 1 + } + +doit() +{ + compress=$1 + file="$2" + + if [ "${file}" != "" ] ; then + if ${compress} ; then + if [ -f "${file}" ] ; then + rm -f -- "${file}.7z" + 7za a -- "${file}.7z" "${file}" + if [ "$?" != "0" ] ; then + rm -f -- "${file}.7z" + exit 1 + fi + rm -- "${file}" + else + exit 1 + fi + else + case "${file}" in + *.7z) + if [ -f "${file}" ] ; then + 7za x -- "${file}" + if [ "$?" != "0" ] ; then + exit 1 + fi + rm -- "${file}" + else + exit 1 + fi + ;; + *) + echo "$0: ${file}: unknown suffix" + exit 1 + ;; + esac + fi + return 0 + fi + + P7ZIPTMP=${TMP:-/tmp} + tmp=`mktemp ${P7ZIPTMP}/p7zip.XXXXXXXX` + trap "rm -f -- ${tmp}" 0 + + if ${compress} ; then + if tty > /dev/null ; then + echo "$0: compressed data not written to a terminal." + echo "For help, type: $0 -h" + exit 1 + fi + rm -f -- ${tmp} + 7za a -si -- ${tmp} >/dev/null + if [ "$?" != "0" ] ; then + exit 1 + fi + cat ${tmp} + else + cat > ${tmp} + 7za x -so -- ${tmp} 2>/dev/null | cat + if [ "$?" != "0" ] ; then + exit 1 + fi + fi + + rm -f -- ${tmp} + return 0 +} + + +## MAIN + +compress=true +flag=true +file="" + +# make sure they're present, before we screw up +for i in mktemp 7za rm cat tty ; do + if ! which $i > /dev/null ; then + echo "$0: $i: command not found" + exit 1 + fi +done + +# files and flags +while [ "$#" != "0" ] ; do + case "$1" in + -d) + compress=false # decompressing + ;; + -c) + echo "$0: ignoring $1 option (not yet implemented)" + ;; + -h|--help) + usage + ;; + --) + flag=false + shift + break + ;; + *) + doit ${compress} "$1" + file="$1" + ;; + esac + shift +done + +# only files now +while [ "$#" != "0" ] ; do + doit ${compress} "$1" + file="$1" + shift +done + +if [ "${file}" = "" ] ; then + # compressing/decompressing using standart I/O + doit ${compress} +fi + +exit 0 +