-alias se=simple-extract
-
-# Usage: smartcompress <file> (<type>)
-#f5# Smart archive creator
-smartcompress() {
- emulate -L zsh
- if [[ -n $2 ]] ; then
- case $2 in
- tgz | tar.gz) tar -zcvf$1.$2 $1 ;;
- tbz2 | tar.bz2) tar -jcvf$1.$2 $1 ;;
- tar.Z) tar -Zcvf$1.$2 $1 ;;
- tar) tar -cvf$1.$2 $1 ;;
- gz | gzip) gzip $1 ;;
- bz2 | bzip2) bzip2 $1 ;;
- *)
- echo "Error: $2 is not a valid compression type"
- ;;
- esac
- else
- smartcompress $1 tar.gz
- fi
-}
-
-# Usage: show-archive <archive>
-#f5# List an archive's content
-show-archive() {
- emulate -L zsh
- if [[ -f $1 ]] ; then
- case $1 in
- *.tar.gz) gunzip -c $1 | tar -tf - -- ;;
- *.tar) tar -tf $1 ;;
- *.tgz) tar -ztf $1 ;;
- *.zip) unzip -l $1 ;;
- *.bz2) bzless $1 ;;
- *.deb) dpkg-deb --fsys-tarfile $1 | tar -tf - -- ;;
- *) echo "'$1' Error. Please go away" ;;
- esac
- else
- echo "'$1' is not a valid archive"
- fi
-}
-
-# It's shameless stolen from <http://www.vim.org/tips/tip.php?tip_id=167>
-#f5# Use \kbd{vim} as your manpage reader
-vman() {
- emulate -L zsh
- if (( ${#argv} == 0 )); then
- printf 'usage: vman <topic>\n'
- return 1
- fi
- man "$@" | col -b | view -c 'set ft=man nomod nolist' -
-}
-
-# function readme() { $PAGER -- (#ia3)readme* }
-#f5# View all README-like files in current directory in pager
-readme() {
- emulate -L zsh
- local files
- files=(./(#i)*(read*me|lue*m(in|)ut)*(ND))
- if (($#files)) ; then
- $PAGER $files
- else
- print 'No README files.'
- fi
-}
-
-# function ansi-colors()
-#f5# Display ANSI colors
-ansi-colors() {
- typeset esc="\033[" line1 line2
- echo " _ _ _40 _ _ _41_ _ _ _42 _ _ 43_ _ _ 44_ _ _45 _ _ _ 46_ _ _ 47_ _ _ 49_ _"
- for fore in 30 31 32 33 34 35 36 37; do
- line1="$fore "
- line2=" "
- for back in 40 41 42 43 44 45 46 47 49; do
- line1="${line1}${esc}${back};${fore}m Normal ${esc}0m"
- line2="${line2}${esc}${back};${fore};1m Bold ${esc}0m"
- done
- echo -e "$line1\n$line2"
- done
-}
-
-#f5# Find all files in \$PATH with setuid bit set
-suidfind() { ls -latg $path | grep '^...s' }
-
-# TODO: So, this is the third incarnation of this function!?
-#f5# Reload given functions
-refunc() {
- for func in $argv ; do
- unfunction $func
- autoload $func
- done
-}
-compdef _functions refunc
-
-# a small check to see which DIR is located on which server/partition.
-# stolen and modified from Sven's zshrc.forall
-#f5# Report diskusage of a directory
-dirspace() {
- emulate -L zsh
- if [[ -n "$1" ]] ; then
- for dir in "$@" ; do
- if [[ -d "$dir" ]] ; then
- ( cd $dir; echo "-<$dir>"; du -shx .; echo);
- else
- echo "warning: $dir does not exist" >&2
- fi
- done
- else
- for dir in $path; do
- if [[ -d "$dir" ]] ; then
- ( cd $dir; echo "-<$dir>"; du -shx .; echo);
- else
- echo "warning: $dir does not exist" >&2
- fi
- done
- fi
-}
-
-# % slow_print `cat /etc/passwd`
-#f5# Slowly print out parameters
-slow_print() {
- for argument in "$@" ; do
- for ((i = 1; i <= ${#1} ;i++)) ; do
- print -n "${argument[i]}"
- sleep 0.08
- done
- print -n " "
- done
- print ""
-}
-
-#f5# Show some status info
-status() {
- print
- print "Date..: "$(date "+%Y-%m-%d %H:%M:%S")
- print "Shell.: Zsh $ZSH_VERSION (PID = $$, $SHLVL nests)"
- print "Term..: $TTY ($TERM), ${BAUD:+$BAUD bauds, }$COLUMNS x $LINES chars"
- print "Login.: $LOGNAME (UID = $EUID) on $HOST"
- print "System: $(cat /etc/[A-Za-z]*[_-][rv]e[lr]*)"
- print "Uptime:$(uptime)"
- print
-}
-
-# Rip an audio CD
-#f5# Rip an audio CD
-audiorip() {
- mkdir -p ~/ripps
- cd ~/ripps
- cdrdao read-cd --device $DEVICE --driver generic-mmc audiocd.toc
- cdrdao read-cddb --device $DEVICE --driver generic-mmc audiocd.toc
- echo " * Would you like to burn the cd now? (yes/no)"
- read input
- if [[ "$input" = "yes" ]] ; then
- echo " ! Burning Audio CD"
- audioburn
- echo " * done."
- else
- echo " ! Invalid response."
- fi
-}
-
-# and burn it
-#f5# Burn an audio CD (in combination with audiorip)
-audioburn() {
- cd ~/ripps
- cdrdao write --device $DEVICE --driver generic-mmc audiocd.toc
- echo " * Should I remove the temporary files? (yes/no)"
- read input
- if [[ "$input" = "yes" ]] ; then
- echo " ! Removing Temporary Files."
- cd ~
- rm -rf ~/ripps
- echo " * done."
- else
- echo " ! Invalid response."
- fi
-}
-
-#f5# Make an audio CD from all mp3 files
-mkaudiocd() {
- # TODO: do the renaming more zshish, possibly with zmv()
- emulate -L zsh
- cd ~/ripps
- for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
- for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done
- for i in *.mp3; do mpg123 -w `basename $i .mp3`.wav $i; done
- normalize -m *.wav
- for i in *.wav; do sox $i.wav -r 44100 $i.wav resample; done
-}
-
-#f5# Create an ISO image. You are prompted for\\&\quad volume name, filename and directory
-mkiso() {
- emulate -L zsh
- echo " * Volume name "
- read volume
- echo " * ISO Name (ie. tmp.iso)"
- read iso
- echo " * Directory or File"
- read files
- mkisofs -o ~/$iso -A $volume -allow-multidot -J -R -iso-level 3 -V $volume -R $files
-}
-
-#f5# Simple thumbnails generator
-genthumbs() {
- rm -rf thumb-* index.html
- echo "
-<html>
- <head>
- <title>Images</title>
- </head>
- <body>" > index.html
- for f in *.(gif|jpeg|jpg|png) ; do
- convert -size 100x200 "$f" -resize 100x200 thumb-"$f"
- echo " <a href=\"$f\"><img src=\"thumb-$f\"></a>" >> index.html
- done
- echo "
- </body>
-</html>" >> index.html
-}
-
-#f5# Set all ulimit parameters to \kbd{unlimited}
-allulimit() {
- ulimit -c unlimited
- ulimit -d unlimited
- ulimit -f unlimited
- ulimit -l unlimited
- ulimit -n unlimited
- ulimit -s unlimited
- ulimit -t unlimited
-}
-
-# 2mp3 transcodes flac and ogg to mp3 with bitrate of 192 while preserving basic tags
-if check_com lame; then
- 2mp3_192() {
- emulate -L zsh
- setopt extendedglob
- unsetopt ksharrays
-
- local -a DECODE id3tags
- local -A tagmap
- local tagdata
- local RC=0
- tagmap=("(#l)title" --tt "(#l)artist" --ta "(#l)tracknumber" --tn "(#l)genre" --tg "(#l)album" --tl)
-
- if [[ ${@[(i)*.ogg]} -le ${#@} ]] && ! check_com oggdec; then
- echo "ERROR: please install oggdec" >&2
- return 1
- fi
- if [[ ${@[(i)*.flac]} -le ${#@} ]] && ! check_com flac; then
- echo "ERROR: please install flac" >&2
- return 1
- fi
-
- for af in "$@"; do
- id3tags=()
- case "$af" in
- (*.flac)
- DECODE=(flac -d -c "$af")
- tagdata="$(metaflac --export-tags-to=- "$af")"
- ;;
- (*.ogg)
- DECODE=(oggdec -Q -o - "$af")
- tagdata="$(ogginfo "$af")"
- ;;
- (*) continue ;;
- esac
- for line (${(f)tagdata}) \
- [[ "$line" == (#s)[[:space:]]#(#b)([^=]##)=(*)(#e) && -n $tagmap[(k)$match[1]] ]] && \
- id3tags+=($tagmap[(k)$match[1]] "$match[2]")
- [[ ${#id3tags} -gt 0 ]] && id3tags=(--add-id3v2 --ignore-tag-errors $id3tags)
- $DECODE[*] | lame -b 192 -v -h --replaygain-fast "${id3tags[@]}" - "${af:r}.mp3" || {RC=$?; print "Error transcoding" "${af}"; }
- done
- # return 0 if no error or exit code if at least one error happened
- return $RC
- }
- alias ogg2mp3_192 2mp3_192
-fi
-
-#f5# RFC 2396 URL encoding in Z-Shell
-urlencode() {
- emulate -L zsh
- setopt extendedglob
- input=( ${(s::)1} )
- print ${(j::)input/(#b)([^A-Za-z0-9_.!~*\'\(\)-])/%${(l:2::0:)$(([##16]#match))}}
-}
-
-# http://strcat.de/blog/index.php?/archives/335-Software-sauber-deinstallieren...html
-#f5# Log 'make install' output
-mmake() {
- emulate -L zsh
- [[ ! -d ~/.errorlogs ]] && mkdir ~/.errorlogs
- make -n install > ~/.errorlogs/${PWD##*/}-makelog
-}
-
-#f5# Indent source code
-smart-indent() {
- indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs "$@"
-}
-
-# highlight important stuff in diff output, usage example: hg diff | hidiff
-#m# a2 hidiff \kbd{histring} oneliner for diffs
-check_com -c histring && \
- alias hidiff="histring -fE '^Comparing files .*|^diff .*' | histring -c yellow -fE '^\-.*' | histring -c green -fE '^\+.*'"
-
-# rename pictures based on information found in exif headers
-#f5# Rename pictures based on information found in exif headers
-exirename() {
- emulate -L zsh
- if [[ $# -lt 1 ]] ; then
- echo 'Usage: jpgrename $FILES' >& 2
- return 1
- else
- echo -n 'Checking for jhead with version newer than 1.9: '
- jhead_version=`jhead -h | grep 'used by most Digital Cameras. v.*' | awk '{print $6}' | tr -d v`
- if [[ $jhead_version > '1.9' ]]; then
- echo 'success - now running jhead.'
- jhead -n%Y-%m-%d_%Hh%M_%f $*
- else
- echo 'failed - exiting.'
- fi
- fi
-}
-
-# get_ic() - queries imap servers for capabilities; real simple. no imaps
-ic_get() {
- emulate -L zsh
- local port
- if [[ ! -z $1 ]] ; then
- port=${2:-143}
- print "querying imap server on $1:${port}...\n";
- print "a1 capability\na2 logout\n" | nc $1 ${port}
- else
- print "usage:\n $0 <imap-server> [port]"
- fi
-}
-
-# creates a Maildir/ with its {new,cur,tmp} subdirs
-mkmaildir() {
- emulate -L zsh
- local root subdir
- root=${MAILDIR_ROOT:-${HOME}/Mail}
- if [[ -z ${1} ]] ; then print "Usage:\n $0 <dirname>" ; return 1 ; fi
- subdir=${1}
- mkdir -p ${root}/${subdir}/{cur,new,tmp}
-}