tools/unpack-archive
author Alasdair Lumsden <alasdairrr@gmail.com>
Tue, 20 Sep 2011 18:51:35 +0000
branchoi_151a
changeset 570 869a4dca4ecf
parent 450 13efd215ca04
permissions -rwxr-xr-x
Adding tag oi_151a_release

#!/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#

# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#

#
# Common script to unpack various source archives
#
# Arguments:
#   $1	archive name
#   $2	directory created from the archive
#   $3	optional final directory name
# 
FIND=${FIND:-/bin/find}
XARGS=${XARGS:-/bin/xargs}
CHMOD=${CHMOD:-/bin/chmod}
MV=${MV:-/usr/bin/mv}

case "${1}" in
	*.bz2)
		COMMAND=${BZIP:-/usr/bin/bzip2}
		COMMAND="${COMMAND} ${DECOMP_OPTS:--dc} ${1}"
		;;
	*.gz)
		COMMAND=${GZIP:-/usr/bin/gzip}
		COMMAND="${COMMAND} ${DECOMP_OPTS:--dc} ${1}"
		;;
	*.Z)
		COMMAND=${ZCAT:-/usr/bin/zcat}
		COMMAND="${COMMAND} ${1}"
		;;
	*.zip)
		COMMAND=${UNZIP:-/usr/bin/unzip}
		COMMAND="${COMMAND} ${DECOMP_OPTS:--qo} ${1}"
		;;
esac

case "${1}" in
	*.tar.*)
		COMMAND="${COMMAND} | ${TAR:-/usr/bin/tar}"
		COMMAND="${COMMAND} ${TAR_OPTS:-oxpf} -"
		;;
esac

/bin/sh -c "${COMMAND}"

if [ $# -ge 2 -a -d "${2}" ] ; then
	${FIND} "${2}" -type d | ${XARGS} -i ${CHMOD} 0755 "{}"
	${FIND} "${2}" -type f | ${XARGS} -i ${CHMOD} a+r "{}"
fi

if [ $# -eq 3 -a -d "${2}" -a ! -d "${3}" ] ; then
	${MV} -f "${2}" "${3}"
fi