dots/commonsh/10_utility

182 lines
4.3 KiB
Text
Raw Normal View History

#! /bin/sh
# utility.sh
# Miscellaneous Utility Functions
unkey_host ()
{
2010-07-02 11:11:00 -07:00
[ $# -ne 1 ] && return 1
sed -i -e "/$1/d" $HOME/.ssh/known_hosts
}
err ()
{
2010-07-02 11:11:00 -07:00
case $1 in
2010-07-01 13:06:44 -07:00
E*)
2010-07-02 11:11:00 -07:00
errconst=$1
2010-07-01 13:06:44 -07:00
unset errno
if [ "${errno}" = "" ] && ( command -v python > /dev/null 2>&1 ); then
2010-07-02 11:11:00 -07:00
errno=`python -c "import errno;print(errno.${errconst})" 2>/dev/null`
fi
if [ "${errno}" = "" ] && ( command -v perl > /dev/null 2>&1 ); then
errno=`perl -MErrno -e "print &Errno::${errconst}.\"\n\";" 2>/dev/null`
2010-07-01 13:06:44 -07:00
fi
if [ "${errno}" = "" ] && ( command -v ruby > /dev/null 2>&1 ); then
2010-07-02 11:11:00 -07:00
errno=`ruby -e "puts Errno::${errconst}::Errno" 2>/dev/null`
2010-07-01 13:06:44 -07:00
fi
if [ "${errno}" = "" ] && [ -e /usr/include/errno.h ] ; then
2010-07-02 11:11:00 -07:00
errno=`cpp -dM /usr/include/errno.h | grep -E "${errconst}[[:space:]]+[0-9]+$" | grep -oE '[0-9]+' 2>/dev/null`
2010-07-01 13:06:44 -07:00
fi
if [ "${errno}" ] ; then
2010-07-02 11:11:00 -07:00
echo "${errconst} = ${errno}"
2010-07-01 13:06:44 -07:00
else
return 1
fi
;;
*)
2010-07-02 11:11:00 -07:00
errno=$1
2010-07-01 13:06:44 -07:00
unset errconst
if [ "${errconst}" = "" ] && ( command -v ruby > /dev/null 2>&1 ); then
2010-07-02 11:11:00 -07:00
errconst=`ruby -e "puts Errno.constants.find_all{|err| eval('Errno::' + err + '::Errno') == ${errno} }, ' = ${errno}'" 2>/dev/null`
fi
if [ "${errconst}" = "" ] && ( command -v python > /dev/null 2>&1 ); then
errconst=`python -c "import errno;print(errno.errorcode[${errno}] + ' = ${errno}')" 2>/dev/null`
2010-07-01 13:06:44 -07:00
fi
if [ "${errconst}" = "" ] && [ -e /usr/include/errno.h ] ; then
2010-07-02 11:11:00 -07:00
errconst=`cpp -dM /usr/include/errno.h | grep -E "E[[:alnum:]]+[[:space:]]+${errno}$"`
2010-07-01 13:06:44 -07:00
fi
if [ "${errconst}" ] ; then
echo $errconst
else
return 1
fi
;;
esac
2010-07-02 11:11:00 -07:00
unset errstr
if [ "${errstr}" = "" ] && ( command -v perl > /dev/null 2>&1 ) ; then
errstr=`perl -MPOSIX -e 'print strerror($ARGV[0])."\n";' $errno`
fi
if [ "${errstr}" = "" ] && ( command -v python > /dev/null 2>&1 ) ; then
errstr=`python -c "import os;print(os.strerror($errno))" 2>/dev/null`
fi
if [ "${errstr}" ] ; then
echo $errstr
else
return 2
fi
}
mkcd ()
{
if [ -d "$1" ] ; then
cd "$1"
return
fi
mkdir -p "$1" && cd "$1"
}
extract ()
{
2010-07-02 11:11:00 -07:00
if [ ! -f "$1" ] ; then
echo "The file ("$1") does not exist!"
2009-04-17 14:43:46 -05:00
return
fi
2010-07-02 11:11:00 -07:00
if ( command -v aunpack > /dev/null 2>&1 ) ; then
aunpack "${1}"
return
fi
filename=`echo "$1" | tr '[:upper:]' '[:lower:]'`
case "$filename" in
*.tar)
tar xf "${1}"
;;
2010-07-01 10:33:34 -07:00
*.tar.bz2|*.tbz2|*.tbz)
bzip2 -dc "${1}" | tar xf -
;;
*.tar.gz|*.tgz|*.tz)
gzip -dc "${1}" | tar xf -
;;
2010-07-01 10:33:34 -07:00
*.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}"
;;
2010-07-01 10:33:34 -07:00
*.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}"
2009-02-08 22:44:37 -06:00
;;
2010-07-01 10:33:34 -07:00
*.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: