Blob Blame History Raw
#
# set +o errexit -o noglob -o nounset is assumed.
#

pkgp_fetch_extract_type() {
	local _ppfet_fname="${1}" _ppfet_rtype="${2#\$}";

	if [ "${1##*.tar.}" != "${1}" ]; then
		eval ${_ppfet_rtype}='${1##*.tar.}';
	elif [ "${1##*.t}" != "${1}" ]; then
		eval ${_ppfet_rtype}='${1##*.t}';
	fi;
	return 0;
};

pkg_fetch_extract() {
	local	_pfe_group_name="${1}" _pfe_pkg_name="${2}" _pfe_restart_at="${3}"	\
		_pfe_type="";

	if [ "${PKG_URL:+1}" = 1 ]; then
		_pfe_oldpwd="${PWD}";

		if ! rtl_fileop cd "${PKG_BASE_DIR}"\
		|| ! rtl_fileop rm "${PKG_BASE_DIR}/${PKG_SUBDIR}"; then
			rtl_fileop cd "${_pfe_oldpwd}"; return 1;
		else
			pkgp_fetch_extract_type "${PKG_NAME}" \$_pfe_type;

			case "${_pfe_type}" in
			bz2)	bunzip2 -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;;
			gz)	gunzip -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;;
			lz)	lzip -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;;
			xz)	xz -d < "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}" | tar -C "${PKG_BASE_DIR}" -xf -; ;;
			*)	tar -C "${PKG_BASE_DIR}" -xf "${BUILD_DLCACHEDIR}/${PKG_NAME}/${PKG_FNAME}"; ;;
			esac;

			if [ "${?}" -ne 0 ]; then
				rtl_fileop cd "${_pfe_oldpwd}"; return 1;
			else
				rtl_fileop cd "${_pfe_oldpwd}";
			fi;
		fi;
	fi;

	return 0;
};

# vim:filetype=sh textwidth=0