#! /bin/sh # utility.sh # Miscellaneous Utility Functions unkey_host () { [ ${#} -ne 1 ] && return 1 sed -i -e "/$1/d" $HOME/.ssh/known_hosts } err () { case $@ in E*) unset errno if [ "${errno}" = "" ] && ( command -v python > /dev/null 2>&1 ); then errno=`python -c "import errno;print(errno.$@)" 2>/dev/null` fi if [ "${errno}" = "" ] && ( command -v ruby > /dev/null 2>&1 ); then errno=`ruby -e "puts Errno::$@::Errno if (Errno::$@)" 2>/dev/null` fi if [ "${errno}" = "" ] && [ -e /usr/include/errno.h ] ; then errno=`cpp -dM /usr/include/errno.h | grep -w "$@" | grep -oE '[0-9]+' 2>/dev/null` fi if [ "${errno}" ] ; then echo "$@ = $errno" else return 1 fi ;; *) unset errconst if [ "${errconst}" = "" ] && ( command -v python > /dev/null 2>&1 ); then errconst=`python -c "import errno;print(errno.errorcode[$@])" 2>/dev/null` fi if [ "${errconst}" = "" ] && ( command -v ruby > /dev/null 2>&1 ); then errconst=`ruby -e "puts Errno.constants.find_all{|err| eval('Errno::' + err + '::Errno') == $@ }"` fi if [ "${errconst}" = "" ] && [ -e /usr/include/errno.h ] ; then errconst=`cpp -dM /usr/include/errno.h | grep -w "E.* $@"` fi if [ "${errconst}" ] ; then echo $errconst else return 1 fi errno=$@ ;; esac if ( command -v perl > /dev/null 2>&1 ) ; then perl -MPOSIX -e 'print strerror($ARGV[0])."\n";' $errno elif ( command -v python > /dev/null 2>&1 ) ; then python -c "import os;print(os.strerror($errno))" fi } mkcd () { if [ -d "$1" ] ; then cd "$1" return fi mkdir -p "$1" && cd "$1" } extract () { if ( command -v aunpack > /dev/null 2>&1 ) ; then aunpack "${1}" return fi if [ ! -f "$1" ] ; then echo "The file ("$1") does not exist!" return fi filename=`echo "$1" | tr '[:upper:]' '[:lower:]'` case "$filename" in *.tar) tar xf "${1}" ;; *.tar.bz2|*.tbz2|*.tbz) bzip2 -dc "${1}" | tar xf - ;; *.tar.gz|*.tgz|*.tz) gzip -dc "${1}" | tar xf - ;; *.tar.lzma|*.tlz) lzma -dc "${1}" | tar xf - ;; *.tar.xz|*.txz) xz -dc "${1}" | tar xf - ;; *.tar.z|*.tar.Z|*.taz) uncompress -c "${1}" | tar xf - ;; *.tar.7z|*.t7z) 7zr x -so "${1}" | tar xf - ;; *.lzma) lzma -dc "${1}" > `basename "${1%.*}"` ;; *.a|*.deb) ar x "${1}" ;; *.ace) unace x "${1}" ;; *.arj) arj x "${1}" ;; *.cpio) cpio -id < "${1}" ;; *.rpm) rpm2cpio "${1}" | cpio -id ;; *.lha|*.lzh) lha xqf "${1}" ;; *.pax) pax -rf "${1}" ;; *.pax.bz2) bzip2 -dc "${1}" | pax -rf - ;; *.rar) unrar x -idq "${1}" ;; *.rz) rzip -d -f -k "${1}" ;; *.zip|*.jar) unzip -qo "${1}" ;; *.zoo) zoo x "${1}" ;; *.bz2|*.bz) bzip2 -dc "${1}" > `basename "${1%.*}"` ;; *.gz|*.z) gzip -dc "${1}" > `basename "${1%.*}"` ;; *.xz) xz -dc "${1}" > `basename "${1%.*}"` ;; *.Z) uncompress -c "${1}" > `basename "${1%.*}"` ;; *.7z) 7zr x "${1}" ;; *) echo "Unable to extract '"$1"'" return 1 ;; esac return $? } # vim: set ft=sh ts=3 sw=3 et: