#!@@SHELL@@ # # opkhelper # lib/archive # Functions for handling archive files. # # Copyright (C) 2012 Patrick "P. J." McDermott # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . oh_archive_extract_source() { _matches=$(echo ../${OH_SRCPKG}-${OH_PKGVER%-*}.tar.*) if [ "${_matches}" = ../${OH_SRCPKG}-${OH_PKGVER%-*}.tar.\* ]; then # No archive found. return 1 fi if [ -n "$(echo "${_matches}" | grep ' ')" ]; then # Multiple archives found. return 2 fi # Detect the compression format. # Note: dpkg's source format version 3 supports gzip, bzip2, LZMA, and XZ. # We support gzip, bzip2, LZMA, and compress, since these are the formats # supported by BusyBox tar. _z_ext=${_matches#"../${OH_SRCPKG}-${OH_PKGVER%-*}.tar."} case ${_z_ext} in gz) _z=z ;; bz2) _z=j ;; lz) _z=a ;; Z) _z=Z ;; *) return 3 ;; esac _files=$(tar -t${_z}f ../${OH_SRCPKG}-${OH_PKGVER%-*}.tar.${_z_ext} | \ sed 's@^./@@' | grep '^[^/]*/$') if [ -z "${_files}" ]; then return 4 fi if [ "$(echo "${_files}" | wc -l)" -ne 1 ]; then return 5 fi tar -x${_z}f ../${OH_SRCPKG}-${OH_PKGVER%-*}.tar.${_z_ext} || return 6 mv "${_files}" src || return 7 }