--- /dev/null
+grml-etc-core (0.1-19) unstable; urgency=low
+
+ * /etc/grml/screenrc: activated
+ termcapinfo xterm|xterms|xs|rxvt ti@:te@
+ for "more usual" buffer handling in xterm & CO.
+
+ -- Michael Prokop <mika@grml.org> Sat, 14 Oct 2006 22:56:23 +0200
+
+grml-etc-core (0.1-18) unstable; urgency=low
+
+ * /etc/skel/.zshrc: update function getskype (new upstream release
+ which does not require s/libqt3c102-mt/libqt3-mt/ workaround anymore.
+
+ -- Michael Prokop <mika@grml.org> Mon, 9 Oct 2006 14:48:22 +0200
+
+grml-etc-core (0.1-17) unstable; urgency=low
+
+ * /etc/zsh/zshrc: don't check whether we can read xorg.conf but if it
+ exists. Check for /usr/X11R6/bin/startx if /usr/bin/startx does not exist
+ and check for /usr/X11R6/bin/xinit if /usr/bin/xinit is not present.
+
+ -- Michael Prokop <mika@grml.org> Sun, 8 Oct 2006 01:43:24 +0200
+
+grml-etc-core (0.1-16) unstable; urgency=low
+
+ * /etc/zsh/zshrc: don't use colors on dumb terminals (like emacs)
+ * Move debian/postinst to debian/preinst, some minor fixes in
+ preinst and postrm.
+
+ -- Michael Prokop <mika@grml.org> Mon, 2 Oct 2006 23:46:55 +0200
+
+grml-etc-core (0.1-15) unstable; urgency=low
+
+ * Set debian related functions + aliases only if /etc/debian_version
+ is present. Check for uid and set $SUDO according so normal
+ user can use functions + aliases as well.
+
+ -- Michael Prokop <mika@grml.org> Fri, 29 Sep 2006 14:35:32 +0200
+
+grml-etc-core (0.1-14) unstable; urgency=low
+
+ * /etc/zsh/zshrc: instead of our predict-function use ctrl-z
+ to put job into foreground (thanks, wuehlmaus).
+
+ -- Michael Prokop <mika@grml.org> Fri, 29 Sep 2006 14:09:30 +0200
+
+grml-etc-core (0.1-13) unstable; urgency=low
+
+ * /etc/zsh/zshrc: added alias truec - thanks, Mark!
+
+ -- Michael Prokop <mika@grml.org> Thu, 28 Sep 2006 23:06:41 +0200
+
+grml-etc-core (0.1-12) unstable; urgency=low
+
+ * Cleanup and update of /etc/apt/sources.list.grml.
+ * /etc/zsh/zshrc: add functions dchange (Debian's changelog of specified
+ package) and uchange (view upstream's changelog of specified package).
+
+ -- Michael Prokop <mika@grml.org> Thu, 28 Sep 2006 15:42:43 +0200
+
+grml-etc-core (0.1-11) unstable; urgency=low
+
+ * /etc/zsh/zshenv: don't set $LC_ALL anymore if it isn't set
+ in environment files.
+
+ -- Michael Prokop <mika@grml.org> Sat, 23 Sep 2006 14:20:42 +0200
+
+grml-etc-core (0.1-10) unstable; urgency=low
+
+ * /etc/zsh/zshrc: improved startx + xinit alias, thanks to
+ Worf for idea!
+ * /etc/skel/.zshrc: set browser to firefox if $DISPLAY is set
+
+ -- Michael Prokop <mika@grml.org> Sat, 23 Sep 2006 12:21:32 +0200
+
+grml-etc-core (0.1-9) unstable; urgency=low
+
+ * /etc/zsh/zshenv: add /cdrom/addons/ to $PATH if the directory
+ is present.
+ * /etc/zsh/zshrc: "complete 'cd -<tab' with menu", press esc-v to
+ delete a word until its last '/'
+
+ -- Michael Prokop <mika@grml.org> Thu, 21 Sep 2006 19:29:02 +0200
+
+grml-etc-core (0.1-8) unstable; urgency=low
+
+ * Depend on 'vim | nvi' so we can use grml-etc-core on grml-small
+ as well.
+
+ -- Michael Prokop <mika@grml.org> Mon, 18 Sep 2006 19:42:16 +0200
+
+grml-etc-core (0.1-7) unstable; urgency=low
+
+ * /etc/skel/.zshrc: added function getair (get AIR - Automated Image and
+ Restore).
+
+ -- Michael Prokop <mika@grml.org> Mon, 18 Sep 2006 18:55:01 +0200
+
+grml-etc-core (0.1-6) unstable; urgency=low
+
+ * Remove /etc/grml/script-functions, ship it with package grml-scripts.
+
+ -- Michael Prokop <mika@grml.org> Mon, 18 Sep 2006 00:46:00 +0200
+
+grml-etc-core (0.1-5) unstable; urgency=low
+
+ * /etc/zsh/zshrc:
+ - press "ctrl-e d" to insert the actual date in the form
+ yyyy-mm-dd (found in schulas zsh config :))
+ - complete manual pages by their section (hello schula,
+ again ;-))
+
+ -- Michael Prokop <mika@grml.org> Sun, 17 Sep 2006 16:46:44 +0200
+
+grml-etc-core (0.1-4) unstable; urgency=low
+
+ * /etc/zsh/zshrc: support 'BATTERY=1 zsh' (display battery
+ status on right side of prompt.
+
+ -- Michael Prokop <mika@grml.org> Sun, 17 Sep 2006 14:19:09 +0200
+
+grml-etc-core (0.1-3) unstable; urgency=low
+
+ * /etc/zsh/zshrc: added alias ll (ls -hAl --color=auto'), thanks
+ for suggestion, Mark!
+ * /etc/apt/sources.list.grml: added entry for xfce sources, thanks
+ Mark!
+ * Added /etc/grml/script-functions meant for usage inside shell
+ scripts.
+
+ -- Michael Prokop <mika@grml.org> Sat, 16 Sep 2006 10:39:52 +0200
+
+grml-etc-core (0.1-2) unstable; urgency=low
+
+ * /etc/skel/.zshrc: updated function wodeb(), thanks wuehlmaus!
+
+ -- Michael Prokop <mika@grml.org> Fri, 15 Sep 2006 17:53:35 +0200
+
+grml-etc-core (0.1) unstable; urgency=low
+
+ * Initial Release.
+
+ -- Michael Prokop <mika@grml.org> Tue, 12 Sep 2006 15:45:23 +0200
+
--- /dev/null
+Source: grml-etc-core
+Section: grml
+Priority: optional
+Maintainer: Michael Prokop <mika@grml.org>
+Build-Depends: debhelper (>= 4.0.0)
+Standards-Version: 3.6.2
+
+Package: grml-etc-core
+Architecture: all
+Conflicts: grml-etc (<< 0.8-11), grml-autoconfig (<< 0.5-7)
+Depends: vim | nvi, zsh
+Description: core ecetera files for the grml system
+ This package includes some /etc files for the
+ grml system. Whereas the main grml-etc package is
+ meant for use on grml systems this package can be
+ used on plain Debian (stable/testing/unstable)
+ systems as well.
--- /dev/null
+This package was debianized by Michael Prokop <mika@grml.org> on
+Tue, 12 Sep 2006 15:45:23 +0200.
+
+It was downloaded from http://grml.org/
+
+Copyright Holder: Michael Prokop <mika@grml.org>
+
+Copyright:
+
+ This software is copyright (c) 2004-2006 by Michael Prokop.
+
+ This package 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; version 2 dated June, 1991.
+
+ This package 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 package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301, USA.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
--- /dev/null
+etc/skel
+etc/zsh
--- /dev/null
+#!/bin/sh
+# Filename: postrm
+# Purpose: postrm script for package grml-etc-core
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Fre Sep 15 13:17:19 CEST 2006 [mika]
+################################################################################
+
+set -e
+
+TO_UNDIVERT1="zlogin zlogout zprofile zshenv zshrc"
+TO_UNDIVERT2=".zshrc"
+TO_UNDIVERT3="vimrc"
+
+undivert_gen() {
+ if [ -f "$2/$1" -o "$2/$1".original ] ; then
+ DEXT=${3:-original}
+ dpkg-divert --remove --rename --package grml-etc-core \
+ --divert $2/$1.$DEXT $2/$1 #> /dev/null
+ fi
+}
+
+case "$1" in
+ purge)
+ for cmd in $TO_UNDIVERT1; do
+ undivert_gen $cmd /etc/zsh
+ done
+ for cmd in $TO_UNDIVERT2; do
+ undivert_gen $cmd /etc/skel
+ done
+ for cmd in $TO_UNDIVERT3; do
+ undivert_gen $cmd /etc/vim
+ done
+ ;;
+ remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+ *)
+ echo "postrm called with unknown argument $1" >&2
+ exit 1
+esac
+
+exit 0
+
+## END OF FILE #################################################################
--- /dev/null
+#!/bin/sh
+# Filename: preinst
+# Purpose: preinst script for package grml-etc-core
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Die Okt 03 20:33:19 CEST 2006 [mika]
+################################################################################
+
+set -e
+
+# check for files from rm_conffile() in debian/preinst of grml-etc
+# make sure we don't lose any files...
+divert_conffile() {
+ CONFFILE="$1"
+
+ if [ -e "$CONFFILE.dpkg-bak" ]; then
+ cp -f "$CONFFILE" "$CONFFILE".original
+ else
+ [ -e "$CONFFILE" ] && cp -f "$CONFFILE" "$CONFFILE".grml-etc-core
+ [ -e "$CONFFILE" ] && cp -f "$CONFFILE" "$CONFFILE".original
+ fi
+}
+
+case "$1" in
+ install|upgrade|configure)
+ # move files from package grml-etc to grml-etc-core, make sure
+ # we don't lose any files...
+ for file in /etc/zsh/zlogin /etc/zsh/zprofile /etc/zsh/zshenv /etc/zsh/zshrc \
+ /etc/zsh/zlogout /etc/skel/.zshrc /etc/vim/vimrc; do
+ divert_conffile $file && \
+ [ -f "$file" ] && rm $file && \
+ dpkg-divert --quiet --add --rename --package grml-etc-core --divert "$file".original $file && \
+ [ -f "$file".dpkg-bak ] && mv -f "$file".dpkg-bak "$file"
+ [ -f "$file".grml-etc-core ] && mv -f "$file".grml-etc-core "$file"
+
+ # trying to overwrite `/etc/skel/.zshrc', which is also in package zsh
+ # [ -f /etc/skel/.zshrc ] && \
+ # dpkg-divert --quiet --add --rename --package grml-etc-core --divert /etc/skel/.zshrc.original /etc/skel/.zshrc
+ done
+
+ ;;
+ *)
+ echo "preinst called with unknown argument $1" >&2
+ exit 1
+esac
+
+exit 0
+
+## END OF FILE #################################################################
--- /dev/null
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+build: build-stamp
+
+build-stamp:
+ dh_testdir
+
+ touch build-stamp
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp
+
+ dh_clean
+ rm -rf debian/grml-etc-core/
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/grml-etc-core.
+ cp -a etc/ debian/grml-etc-core/
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ #find debian/grml-etc-core/etc -type f ! -name \*.xpm ! -name \*.png -print | \
+ #sed -e 's#^debian/grml-etc-core##g' > debian/grml-etc-core/DEBIAN/conffiles
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
--- /dev/null
+# Filename: sources.list
+# Purpose: specify ressources for debian's package management system
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Don Sep 28 15:02:09 CEST 2006 [mika]
+################################################################################
+# Notice: because of ressource limits some lines might have been commented
+# out on the grml live CD system. Just uncomment lines containing
+# '#1#' at the beginning to get a "full featured" debian system on your
+# hard disc.
+#
+# See sources.list(5) for more information, especialy
+# Remember that you can only use http, ftp or file URIs
+# CDROMs are managed through the apt-cdrom tool.
+#
+# Also check out
+# http://www.apt-get.org/
+# http://www.debianforum.de/wiki/WoodyBackports
+# http://www.backports.org/
+##############################################################################
+
+# main grml repository:
+ deb http://grml.org/repos/ ./
+ deb-src http://grml.org/repos/ ./
+
+# Unstable:
+# TU Graz mirror
+# deb http://ftp.tu-graz.ac.at/mirror/debian unstable main contrib non-free
+# deb-src http://ftp.tu-graz.ac.at/mirror/debian unstable main contrib non-free
+# Use mirror from VC-Graz without authentication:
+# deb http://10.0.0.5/mirror/debian unstable main contrib non-free
+
+# AT/DE mirror:
+ deb http://ftp.de.debian.org/debian unstable main contrib non-free
+ deb-src http://ftp.de.debian.org/debian/ unstable main contrib non-free
+# deb http://ftp.at.debian.org/debian unstable main contrib non-free
+# deb-src http://ftp.at.debian.org/debian/ unstable main contrib non-free
+
+# http://volatile.debian.net/
+# deb http://ftp2.de.debian.org/debian-volatile stable/volatile main
+# deb-src http://ftp2.de.debian.org/debian-volatile stable/volatile main
+
+# Experimental:
+#1# deb http://ftp.de.debian.org/debian/ experimental main contrib non-free
+#1# deb-src http://ftp.de.debian.org/debian/ experimental main contrib non-free
+# deb http://ftp.tu-graz.ac.at/mirror/debian experimental main contrib non-free
+# deb-src http://ftp.tu-graz.ac.at/mirror/debian experimental main contrib non-free
+
+# Security updates:
+#1# deb http://security.debian.org stable/updates main contrib non-free
+#1# deb-src http://security.debian.org stable/updates main contrib non-free
+
+# gebi's packages for grml (grml-terminalserver, grml-vpn, grml-crypt,...):
+#1# deb http://einsteinmg.dyndns.org/debian unstable/
+#1# deb-src http://einsteinmg.dyndns.org/debian unstable/
+
+# jimmy's packages for grml (gcom):
+#1# deb http://debian.g-tec.co.at/ unstable main
+#1# deb-src http://debian.g-tec.co.at/ unstable main
+
+# unofficial debian packages:
+#1# deb http://ftp.debian-unofficial.org/debian sarge main contrib non-free restricted
+#1# deb-src http://ftp.debian-unofficial.org/debian sarge main contrib non-free restricted
+
+# MPEG, divx...:
+#1# deb http://www.debian-multimedia.org sid main
+#1# deb-src http://www.debian-multimedia.org sid main
+
+# kwtools:
+# deb ftp://ftp.berlios.de/pub/netzworkk/scripts/kwtools/Debian/stable/ ./
+# deb-src ftp://ftp.berlios.de/pub/netzworkk/scripts/kwtools/Debian/stable/ ./
+#1# deb ftp://server.mamemu.de/pub/kwtools/Debian/unstable/ ./
+#1# deb-src ftp://server.mamemu.de/pub/kwtools/Debian/unstable/ ./
+#1# deb ftp://server.mamemu.de/pub/kwtools/Debian/stable/ ./
+#1# deb-src ftp://server.mamemu.de/pub/kwtools/Debian/stable/ ./
+
+# cpm
+#1# deb http://debian.harry-b.de/ binary/
+
+# ara, pcopy,...:
+#1# deb ftp://ftp.uni-sofia.bg/debian-addons-bg ./
+#1# deb-src ftp://ftp.uni-sofia.bg/debian-addons-bg ./
+
+# tex-refs:
+#1# deb http://www.miwie.org/ ./
+
+# bkp:
+#1# deb http://opensource.polytechnique.org/debian/ ./
+#1# deb-src http://opensource.polytechnique.org/debian/ ./
+
+# camgrab update-apt:
+#1# deb http://www.steve.org.uk/apt sarge main contrib non-free
+#1# deb-src http://www.steve.org.uk/apt sarge main contrib non-free
+
+# olsr:
+#1# deb http://www.skyhub.de/debian/ unstable main
+#1# deb-src http://www.skyhub.de/debian/ unstable main
+
+# ext3rminator:
+#1# deb http://web.glandium.org/debian/repository/experimental/ ./
+#1# deb-src http://web.glandium.org/debian/repository/experimental/ ./
+
+# kenny
+#1# deb http://www.cgarbs.de/stuff ./
+#1# deb-src http://www.cgarbs.de/stuff ./
+
+# synctree:
+#1# deb http://www.knizefamily.net/russ/software/debian/ ./
+#1# deb-src http://www.knizefamily.net/russ/software/debian/ ./
+
+# musepack-decoder musepack-encoder musepack-replaygain
+# be careful with libfaad2 <-> mplayer!
+##1# deb http://www.rarewares.org/debian/packages/unstable/ ./
+
+################################################################################
+# Diff stuff:
+# ===========
+#
+# get specific debian package:
+# deb http://snapshot.debian.net/archive/2005/03/27/debian unstable main contrib non-free
+# deb http://snapshot.debian.net/archive/date/last-week/debian unstable main contrib non-free
+# deb http://snapshot.debian.net/archive pool packagename1 packagename2
+
+# Backports:
+# deb http://www.backports.org/debian stable package1 ...
+# deb-src http://www.backports.org/debian stable package1 ...
+
+# mentors:
+# deb-src http://mentors.debian.net/debian unstable main contrib non-free
+
+# apt-build:
+# deb file:/var/cache/apt-build/repository apt-build main
+
+# cd-rom:
+# deb cdrom:[Debian GNU/Linux 2.2 r3 _Potato_ - Official i386 Binary-1 (20010427)]/ unstable contrib main
+
+# Stable:
+# deb http://ftp.de.debian.org/pub/debian stable main contrib non-free
+# deb-src http://ftp.de.debian.org/pub/debian stable main contrib non-free
+
+# Testing:
+# deb http://ftp.de.debian.org/pub/debian testing main contrib non-free
+# deb-src http://ftp.de.debian.org/pub/debian testing main contrib non-free
+
+# Testing Sources
+# deb-src http://ftp.de.debian.org/pub/debian testing main contrib non-free
+# deb http://security.debian.org testing/updates main contrib non-free
+
+# Debian Cluster Components - http://dcc.irb.hr/ (apt-get install dcc-front debconf-dcc):
+# deb ftp://ftp.irb.hr/pub/irb/dcc ./
+
+# jEdit Debian packages (make sure you have Java first):
+# deb http://dl.sourceforge.net/sourceforge/jedit ./
+# deb-src http://dl.sourceforge.net/sourceforge/jedit ./
+
+# packages for the Debian stable (aka "Sarge") distribution:
+# deb http://packages.dotdeb.org stable all
+# deb-src http://packages.dotdeb.org stable all
+
+# nobses packages:
+# deb http://people.debian.org/~nobse/debian/ unstable/
+# deb-src http://people.debian.org/~nobse/debian/ unstable/
+
+# e17/elive:
+# deb http://idefix.eup.uva.es/elive elive main efl elive
+# deb http://www.soulmachine.net/debian/ unstable
+
+# libcairo, libpixman1 (-> wmii):
+# deb http://cairographics.org/packages/debian/ unstable/
+# deb-src http://cairographics.org/packages/debian/ unstable/
+
+# moc / mutt-ng:
+# deb http://www.lxtec.de/debarchiv binary-i386/
+# deb-src http://www.lxtec.de/debarchiv sources/
+
+# debian.pkgs.cpan.org -- debified CPAN packages:
+# deb http://debian.pkgs.cpan.org/debian unstable main
+
+# Very latest bleeding edge XFCE releases
+# To include the signing key use this command,
+# wget -O - http://www.corsac.net/corsac.asc | sudo apt-key add -
+#
+# deb http://xfce.corsac.net sid main
+# deb http://xfce.corsac.net unstable main
+# deb-src http://xfce.corsac.net unstable main
+
+# centericq (4.9.12-4) by Julien Lemoine:
+# deb http://debian.speedblue.org ./
+# deb-src http://debian.speedblue.org ./
+# centericq-cvs (out of date - 20041120):
+# deb http://debian.parsed.net unstable main
+# deb-src http://debian.parsed.net unstable main
+# centericq by Marc Thoben (includes quote/ask-quit patches @cicq 4.9.10-8):
+# deb http://ipxserver.dyndns.org/debian unstable centericq
+
+# opengroupware:
+# deb http://download.opengroupware.org/nightly/packages/debian/dists/sid/trunk/binary-i386/ ./
+
+# bitlbee devel-version:
+# deb http://get.bitlbee.org/devel/ ./
+
+# kanotix-packages:
+# deb http://kanotix.com/files/debian/ ./
+# deb-src http://kanotix.com/files/debian/ ./
+
+# kde 3.5:
+# deb http://pkg-kde.alioth.debian.org/3.5.3/ ./
+
+# http://xoomer.virgilio.it/flavio.stanchina/debian/fglrx-installer.html
+# deb http://www.stanchina.net/~flavio/debian/ ./
+# deb-src http://www.stanchina.net/~flavio/debian/ ./
+
+# opera:
+# deb http://deb.opera.com/opera/ unstable non-free
+
+# silc-client:
+# deb http://silcnet.org/download/client/deb ./
+# deb-src http://silcnet.org/download/client/deb ./
+# silc-server:
+# deb http://silcnet.org/download/server/deb ./
+# deb-src http://silcnet.org/download/server/deb ./
+
+# Joey Hess's bleeding edge repository (get any of his packages, before they hit Incoming)
+# deb http://kitenet.net/~joey/debian/unstable/ ./
+
+# remaster:
+# deb http://debian.tu-bs.de/knoppix/remaster/ ./
+
+# Ubuntu (releases: warty / hoary / breezy / dapper / edgy):
+# deb http://archive.ubuntu.com/ubuntu/ hoary main restricted universe multiverse
+# deb http://archive.ubuntu.com/ubuntu/ hoary main universe
+# deb http://archive.ubuntu.com/ubuntu/ breezy main restricted universe multiverse
+# deb http://security.ubuntu.com/ubuntu/ hoary-security main restricted
+# deb-src http://security.ubuntu.com/ubuntu/ hoary-security main restricted
+
+# acx100 firmware:
+# deb http://stef.tvk.rwth-aachen.de/~nazgul/debian acx100/
+
+# c't project
+# deb ftp://ftp.heise.de/pub/ct/projekte/vdr/sarge/testing/binary base/
+
+### END OF FILE ################################################################
--- /dev/null
+# lsb init-functions {{{
+# /lib/lsb/init-functions for Debian -*- shell-script -*-
+#
+# Copyright (c) 2002-03 Chris Lawrence
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. Neither the name of the author nor the names of other contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+log_success_msg () {
+ echo " * $@"
+}
+
+log_failure_msg () {
+ TPUT=/usr/bin/tput
+ if [ -x $TPUT ] && $TPUT hpa 60 >/dev/null 2>&1; then
+ RED=`$TPUT setaf 1`
+ #NORMAL=`$TPUT op`
+ echo " ${RED}*${NORMAL} $@"
+ else
+ echo " * $@"
+ fi
+}
+
+log_warning_msg () {
+ TPUT=/usr/bin/tput
+ if [ -x $TPUT ] && $TPUT hpa 60 >/dev/null 2>&1; then
+ YELLOW=`$TPUT setaf 3`
+ #NORMAL=`$TPUT op`
+ # echo " *${NORMAL} $@"
+ echo " ${BLUE}*${NORMAL} $@"
+ else
+ echo " * $@"
+ fi
+}
+
+log_warning_msg_nn () {
+ TPUT=/usr/bin/tput
+ if [ -x $TPUT ] && $TPUT hpa 60 >/dev/null 2>&1; then
+ YELLOW=`$TPUT setaf 3`
+ echo -n " ${BLUE}*${NORMAL} $@"
+ else
+ echo -n " * $@"
+ fi
+}
+
+# int log_begin_message (char *message)
+log_begin_msg () {
+ if [ -z "$1" ]; then
+ return 1
+ fi
+ echo " ${GREEN}*${NORMAL} $@"
+}
+
+log_begin_msg_nn () {
+ if [ -z "$1" ]; then
+ return 1
+ fi
+ echo -n " ${GREEN}*${NORMAL} $@"
+}
+
+
+SUBMSG=" ${GREEN}-${NORMAL} "
+
+# int log_end_message (int exitstatus)
+log_end_msg () {
+
+ # If no arguments were passed, return
+ [ -z "$1" ] && return 1
+
+ # Only do the fancy stuff if we have an appropriate terminal
+ # and if /usr is already mounted
+ TPUT=/usr/bin/tput
+ EXPR=/usr/bin/expr
+ if [ -x $TPUT ] && [ -x $EXPR ] && $TPUT hpa 60 >/dev/null 2>&1; then
+ COLS=`$TPUT cols`
+ if [ -n "$COLS" ]; then
+ COL=`$EXPR $COLS - 7`
+ else
+ COL=73
+ fi
+ UP=`$TPUT cuu1`
+ END=`$TPUT hpa $COL`
+ START=`$TPUT hpa 0`
+ #RED=`$TPUT setaf 1`
+ #NORMAL=`$TPUT op`
+ if [ $1 -eq 0 ]; then
+ echo "$UP$END${BLUE}[ ${GREEN}ok ${BLUE}]${NORMAL}"
+ else
+ echo -e "${UP}${START} ${RED}*${NORMAL}${END}[${RED}fail${NORMAL}]"
+ fi
+ else
+ if [ $1 -eq 0 ]; then
+ echo " ...done."
+ else
+ echo " ...fail!"
+ fi
+ fi
+ return $1
+}
+
+# void esyslog(char* priority, char* tag, char* message)
+# use the system logger to log a message
+#esyslog() {
+# local pri=
+# local tag=
+#
+# if [ -x /usr/bin/logger ]
+# then
+# pri="$1"
+# tag="$2"
+#
+# shift 2
+# [[ -z "$*" ]] && return 0
+#
+# /usr/bin/logger -p "${pri}" -t "${tag}" -- "$*"
+# fi
+#
+# return 0
+#}
+
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-src/rc-scripts/sbin/functions.sh,v 1.81.2.6 2005/05/15 20:00:31 vapier Exp $
+
+RC_GOT_FUNCTIONS="yes"
+
+# Different types of dependencies
+deptypes="need use"
+# Different types of order deps
+ordtypes="before after"
+
+#
+# Internal variables
+#
+
+# Dont output to stdout?
+RC_QUIET_STDOUT="no"
+RC_VERBOSE="${RC_VERBOSE:-no}"
+
+# Should we use color?
+RC_NOCOLOR="${RC_NOCOLOR:-no}"
+# Can the terminal handle endcols?
+RC_ENDCOL="yes"
+
+#
+# Default values for rc system
+#
+RC_TTY_NUMBER=11
+RC_NET_STRICT_CHECKING="no"
+RC_PARALLEL_STARTUP="no"
+RC_USE_CONFIG_PROFILE="yes"
+
+#
+# Default values for e-message indentation and dots
+#
+RC_INDENTATION=''
+RC_DEFAULT_INDENT=2
+#RC_DOT_PATTERN=' .'
+RC_DOT_PATTERN=''
+
+# void splash(...)
+#
+# Notify bootsplash/splashutils/gensplash/whatever about
+# important events.
+#
+splash() {
+ return 0
+}
+
+# void profiling(...)
+#
+# Notify bootsplash/whatever about important events.
+#
+profiling() {
+ return 0
+}
+
+# void get_bootconfig()
+#
+# Get the BOOTLEVEL and SOFTLEVEL by setting
+# 'bootlevel' and 'softlevel' via kernel
+# parameters.
+#
+get_bootconfig() {
+ local copt=
+ local newbootlevel=
+ local newsoftlevel=
+
+ for copt in $(</proc/cmdline) ; do
+ case "${copt%=*}" in
+ "bootlevel")
+ newbootlevel="${copt##*=}"
+ ;;
+ "softlevel")
+ newsoftlevel="${copt##*=}"
+ ;;
+ esac
+ done
+
+ if [ -n "${newbootlevel}" ] ; then
+ export BOOTLEVEL="${newbootlevel}"
+ else
+ export BOOTLEVEL="boot"
+ fi
+
+ if [ -n "${newsoftlevel}" ] ; then
+ export DEFAULTLEVEL="${newsoftlevel}"
+ else
+ export DEFAULTLEVEL="default"
+ fi
+
+ return 0
+}
+
+# void get_libdir(void)
+#
+# prints the current libdir {lib,lib32,lib64}
+#
+get_libdir() {
+ if [ -n "${CONF_LIBDIR_OVERRIDE}" ] ; then
+ CONF_LIBDIR="${CONF_LIBDIR_OVERRIDE}"
+ elif [ -x "/usr/bin/portageq" ] ; then
+ CONF_LIBDIR="$(/usr/bin/portageq envvar CONF_LIBDIR)"
+ fi
+ echo ${CONF_LIBDIR:=lib}
+}
+
+# void esyslog(char* priority, char* tag, char* message)
+#
+# use the system logger to log a message
+#
+esyslog() {
+ local pri=
+ local tag=
+
+ if [ -x /usr/bin/logger ]
+ then
+ pri="$1"
+ tag="$2"
+
+ shift 2
+ [[ -z "$*" ]] && return 0
+
+ /usr/bin/logger -p "${pri}" -t "${tag}" -- "$*"
+ fi
+
+ return 0
+}
+
+# void eindent(int num)
+#
+# increase the indent used for e-commands.
+#
+eindent() {
+ local i=$1
+ (( i > 0 )) || (( i = RC_DEFAULT_INDENT ))
+ esetdent $(( ${#RC_INDENTATION} + i ))
+}
+
+# void eoutdent(int num)
+#
+# decrease the indent used for e-commands.
+#
+eoutdent() {
+ local i=$1
+ (( i > 0 )) || (( i = RC_DEFAULT_INDENT ))
+ esetdent $(( ${#RC_INDENTATION} - i ))
+}
+
+# void esetdent(int num)
+#
+# hard set the indent used for e-commands.
+# num defaults to 0
+#
+esetdent() {
+ local i=$1
+ (( i < 0 )) && (( i = 0 ))
+ RC_INDENTATION=$(printf "%${i}s" '')
+}
+
+# void einfo(char* message)
+#
+# show an informative message (with a newline)
+#
+einfo() {
+ einfon "$*\n"
+ LAST_E_CMD=einfo
+ return 0
+}
+
+# void einfon(char* message)
+#
+# show an informative message (without a newline)
+#
+einfon() {
+ [[ ${RC_QUIET_STDOUT} == yes ]] && return 0
+ [[ ${RC_ENDCOL} != yes && ${LAST_E_CMD} == ebegin ]] && echo
+ echo -ne " ${GOOD}*${NORMAL} ${RC_INDENTATION}$*"
+ LAST_E_CMD=einfon
+ return 0
+}
+
+# void ewarn(char* message)
+#
+# show a warning message + log it
+#
+ewarn() {
+ if [[ ${RC_QUIET_STDOUT} == yes ]]; then
+ echo " $*"
+ else
+ [[ ${RC_ENDCOL} != yes && ${LAST_E_CMD} == ebegin ]] && echo
+ echo -e " ${WARN}*${NORMAL} ${RC_INDENTATION}$*"
+ fi
+
+ # Log warnings to system log
+ esyslog "daemon.warning" "rc-scripts" "$*"
+
+ LAST_E_CMD=ewarn
+ return 0
+}
+
+# void eerror(char* message)
+#
+# show an error message + log it
+#
+eerror() {
+ if [[ ${RC_QUIET_STDOUT} == yes ]]; then
+ echo " $*" >/dev/stderr
+ else
+ [[ ${RC_ENDCOL} != yes && ${LAST_E_CMD} == ebegin ]] && echo
+ echo -e " ${BAD}*${NORMAL} ${RC_INDENTATION}$*"
+ fi
+
+ # Log errors to system log
+ esyslog "daemon.err" "rc-scripts" "$*"
+
+ LAST_E_CMD=eerror
+ return 0
+}
+
+# void ebegin(char* message)
+#
+# show a message indicating the start of a process
+#
+ebegin() {
+ local msg="$*" dots spaces=${RC_DOT_PATTERN//?/ }
+ [[ ${RC_QUIET_STDOUT} == yes ]] && return 0
+
+ if [[ -n ${RC_DOT_PATTERN} ]]; then
+ dots=$(printf "%$(( COLS - 3 - ${#RC_INDENTATION} - ${#msg} - 7 ))s" '')
+ dots=${dots//${spaces}/${RC_DOT_PATTERN}}
+ msg="${msg}${dots}"
+ else
+ msg="${msg} ..."
+ fi
+ einfon "${msg}"
+ [[ ${RC_ENDCOL} == yes ]] && echo
+
+ LAST_E_LEN=$(( 3 + ${#RC_INDENTATION} + ${#msg} ))
+ LAST_E_CMD=ebegin
+ return 0
+}
+
+# void _eend(int error, char *efunc, char* errstr)
+#
+# indicate the completion of process, called from eend/ewend
+# if error, show errstr via efunc
+#
+# This function is private to functions.sh. Do not call it from a
+# script.
+#
+_eend() {
+ local retval=${1:-0} efunc=${2:-eerror} msg
+ shift 2
+
+ if [[ ${retval} == 0 ]]; then
+ [[ ${RC_QUIET_STDOUT} == yes ]] && return 0
+ msg="${BRACKET}[ ${GOOD}ok${BRACKET} ]${NORMAL}"
+ else
+ if [[ -n "$*" ]]; then
+ ${efunc} "$*"
+ fi
+ msg="${BRACKET}[ ${BAD}!!${BRACKET} ]${NORMAL}"
+ fi
+
+ if [[ ${RC_ENDCOL} == yes ]]; then
+ echo -e "${ENDCOL} ${msg}"
+ else
+ [[ ${LAST_E_CMD} == ebegin ]] || LAST_E_LEN=0
+ printf "%$(( COLS - LAST_E_LEN - 6 ))s%b\n" '' "${msg}"
+ fi
+
+ return ${retval}
+}
+
+# void eend(int error, char* errstr)
+#
+# indicate the completion of process
+# if error, show errstr via eerror
+#
+eend() {
+ local retval=${1:-0}
+ shift
+
+ _eend ${retval} eerror "$*"
+
+ LAST_E_CMD=eend
+ return $retval
+}
+
+# void ewend(int error, char* errstr)
+#
+# indicate the completion of process
+# if error, show errstr via ewarn
+#
+ewend() {
+ local retval=${1:-0}
+ shift
+
+ _eend ${retval} ewarn "$*"
+
+ LAST_E_CMD=ewend
+ return $retval
+}
+
+# v-e-commands honor RC_VERBOSE which defaults to no.
+# The condition is negated so the return value will be zero.
+veinfo() { [[ "${RC_VERBOSE}" != yes ]] || einfo "$@"; }
+veinfon() { [[ "${RC_VERBOSE}" != yes ]] || einfon "$@"; }
+vewarn() { [[ "${RC_VERBOSE}" != yes ]] || ewarn "$@"; }
+veerror() { [[ "${RC_VERBOSE}" != yes ]] || eerror "$@"; }
+vebegin() { [[ "${RC_VERBOSE}" != yes ]] || ebegin "$@"; }
+veend() {
+ [[ "${RC_VERBOSE}" == yes ]] && { eend "$@"; return $?; }
+ return ${1:-0}
+}
+veend() {
+ [[ "${RC_VERBOSE}" == yes ]] && { ewend "$@"; return $?; }
+ return ${1:-0}
+}
+
+# char *KV_major(string)
+#
+# Return the Major (X of X.Y.Z) kernel version
+#
+KV_major() {
+ [[ -z $1 ]] && return 1
+
+ local KV=$@
+ echo ${KV%%.*}
+}
+
+# char *KV_minor(string)
+#
+# Return the Minor (Y of X.Y.Z) kernel version
+#
+KV_minor() {
+ [[ -z $1 ]] && return 1
+
+ local KV=$@
+ KV=${KV#*.}
+ echo ${KV%%.*}
+}
+
+# char *KV_micro(string)
+#
+# Return the Micro (Z of X.Y.Z) kernel version.
+#
+KV_micro() {
+ [[ -z $1 ]] && return 1
+
+ local KV=$@
+ KV=${KV#*.*.}
+ echo ${KV%%[^[:digit:]]*}
+}
+
+# int KV_to_int(string)
+#
+# Convert a string type kernel version (2.4.0) to an int (132096)
+# for easy compairing or versions ...
+#
+KV_to_int() {
+ [[ -z $1 ]] && return 1
+
+ local KV_MAJOR=$(KV_major "$1")
+ local KV_MINOR=$(KV_minor "$1")
+ local KV_MICRO=$(KV_micro "$1")
+ local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO ))
+
+ # We make version 2.2.0 the minimum version we will handle as
+ # a sanity check ... if its less, we fail ...
+ if [[ ${KV_int} -ge 131584 ]] ; then
+ echo "${KV_int}"
+ return 0
+ fi
+
+ return 1
+}
+
+# int get_KV()
+#
+# Return the kernel version (major, minor and micro concated) as an integer.
+# Assumes X and Y of X.Y.Z are numbers. Also assumes that some leading
+# portion of Z is a number.
+# e.g. 2.4.25, 2.6.10, 2.6.4-rc3, 2.2.40-poop, 2.0.15+foo
+#
+get_KV() {
+ local KV=$(uname -r)
+
+ echo $(KV_to_int "${KV}")
+
+ return $?
+}
+
+# bool get_bootparam(param)
+#
+# return 0 if gentoo=param was passed to the kernel
+#
+# EXAMPLE: if get_bootparam "nodevfs" ; then ....
+#
+get_bootparam() {
+ local x copt params retval=1
+
+ [ ! -r "/proc/cmdline" ] && return 1
+
+ for copt in $(< /proc/cmdline)
+ do
+ if [ "${copt%=*}" = "gentoo" ]
+ then
+ params="$(gawk -v PARAMS="${copt##*=}" '
+ BEGIN {
+ split(PARAMS, nodes, ",")
+ for (x in nodes)
+ print nodes[x]
+ }')"
+
+ # Parse gentoo option
+ for x in ${params}
+ do
+ if [ "${x}" = "$1" ]
+ then
+# echo "YES"
+ retval=0
+ fi
+ done
+ fi
+ done
+
+ return ${retval}
+}
+
+# Safer way to list the contents of a directory,
+# as it do not have the "empty dir bug".
+#
+# char *dolisting(param)
+#
+# print a list of the directory contents
+#
+# NOTE: quote the params if they contain globs.
+# also, error checking is not that extensive ...
+#
+dolisting() {
+ local x=
+ local y=
+ local tmpstr=
+ local mylist=
+ local mypath="$*"
+
+ if [ "${mypath%/\*}" != "${mypath}" ]
+ then
+ mypath="${mypath%/\*}"
+ fi
+
+ for x in ${mypath}
+ do
+ [ ! -e "${x}" ] && continue
+
+ if [ ! -d "${x}" ] && ( [ -L "${x}" -o -f "${x}" ] )
+ then
+ mylist="${mylist} $(ls "${x}" 2> /dev/null)"
+ else
+ [ "${x%/}" != "${x}" ] && x="${x%/}"
+
+ cd "${x}"; tmpstr="$(ls)"
+
+ for y in ${tmpstr}
+ do
+ mylist="${mylist} ${x}/${y}"
+ done
+ fi
+ done
+
+ echo "${mylist}"
+}
+
+# char *add_suffix(char * configfile)
+#
+# Returns a config file name with the softlevel suffix
+# appended to it. For use with multi-config services.
+add_suffix() {
+ if [ "${RC_USE_CONFIG_PROFILE}" = "yes" -a -e "$1.${DEFAULTLEVEL}" ]
+ then
+ echo "$1.${DEFAULTLEVEL}"
+ else
+ echo "$1"
+ fi
+
+ return 0
+}
+
+# Network filesystems list for common use in rc-scripts.
+# This variable is used in is_net_fs and other places such as
+# localmount.
+NET_FS_LIST="afs cifs coda gfs ncpfs nfs nfs4 shfs smbfs"
+
+# bool is_net_fs(path)
+#
+# return 0 if path is the mountpoint of a networked filesystem
+#
+# EXAMPLE: if is_net_fs / ; then ...
+#
+is_net_fs() {
+ local fstype
+ # /proc/mounts is always accurate but may not always be available
+ if [[ -e /proc/mounts ]]; then
+ fstype=$( sed -n -e '/^rootfs/!s:.* '"$1"' \([^ ]*\).*:\1:p' /proc/mounts )
+ else
+ fstype=$( mount | sed -n -e 's:.* on '"$1"' type \([^ ]*\).*:\1:p' )
+ fi
+ [[ " ${NET_FS_LIST} " == *" ${fstype} "* ]]
+ return $?
+}
+
+# bool is_uml_sys()
+#
+# return 0 if the currently running system is User Mode Linux
+#
+# EXAMPLE: if is_uml_sys ; then ...
+#
+is_uml_sys() {
+ grep -qs 'UML' /proc/cpuinfo
+ return $?
+}
+
+# bool is_vserver_sys()
+#
+# return 0 if the currently running system is a Linux VServer
+#
+# EXAMPLE: if is_vserver_sys ; then ...
+#
+is_vserver_sys() {
+ grep -qs '^s_context:[[:space:]]*[1-9]' /proc/self/status
+ return $?
+}
+
+# bool get_mount_fstab(path)
+#
+# return the parameters to pass to the mount command generated from fstab
+#
+# EXAMPLE: cmd=$( get_mount_fstab /proc )
+# cmd=${cmd:--t proc none /proc}
+# mount -n ${cmd}
+#
+get_mount_fstab() {
+ awk '$1 ~ "^#" { next }
+ $2 == "'$*'" { if (found++ == 0) { print "-t "$3,"-o "$4,$1,$2 } }
+ END { if (found > 1) { print "More than one entry for '$*' found in /etc/fstab!" > "/dev/stderr" } }
+ ' /etc/fstab
+}
+
+# char *reverse_list(list)
+#
+# Returns the reversed order of list
+#
+reverse_list() {
+ for (( i = $# ; i > 0 ; --i )); do
+ echo -n "${!i} "
+ done
+}
+
+# bool is_older_than(reference, files/dirs to check)
+#
+# return 0 if any of the files/dirs are newer than
+# the reference file
+#
+# EXAMPLE: if is_older_than a.out *.o ; then ...
+is_older_than() {
+ local x=
+ local ref="$1"
+ shift
+
+ for x in "$@" ; do
+ [[ ${x} -nt ${ref} ]] && return 0
+
+ if [[ -d ${x} ]] ; then
+ is_older_than "${ref}" "${x}"/* && return 0
+ fi
+ done
+
+ return 1
+}
+
+if [ -z "${EBUILD}" ] ; then
+ # Setup a basic $PATH. Just add system default to existing.
+ # This should solve both /sbin and /usr/sbin not present when
+ # doing 'su -c foo', or for something like: PATH= rcscript start
+ PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:${PATH}"
+
+ if [ "$(/sbin/consoletype 2> /dev/null)" = "serial" ] ; then
+ # We do not want colors/endcols on serial terminals
+ RC_NOCOLOR="yes"
+ RC_ENDCOL="no"
+ fi
+
+ for arg in "$@" ; do
+ case "${arg}" in
+ # Lastly check if the user disabled it with --nocolor argument
+ --nocolor|-nc)
+ RC_NOCOLOR="yes"
+ ;;
+ esac
+ done
+
+else
+ # Should we use colors ?
+ if [[ $* != *depend* ]]; then
+ # Check user pref in portage
+ RC_NOCOLOR="$(portageq envvar NOCOLOR 2>/dev/null)"
+ [ "${RC_NOCOLOR}" = "true" ] && RC_NOCOLOR="yes"
+ else
+ # We do not want colors during emerge depend
+ RC_NOCOLOR="yes"
+ # No output is seen during emerge depend, so this is not needed.
+ RC_ENDCOL="no"
+ fi
+fi
+
+if [[ -n ${EBUILD} && $* == *depend* ]]; then
+ # We do not want stty to run during emerge depend
+ COLS=80
+else
+ # Setup COLS and ENDCOL so eend can line up the [ ok ]
+ COLS=${COLUMNS:-0} # bash's internal COLUMNS variable
+ (( COLS == 0 )) && COLS=$(stty size 2>/dev/null | cut -d' ' -f2)
+ (( COLS > 0 )) || (( COLS = 80 )) # width of [ ok ] == 7
+fi
+
+if [[ ${RC_ENDCOL} == yes ]]; then
+ ENDCOL=$'\e[A\e['$(( COLS - 7 ))'G'
+else
+ ENDCOL=''
+fi
+
+# Setup the colors so our messages all look pretty
+if [[ ${RC_NOCOLOR} == yes ]]; then
+ unset GOOD WARN BAD NORMAL HILITE BRACKET
+else
+ GOOD=$'\e[32;01m'
+ WARN=$'\e[33;01m'
+ BAD=$'\e[31;01m'
+ NORMAL=$'\e[0m'
+ HILITE=$'\e[36;01m'
+ BRACKET=$'\e[34;01m'
+fi
+
+# vim:ts=4
+# }}}
--- /dev/null
+# who is allowed to connect via multiuser-mode?
+addacl root,grml
+
+# allow multiuser-mode
+multiuser on
+
+# redefine C-a
+defescape ^Bb
+escape ^Bb
+
+# no nag-screen, please
+startup_message off
--- /dev/null
+# Filename: screenrc
+# Purpose: config file for GNU screen
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Sam Okt 14 22:56:18 CEST 2006 [mika]
+################################################################################
+
+ backtick 1 0 60 /usr/bin/cpu-screen
+ backtick 2 0 60 /usr/bin/ip-screen
+ caption always "%{+b rk}$USER@%{wk}%H | %{yk}(load: %l |%{rk} cpu: %1` | %{Gk}net: %2`) %-21=%{wk}%D %d.%m.%Y %0c"
+ hardstatus alwayslastline "%{wr}%n%f %t %{kw} | %?%-Lw%?%{wb}%n*%f %t%?(%u)%?%{kw}%?%+Lw%? %{wk}"
+
+# hardstatus alwayslastline "%{bw}%1`%= "
+# detach on hangup
+ autodetach on # default: on
+ crlf off # default: off
+ deflogin off # default: on
+# defsilence off # default: off
+# hardcopy_append on # default: off
+ hardcopy_append off # default: off
+ nethack on # default: off
+# don't display the copyright page
+ startup_message off # default: on
+# no annoying audible bell, please
+ vbell on
+
+ defscrollback 1000 # default: 100
+# msgminwait 3 # default: 1
+ silencewait 15 # default: 30
+
+ hardcopydir $HOME/.hardcopy
+
+# fix the "screen.linux" terminal problem (see Debian BTS #238355 + #239776)
+# term linux
+
+ shell zsh
+
+# "sorendition": set the colors for
+# the "messages" and "text marking"
+# (ie text you mark in copy mode):
+ sorendition 10 99 # default!
+
+# use %n to display the window number and %t for its title:
+ activity "activity in %n (%t) [%w:%s]~"
+
+# pass on the "beep" (CTRL-G) by adding a '~':
+ bell "bell in %n (%t) [%w:%s]~"
+
+# pow_detach_msg: Message shown when session
+# gets power detached.
+ pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."
+
+# vbell_msg: Message shown when the
+# "virtual bell" rings.
+ vbell_msg " *beep* "
+
+# Key bindings
+# Remove some default key bindings by binding
+# them to "nothing" (empty right-hand-side):
+# bind . dumptermcap # default
+ bind .
+ bind ^\
+ bind \\
+
+# 040126 To be able to select windows with n > 9 ->
+# press "C-a - #" instead of just "C-a #"
+ bind - command -c select_1n
+ bind -c select_1n 0 select 10
+ bind -c select_1n 1 select 11
+ bind -c select_1n 2 select 12
+ bind -c select_1n 3 select 13
+ bind -c select_1n 4 select 14
+ bind -c select_1n 5 select 15
+ bind -c select_1n 6 select 16
+ bind -c select_1n 7 select 17
+ bind -c select_1n 8 select 18
+ bind -c select_1n 9 select 19
+ bind -c select_1n - command -c select_2n
+ bind -c select_2n 0 select 20
+ bind -c select_2n 1 select 21
+ bind -c select_2n 2 select 22
+ bind -c select_2n 3 select 23
+ bind -c select_2n 4 select 24
+ bind -c select_2n 5 select 25
+ bind -c select_2n 6 select 26
+ bind -c select_2n 7 select 27
+ bind -c select_2n 8 select 28
+ bind -c select_2n 9 select 29
+ bind -c select_2n - select -
+
+# Use the function keys F11 and F12 to cycle backwards/forwards in
+# the list of existing windows:
+# bindkey -k F1 prev
+# bindkey -k F2 next
+
+# remove some stupid / dangerous key bindings
+ bind k
+ bind ^k
+ bind .
+ bind ^\
+ bind \\
+ bind ^h
+ bind h hardcopy
+# make them better
+ bind 'K' kill
+ bind 'I' login on
+ bind 'O' login off
+ bind '}' history
+
+ bind G screen -t 'google' w3m www.google.com
+ bind H screen -t HeiseTicker w3m www.heise.de/newsticker/pda/data/paket4.html
+
+# Paste - use 'P' instead of ']':
+# bind P # unbound by default
+ bind P paste .
+
+# Yet another hack:
+# Prepend/append register [/] to the paste if ^a^] is pressed.
+# This lets me have autoindent mode in vi.
+# register [ "\033:se noai\015a"
+# register ] "\033:se ai\015a"
+# bind ^] paste [.]
+
+# X - a fast way to lock the current screen.
+ bind X lockscreen
+
+# 030511 Workaround for stupid machines without xmodmap ;-)
+ bindkey -t °a stuff "ä"
+ bindkey -t °A stuff "Ä"
+ bindkey -t °o stuff "ö"
+ bindkey -t °O stuff "Ö"
+ bindkey -t °u stuff "ü"
+ bindkey -t °U stuff "Ü"
+ bindkey -t °s stuff "ß"
+
+ msgwait 1
+ version
+# change back to showing messages
+# for duration of two seconds:
+ msgwait 2
+
+# To get screen to add lines to xterm's scrollback buffer, uncomment the
+# following termcapinfo line which tells xterm to use the normal screen buffer
+# (which has scrollback), not the alternate screen buffer.
+ termcapinfo xterm|xterms|xs|rxvt ti@:te@
+
+# Welcome the user:
+ echo "welcome BoFH!"
--- /dev/null
+# Filename: screenrc
+# Purpose: config file for GNU screen
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Sam Mai 27 23:16:23 CEST 2006 [mika]
+################################################################################
+
+ backtick 1 60 60 /usr/bin/cpu-screen
+ backtick 2 60 60 /usr/bin/yacpi -t
+ caption always "%{+b rk}$USER@%{wk}%H | %{yk}(load: %l |%{rk} cpu: %1` | %{Gk}acpi: %2`) %-21=%{wk}%D %d.%m.%Y %0c"
+ hardstatus alwayslastline "%{wr}%n%f %t %{kw} | %?%-Lw%?%{wb}%n*%f %t%?(%u)%?%{kw}%?%+Lw%? %{wk}"
+
+# hardstatus alwayslastline "%{bw}%1`%= "
+# detach on hangup
+ autodetach on # default: on
+ crlf off # default: off
+ deflogin off # default: on
+# defsilence off # default: off
+# hardcopy_append on # default: off
+ hardcopy_append off # default: off
+ nethack on # default: off
+# don't display the copyright page
+ startup_message off # default: on
+# no annoying audible bell, please
+ vbell on
+
+ defscrollback 1000 # default: 100
+# msgminwait 3 # default: 1
+ silencewait 15 # default: 30
+
+ hardcopydir $HOME/.hardcopy
+
+# fix the "screen.linux" terminal problem (see Debian BTS #238355 + #239776)
+# term linux
+
+ shell zsh
+
+# "sorendition": set the colors for
+# the "messages" and "text marking"
+# (ie text you mark in copy mode):
+ sorendition 10 99 # default!
+
+# use %n to display the window number and %t for its title:
+ activity "activity in %n (%t) [%w:%s]~"
+
+# pass on the "beep" (CTRL-G) by adding a '~':
+ bell "bell in %n (%t) [%w:%s]~"
+
+# pow_detach_msg: Message shown when session
+# gets power detached.
+ pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."
+
+# vbell_msg: Message shown when the
+# "virtual bell" rings.
+ vbell_msg " *beep* "
+
+# Key bindings
+# Remove some default key bindings by binding
+# them to "nothing" (empty right-hand-side):
+# bind . dumptermcap # default
+ bind .
+ bind ^\
+ bind \\
+
+# 040126 To be able to select windows with n > 9 ->
+# press "C-a - #" instead of just "C-a #"
+ bind - command -c select_1n
+ bind -c select_1n 0 select 10
+ bind -c select_1n 1 select 11
+ bind -c select_1n 2 select 12
+ bind -c select_1n 3 select 13
+ bind -c select_1n 4 select 14
+ bind -c select_1n 5 select 15
+ bind -c select_1n 6 select 16
+ bind -c select_1n 7 select 17
+ bind -c select_1n 8 select 18
+ bind -c select_1n 9 select 19
+ bind -c select_1n - command -c select_2n
+ bind -c select_2n 0 select 20
+ bind -c select_2n 1 select 21
+ bind -c select_2n 2 select 22
+ bind -c select_2n 3 select 23
+ bind -c select_2n 4 select 24
+ bind -c select_2n 5 select 25
+ bind -c select_2n 6 select 26
+ bind -c select_2n 7 select 27
+ bind -c select_2n 8 select 28
+ bind -c select_2n 9 select 29
+ bind -c select_2n - select -
+
+# Use the function keys F11 and F12 to cycle backwards/forwards in
+# the list of existing windows:
+# bindkey -k F1 prev
+# bindkey -k F2 next
+
+# remove some stupid / dangerous key bindings
+ bind k
+ bind ^k
+ bind .
+ bind ^\
+ bind \\
+ bind ^h
+ bind h hardcopy
+# make them better
+ bind 'K' kill
+ bind 'I' login on
+ bind 'O' login off
+ bind '}' history
+
+ bind G screen -t 'google' w3m www.google.com
+ bind H screen -t HeiseTicker w3m www.heise.de/newsticker/pda/data/paket4.html
+
+# Paste - use 'P' instead of ']':
+# bind P # unbound by default
+ bind P paste .
+
+# Yet another hack:
+# Prepend/append register [/] to the paste if ^a^] is pressed.
+# This lets me have autoindent mode in vi.
+ register [ "\033:se noai\015a"
+ register ] "\033:se ai\015a"
+ bind ^] paste [.]
+
+# X - a fast way to lock the current screen.
+ bind X lockscreen
+
+# 030511 Workaround for stupid machines without xmodmap ;-)
+ bindkey -t °a stuff "ä"
+ bindkey -t °A stuff "Ä"
+ bindkey -t °o stuff "ö"
+ bindkey -t °O stuff "Ö"
+ bindkey -t °u stuff "ü"
+ bindkey -t °U stuff "Ü"
+ bindkey -t °s stuff "ß"
+
+ msgwait 1
+ version
+# change back to showing messages
+# for duration of two seconds:
+ msgwait 2
+#
+# Welcome the user:
+ echo "welcome BoFH!"
--- /dev/null
+#
+# Copyright (c) 1987, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 4. Neither the name of the University nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# @(#)sysexits.h 8.1 (Berkeley) 6/2/93
+#
+
+
+EX_OK=0 # successful termination
+
+EX__BASE=64 # base value for error messages
+
+EX_USAGE=64 # command line usage error
+EX_DATAERR=65 # data format error
+EX_NOINPUT=66 # cannot open input
+EX_NOUSER=67 # addressee unknown
+EX_NOHOST=68 # host name unknown
+EX_UNAVAILABLE=69 # service unavailable
+EX_SOFTWARE=70 # internal software error
+EX_OSERR=71 # system error (e.g., can't fork)
+EX_OSFILE=72 # critical OS file missing
+EX_CANTCREAT=73 # can't create (user) output file
+EX_IOERR=74 # input/output error
+EX_TEMPFAIL=75 # temp failure; user is invited to retry
+EX_PROTOCOL=76 # remote error in protocol
+EX_NOPERM=77 # permission denied
+EX_CONFIG=78 # configuration error
+
+EX__MAX=78 # maximum listed value
--- /dev/null
+# Filename: grml_colors
+# Purpose: color definition file
+# Authors: (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Fri May 12 22:09:25 CEST 2006 [mika]
+################################################################################
+
+# ANSI COLORS
+CRE="\r\e[K"
+NORMAL="\e[0;39m"
+# RED: Failure or error message
+RED="\e[1;31m"
+# GREEN: Success message
+GREEN="\e[1;32m"
+# YELLOW: Descriptions
+YELLOW="\e[1;33m"
+# BLUE: System messages
+BLUE="\e[1;34m"
+# MAGENTA: Found devices or drivers
+MAGENTA="\e[1;35m"
+# CYAN: Questions
+CYAN="\e[1;36m"
+# BOLD WHITE: Hint
+WHITE="\e[1;37m"
+
+## END OF FILE #################################################################
--- /dev/null
+# Filename: grml_nocolors
+# Purpose: "no colors" definition file - don't use any escape sequences
+# Authors: (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Fri May 12 22:09:28 CEST 2006 [mika]
+################################################################################
+# Notice: if you want to use colors in your script you probably are
+# searching for /etc/grml_colors. This file is meant to be used
+# when you don't want to get escape sequences in output. For example
+# this is useful when logging stuff to a file.
+################################################################################
+
+# ANSI COLORS
+CRE=''
+NORMAL=''
+# RED: Failure or error message
+RED=''
+# GREEN: Success message
+GREEN=''
+# YELLOW: Descriptions
+YELLOW=''
+# BLUE: System messages
+BLUE=''
+# MAGENTA: Found devices or drivers
+MAGENTA=''
+# CYAN: Questions
+CYAN=''
+# BOLD WHITE: Hint
+WHITE=''
+
+## END OF FILE #################################################################
--- /dev/null
+# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
+
+# The loopback interface
+# automatically added when upgrading
+auto lo
+iface lo inet loopback
+
+# Sample entries:
+# ===============
+
+# static entry:
+# auto eth1
+# iface eth1 inet static
+# address 192.168.0.1
+# netmask 255.255.255.0
+# network 192.168.0.0
+# broadcast 192.168.0.255
+# gateway 192.168.0.1
+# dns-search foo.example
+# dns-nameservers 192.168.0.10 192.168.0.20
+#
+# vconfig:
+# auto eth0.1
+# iface eth0.1 inet manual
+# pre-up vconfig add eth0.1
+# up ifconfig eth0 0.0.0.0 promisc up
+# post-down vconfig rem eth0.1
+
+# Ad-hoc WLAN Network:
+# auto eth1
+# iface eth1 inet static
+# address 192.168.0.1
+# netmask 255.255.255.0
+# wireless_mode ad-hoc
+# wireless_essid foobar
+# wireless_channel 11
+
+# WLAN:
+# auto eth1
+# iface eth1 inet dhcp
+# wireless_essid foo
+# wireless_nick bar
+# wireless_key 11111111111111111111111111
+# wireless_keymode restricted
+# wireless_keymode open
+# wireless_mode managed
+
+# DSL Interface
+# allow-hotplug dsl
+# iface dsl inet manual
+# up ip link set $IFACE up
+# up ip -6 addr flush dev $IFACE || true
+# down ip link set $IFACE down
+
+# Mapping - bring up via e.g. 'ifup eth0=dhcp':
+# iface dhcp inet dhcp
+
+# Mapping - bring up via e.g. 'ifup -v eth0=home':
+# auto eth1
+# iface home inet dhcp
+# wireless_essid foo
+# wireless_nick bar
+# wireless_key 11111111111111111111111111
+# wireless_keymode restricted
+
+# More complex mapping-setup:
+# auto eth0
+# mapping eth0
+# script /etc/network/ping-places.sh
+# map 192.168.0.90/24 192.168.0.42 home
+# map 129.27.140.238/24 129.27.140.241 spsc
+# map 192.168.0.90/24 192.168.0.100 sevian7
+# map 192.168.0.90/24 192.168.0.1 annenhof
+# map 195.177.251.50/255.255.255.224 195.177.251.33 kunstlabor
+#
+# iface home inet static
+# address 192.168.0.90
+# netmask 255.255.255.0
+# gateway 192.168.0.42
+# mtu 1400
+#
+# up cp /etc/apt/sources.list.home /etc/apt/sources.list
+# up cp /etc/resolv.conf.home /etc/resolv.conf
+#
+#
+# iface spsc inet static
+# address 129.27.140.238
+# netmask 255.255.255.0
+# gateway 129.27.140.1
+#
+# up cp /etc/apt/sources.list.spsc /etc/apt/sources.list
+# up cp /etc/resolv.conf.spsc /etc/resolv.conf
+#
+# iface annenhof inet static
+# address 192.168.0.90
+# netmask 255.255.255.0
+# gateway 192.168.0.1
+#
+# up cp /etc/resolv.conf.annenhof /etc/resolv.conf
+#
+# iface sevian7 inet dhcp
+#
+# iface kunstlabor inet dhcp
+# up cp /etc/apt/sources.list.kunstlabor /etc/apt/sources.list
+
+# EOF
--- /dev/null
+syn region klammer10a matchgroup=KLAMMER10a start='\[' end='\]' contained
+syn region klammer10b matchgroup=KLAMMER10a start='{' end='}' contained
+syn region klammer9a matchgroup=KLAMMER9a start='\[' end='\]' contained contains=klammer10a,klammer10b
+syn region klammer9b matchgroup=KLAMMER9a start='{' end='}' contained contains=klammer10a,klammer10b
+syn region klammer8a matchgroup=KLAMMER8a start='\[' end='\]' contained contains=klammer9a,klammer9b
+syn region klammer8b matchgroup=KLAMMER8a start='{' end='}' contained contains=klammer9a,klammer9b
+syn region klammer7a matchgroup=KLAMMER7a start='\[' end='\]' contained contains=klammer8a,klammer8b
+syn region klammer7b matchgroup=KLAMMER7a start='{' end='}' contained contains=klammer8a,klammer8b
+syn region klammer6a matchgroup=KLAMMER6a start='\[' end='\]' contained contains=klammer7a,klammer7b
+syn region klammer6b matchgroup=KLAMMER6a start='{' end='}' contained contains=klammer7a,klammer7b
+syn region klammer5a matchgroup=KLAMMER5a start='\[' end='\]' contained contains=klammer6a,klammer6b
+syn region klammer5b matchgroup=KLAMMER5a start='{' end='}' contained contains=klammer6a,klammer6b
+syn region klammer4a matchgroup=KLAMMER4a start='\[' end='\]' contained contains=klammer5a,klammer5b
+syn region klammer4b matchgroup=KLAMMER4a start='{' end='}' contained contains=klammer5a,klammer5b
+syn region klammer3a matchgroup=KLAMMER3a start='\[' end='\]' contained contains=klammer4a,klammer4b
+syn region klammer3b matchgroup=KLAMMER3a start='{' end='}' contained contains=klammer4a,klammer4b
+syn region klammer2a matchgroup=KLAMMER2a start='\[' end='\]' contained contains=klammer3a,klammer3b
+syn region klammer2b matchgroup=KLAMMER2a start='{' end='}' contained contains=klammer3a,klammer3b
+syn region klammer1a matchgroup=KLAMMER1a start='\[' end='\]' contains=klammer2a,klammer2b
+syn region klammer1b matchgroup=KLAMMER1a start='{' end='}' contains=klammer2a,klammer2b
+
+hi klammer1a ctermfg=Red ctermbg=Black guifg=Red guibg=Black
+hi klammer1b ctermfg=Red ctermbg=Black guifg=Red guibg=Black
+hi KLAMMER1b ctermfg=Red ctermbg=Black guifg=Red guibg=Black
+
+hi klammer2a ctermfg=Green ctermbg=Black guifg=Green guibg=Black
+hi klammer2b ctermfg=Green ctermbg=Black guifg=Green guibg=Black
+hi KLAMMER2b ctermfg=Green ctermbg=Black guifg=Green guibg=Black
+
+hi klammer3a ctermfg=Cyan ctermbg=Black guifg=Cyan guibg=Black
+hi klammer3b ctermfg=Cyan ctermbg=Black guifg=Cyan guibg=Black
+hi KLAMMER3b ctermfg=Cyan ctermbg=Black guifg=Cyan guibg=Black
+
+hi klammer4a ctermfg=Yellow ctermbg=Black guifg=Yellow guibg=Black
+hi klammer4b ctermfg=Yellow ctermbg=Black guifg=Yellow guibg=Black
+hi KLAMMER4b ctermfg=Yellow ctermbg=Black guifg=Yellow guibg=Black
+
+hi klammer5a ctermfg=Magenta ctermbg=Black guifg=Magenta guibg=Black
+hi klammer5b ctermfg=Magenta ctermbg=Black guifg=Magenta guibg=Black
+hi KLAMMER5b ctermfg=Magenta ctermbg=Black guifg=Magenta guibg=Black
+
+hi klammer6a ctermfg=Darkred ctermbg=Black guifg=Darkred guibg=Black
+hi klammer6b ctermfg=Darkred ctermbg=Black guifg=Darkred guibg=Black
+hi KLAMMER6b ctermfg=Darkred ctermbg=Black guifg=Darkred guibg=Black
+
+hi klammer7a ctermfg=Darkgreen ctermbg=Black guifg=Darkgreen guibg=Black
+hi klammer7b ctermfg=Darkgreen ctermbg=Black guifg=Darkgreen guibg=Black
+hi KLAMMER7b ctermfg=Darkgreen ctermbg=Black guifg=Darkgreen guibg=Black
+
+hi klammer8a ctermfg=Darkcyan ctermbg=Black guifg=Darkcyan guibg=Black
+hi klammer8b ctermfg=Darkcyan ctermbg=Black guifg=Darkcyan guibg=Black
+hi KLAMMER8b ctermfg=Darkcyan ctermbg=Black guifg=Darkcyan guibg=Black
+
+hi klammer9a ctermfg=Darkyellow ctermbg=Black guifg=Darkyellow guibg=Black
+hi klammer9b ctermfg=Darkyellow ctermbg=Black guifg=Darkyellow guibg=Black
+hi KLAMMER9b ctermfg=Darkyellow ctermbg=Black guifg=Darkyellow guibg=Black
+
+hi klammer10a ctermfg=Darkmagenta ctermbg=Black guifg=Darkmagenta guibg=Black
+hi klammer10b ctermfg=Darkmagenta ctermbg=Black guifg=Darkmagenta guibg=Black
+hi KLAMMER10b ctermfg=Darkmagenta ctermbg=Black guifg=Darkmagenta guibg=Black
+
+syn sync minlines=300
--- /dev/null
+" Filename: .vimrc
+" Purpose: configuration file for editor vim
+" Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+" Bug-Reports: see http://grml.org/bugs/
+" License: This file is licensed under the GPL v2.
+" Latest change: Mon Jun 05 16:30:29 CEST 2006 [mika]
+"###############################################################################
+" Thanks to Sven Guckes for his template!
+"###############################################################################
+
+" be no-compatible with vi
+ set nocp
+" turn these ON:
+ set digraph ek hidden ruler sc vb wmnu
+" turn these OFF ("no" prefix):
+ set noeb noet nosol
+" non-toggles:
+ set bs=2 fo=cqrt ls=2 shm=at tw=72 ww=<,>,h,l
+ set comments=b:#,:%,fb:-,n:>,n:)
+" set list listchars=tab:»·,trail:·
+ set listchars=eol:$,precedes:«,extends:»,tab:»·,trail:·
+ set viminfo=%,'50,\"100,:100,n~/.viminfo
+
+" autocommands:
+" when the file type is "mail" then set the textwidth to "70":
+ au FileType mail set tw=70
+" When editing a file, always jump to the last cursor position
+" au BufReadPost * if line("'\"") | exe "'\"" | endif
+ autocmd BufReadPost * if line("'\"") && line("'\"") <= line("$") | exe "normal `\"" | endif
+
+" some colors - as an example "white on black" [use bold fonts]:
+" hi normal ctermfg=white ctermbg=black guifg=white guibg=black
+" hi nontext ctermfg=blue ctermbg=black guifg=blue guibg=black
+" switch on syntax coloring!! "bunt ist meine lieblingsfarbe!" :-)
+ syn on
+
+" some useful mappings:
+ set pastetoggle=<f11>
+
+" with F7 copy all current buffer to clipboard, or a selection.
+" with shift-F7, paste all clipboard contents
+" see: http://www.vim.org/tips/tip.php?tip_id=964
+ map <F7> :w !xclip<CR><CR>
+ vmap <F7> "*y
+ map <S-F7> :r!xclip -o<CR>
+
+" remove/delete trailing whitespace:
+ nmap ;tr :%s/\s\+$//
+ vmap ;tr :s/\s\+$//
+
+" execute the command in the current line (minus the first word, which
+" is intended to be a shell prompt) and insert the output in the buffer
+ map ,e ^wy$:r!\12"\r
+
+" update timestamp
+ iab YDATE <C-R>=strftime("%a %b %d %T %Z %Y")<CR>
+ map ,L 1G/Latest change:\s*/e+1<CR>CYDATE<ESC>
+
+" the shell in a box mode. found in posting by Stefan `Sec` Zehl
+" in newsgroup de.alt.sysadmin.recovery, msgÂid: <df7lhe$2hup$1@ice.42.org>
+" Requires zsh for "print -P $PS1" / replace if needed.
+" Your prompt should end in > (and only contain one)
+" so run something like:
+" % export PS1='%n@%m > '
+" in your zsh, press ',l' and <enter> for running commands, end mode via <esc>
+ map __start :imap <C-V><C-M> <C-O>__cmd<C-V>\|imap <C-V><ESC> <C-V><ESC>__end<C-M>
+ noremap __end :iunmap <C-V><CR>\|iunmap <C-V><ESC><C-M>:"Vish ended.<C-M>
+ noremap __cmd 0<ESC>f>ly$:r !<C-R>";print -P $PS1<C-M>A
+ noremap __scmd :r !print -P $PS1<c-M>A
+ map ,l __start__scmd
+
+" Kill quote spaces (when quoting a quote)
+ map ,kqs mz:%s/^> >/>>/<cr>
+
+" Vim 7 brings cool new features - see ':he version7'!
+" The coolest features of Vim7 by mika
+" ====================================
+" 1) omni/intellisense completion: use CTRL-X CTRL-O in insert mode to start it [:he compl-omni]
+" 2) internal grep: vimgrep foo bar [:he vimgrep]
+" 3) tab pages: vim -p file1 file2 - then use the :tab command [:he tabpage]
+" gt -> next tab
+" gT -> previous tab
+" 4) undo branches: :undolist / :earlier 2h / :later 2h
+" instead of using u (undo) and CTRL-R (redo), you might experiment with g-
+" and g+ to move through the text state [:he undolist]
+" 5) browse remote directories via scp using netrw plugin: :edit scp://host//path/to/ [:he netrw.vim]
+" 6) start editing the filename under the cursor and jump to the line
+" number following the file name: press gF [:he gF]
+" 7) press 'CTRL-W F' to start editing the filename under the cursor in a new
+" window and jump to the line number following the file name. [:he CTRL-W_F]
+" 8) spelling correction (see later for its configuration) [:he spell]:
+" ]s -> Move to next misspelled word after the cursor.
+" zg -> Add word under the cursor as a good word to the first name in 'spellfile'
+" zw -> Like "zg" but mark the word as a wrong (bad) word.
+" z= -> For the word under/after the cursor suggest correctly spelled words.
+" 9) highlight active cursor line using 'set cursorline' [:he cursorline]
+" 10) delete inner quotes inside HTML-code using <C-O>cit (see its mapping later) [:he tag-blocks]
+"
+if version >= 700
+ " Thanks for some ideas to Christian 'strcat' Schneider and Julius Plenz
+ " turn spelling on by default:
+ " set spell
+ " toggle spelling with F12 key:
+ map <F12> :set spell!<CR><Bar>:echo "Spell Check: " . strpart("OffOn", 3 * &spell, 3)<CR>
+ set spellfile=~/.vim/spellfile.add
+ " change language - get spell files from http://ftp.vim.org/pub/vim/runtime/spell/ =>
+ " cd ~/.vim/spell && wget http://ftp.vim.org/pub/vim/runtime/spell/de.latin1.spl
+ " change to german:
+ " set spelllang=de
+ " highlight spelling correction:
+ " highlight SpellBad term=reverse ctermbg=12 gui=undercurl guisp=Red " badly spelled word
+ " highlight SpellCap term=reverse ctermbg=9 gui=undercurl guisp=Blue " word with wrong caps
+ " highlight SpellRare term=reverse ctermbg=13 gui=undercurl guisp=Magenta " rare word
+ " highlight SpellLocale term=underline ctermbg=11 gui=undercurl guisp=DarkCyan " word only exists in other region
+
+ " set maximum number of suggestions listed to top 10 items:
+ set sps=best,10
+
+ " highlight matching parens:
+ " set matchpairs=(:),[:],{:},< :>
+ " let loaded_matchparen = 1
+ " highlight MatchParen term=reverse ctermbg=7 guibg=cornsilk
+
+ " highlight the cursor line and column:
+ " set cursorline
+ " highlight CursorLine term=reverse ctermbg=7 guibg=#333333
+ " highlight CursorColumn guibg=#333333
+
+ " change inner tag - very useful e.g. within HTML-code!
+ " ci" will remove the text between quotes, also works for ' and `
+ imap <F10> <C-O>cit
+
+ " use the popup menu also when there is only one match:
+ " set completeopt=menuone
+ " determine the maximum number of items to show in the popup menu for:
+ set pumheight=7
+ " set completion highlighting:
+ " highlight Pmenu ctermbg=13 guifg=Black guibg=#BDDFFF " normal item
+ " highlight PmenuSel ctermbg=7 guifg=Black guibg=Orange " selected item
+ " highlight PmenuSbar ctermbg=7 guifg=#CCCCCC guibg=#CCCCCC " scrollbar
+ " highlight PmenuThumb cterm=reverse gui=reverse guifg=Black guibg=#AAAAAA " thumb of the scrollbar
+
+endif
+"# END OF FILE #################################################################
--- /dev/null
+# Filename: .zshrc
+# Purpose: config file for zsh
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Mon Sep 18 18:54:28 CEST 2006 [mika]
+################################################################################
+
+# source ~/.zshrc.global {{{
+# see /etc/zsh/zshrc for some general settings
+# If you don't have write permissions to /etc/zsh/zshrc on your own
+# copy the file to your $HOME as /.zshrc.global and we source it:
+ if [ -r ~/.zshrc.global ] ; then
+ . ~/.zshrc.global
+ fi
+# }}}
+
+# completion system {{{
+# just make sure it is loaded in this file too
+ type compinit &>/dev/null || { autoload -U compinit && compinit }
+# }}}
+
+## variables {{{
+
+# set terminal property (used e.g. by msgid-chooser)
+ export COLORTERM="yes"
+
+# set default browser
+ if [ -z $BROWSER ] ; then
+ if [ -n "$DISPLAY" ] ; then
+ [ -x =firefox ] && export BROWSER=firefox
+ else
+ [ -x =w3m ] && export BROWSER=w3m
+ fi
+ fi
+ (( ${+PAGER} )) || export PAGER="less"
+
+# export qtdir
+ [ -d /usr/share/qt3 ] && export QTDIR=/usr/share/qt3
+ [ -d /usr/share/qt4 ] && export QTDIR=/usr/share/qt4
+
+# support running 'jikes *.java && jamvm HelloWorld' OOTB:
+ [ -f /usr/share/classpath/glibj.zip ] && export JIKESPATH=/usr/share/classpath/glibj.zip
+# }}}
+
+## set options {{{
+
+# Allow comments even in interactive shells i. e.
+# $ uname # This command prints system informations
+# zsh: bad pattern: #
+# $ setopt interactivecomments
+# $ uname # This command prints system informations
+# Linux
+# setopt interactivecomments
+
+# ctrl-s will no longer freeze the terminal.
+# stty erase "^?"
+
+# }}}
+
+# {{{ global aliases
+# These do not have to be at the beginning of the command line.
+# Avoid typing cd ../../ for going two dirs down and so on
+# Usage, e.g.: "$ cd ...' or just '$ ...' with 'setopt auto_cd'
+ alias -g '...'='../..'
+ alias -g '....'='../../..'
+# Usage is "$ somecommand C (this pipes it into 'wc -l'):
+ alias -g BG='& exit'
+ alias -g C='|wc -l'
+ alias -g G='|grep'
+ alias -g H='|head'
+ alias -g Hl=' --help |& less -r'
+ alias -g K='|keep'
+ alias -g L='|less'
+ alias -g LL='|& less -r'
+ alias -g M='|most'
+ alias -g N='&>/dev/null'
+ alias -g R='| tr A-z N-za-m'
+ alias -g SL='| sort | less'
+ alias -g S='| sort'
+ alias -g T='|tail'
+ alias -g V='| vim -'
+# }}}
+
+## aliases {{{
+
+# Xterm resizing-fu.
+# Based on http://svn.kitenet.net/trunk/home-full/.zshrc?rev=11710&view=log (by Joey Hess)
+ alias hide='echo -en "\033]50;nil2\007"'
+ alias tiny='echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-80-*-*-c-*-iso8859-15\007"'
+ alias small='echo -en "\033]50;6x10\007"'
+ alias medium='echo -en "\033]50;-misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-15\007"'
+ alias default='echo -e "\033]50;-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-15\007"'
+ alias large='echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-150-*-*-c-*-iso8859-15\007"'
+ alias huge='echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-210-*-*-c-*-iso8859-15\007"'
+ alias smartfont='echo -en "\033]50;-artwiz-smoothansi-*-*-*-*-*-*-*-*-*-*-*-*\007"'
+ alias semifont='echo -en "\033]50;-misc-fixed-medium-r-semicondensed-*-*-120-*-*-*-*-iso8859-15\007"'
+# if [ "$TERM" = "xterm" ] && [ "$LINES" -ge 50 ] && [ "$COLUMNS" -ge 100 ] && [ -z "$SSH_CONNECTION" ]; then
+# large
+# fi
+
+# general
+ alias da='du -sch'
+ alias j='jobs -l'
+# alias u='translate -i' # translate
+
+# compile stuff
+ alias CO="./configure"
+ alias CH="./configure --help"
+
+# http://conkeror.mozdev.org/
+ alias conkeror='firefox -chrome chrome://conkeror/content'
+
+# arch/tla stuff
+ alias ldiff='tla what-changed --diffs | less'
+ alias tbp='tla-buildpackage'
+ alias mirror='tla archive-mirror'
+ alias commit='tla commit'
+ alias merge='tla star-merge'
+
+# listing stuff
+ alias dir="ls -lSrah"
+ alias lad='ls -d .*(/)' # only show dot-directories
+ alias lsa='ls -a .*(.)' # only show dot-files
+ alias lss='ls -l *(s,S,t)' # only files with setgid/setuid/sticky flag
+ alias lsl='ls -l *(@[1,10])' # only symlinks
+ alias lsx='ls -l *(*[1,10])' # only executables
+ alias lsw='ls -ld *(R,W,X.^ND/)' # world-{readable,writable,executable} files
+ alias lsbig="ls -flh *(.OL[1,10])" # display the biggest files
+ alias lsd='ls -d *(/)' # only show directories
+ alias lse='ls -d *(/^F)' # only show empty directories
+ alias lsnew="ls -rl *(D.om[1,10])" # display the newest files
+ alias lsold="ls -rtlh *(D.om[1,10])" # display the oldest files
+ alias lssmall="ls -Srl *(.oL[1,10])" # display the smallest files
+
+# chmod
+ alias rw-='chmod 600'
+ alias rwx='chmod 700'
+ alias r--='chmod 644'
+ alias r-x='chmod 755'
+
+# some useful aliases
+ alias md='mkdir -p'
+
+# console stuff
+ alias cmplayer='mplayer -vo fbdev'
+ alias fbmplayer='mplayer -vo fbdev'
+ alias fblinks='links2 -driver fb'
+
+# ignore ~/.ssh/known_hosts entries
+# alias insecssh='ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" -o "PreferredAuthentications=keyboard-interactive"'
+ alias insecssh='ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"'
+
+# use colors when browsing man pages (if not using pinfo or PAGER=most)
+ [ -d ~/.terminfo/ ] && alias man='TERMINFO=~/.terminfo/ LESS=C TERM=mostlike PAGER=less man'
+
+# check whether Debian's package management (dpkg) is running
+ alias check_dpkg_running="sudo dpkg_running"
+# }}}
+
+## useful functions {{{
+
+# functions without detailed explanation:
+ agoogle() { ${=BROWSER} "http://groups.google.com/groups?as_uauthors=$*" ; }
+ bk() { cp -b ${1} ${1}_`date --iso-8601=m` }
+ cdiff() { diff -crd "$*" | egrep -v "^Only in |^Binary files " }
+ cl() { cd $1 && ls -a } # cd && ls
+ cvsa() { cvs add $* && cvs com -m 'initial checkin' $* }
+ cvsd() { cvs diff -N $* |& $PAGER }
+ cvsl() { cvs log $* |& $PAGER }
+ cvsq() { cvs -nq update }
+ cvsr() { rcs2log $* | $PAGER }
+ cvss() { cvs status -v $* }
+ debbug() { ${=BROWSER} "http://bugs.debian.org/$*" }
+ debbugm() { bts show --mbox $1 } # provide bugnummer as $1
+ disassemble(){ gcc -pipe -S -o - -O -g $* | as -aldh -o /dev/null }
+ dmoz() { ${=BROWSER} http://search.dmoz.org/cgi-bin/search\?search=${1// /_} }
+ dwicti() { ${=BROWSER} http://de.wiktionary.org/wiki/${(C)1// /_} }
+ ewicti() { ${=BROWSER} http://en.wiktionary.org/wiki/${(C)1// /_} }
+ fir() { firefox -a firefox -remote "openURL($1)" }
+ ggogle() { ${=BROWSER} "http://groups.google.com/groups?q=$*" }
+ google() { ${=BROWSER} "http://www.google.com/search?&num=100&q=$*" }
+ mdiff() { diff -udrP "$1" "$2" > diff.`date "+%Y-%m-%d"`."$1" }
+ memusage(){ ps aux | awk '{if (NR > 1) print $5; if (NR > 2) print "+"} END { print "p" }' | dc }
+ mggogle() { ${=BROWSER} "http://groups.google.com/groups?selm=$*" }
+ netcraft(){ ${=BROWSER} "http://toolbar.netcraft.com/site_report?url=$1" }
+ oleo() { ${=BROWSER} "http://dict.leo.org/?search=$*" }
+ shtar() { gunzip -c $1 | tar -tf - -- | $PAGER }
+ shtgz() { tar -ztf $1 | $PAGER }
+ shzip() { unzip -l $1 | $PAGER }
+ sig() { agrep -d '^-- $' "$*" ~/.Signature }
+ swiki() { ${=BROWSER} http://de.wikipedia.org/wiki/Spezial:Search/${(C)1} }
+ udiff() { diff -urd $* | egrep -v "^Only in |^Binary files " }
+ viless() { vim --cmd 'let no_plugin_maps = 1' -c "so \$VIMRUNTIME/macros/less.vim" "${@:--}" }
+ wikide () { ${=BROWSER} http://de.wikipedia.org/wiki/"${(C)*}" }
+ wikien() { ${=BROWSER} http://en.wikipedia.org/wiki/"$*" }
+ wodeb () { ${=BROWSER} "http://packages.debian.org/cgi-bin/search_contents.pl?word=$1&version=${2:-unstable}" }
+
+# Function Usage: doc packagename
+ doc() { cd /usr/share/doc/$1 && ls }
+ _doc() { _files -W /usr/share/doc -/ }
+ compdef _doc doc
+
+# debian upgrade
+ upgrade () {
+ if [ -z $1 ] ; then
+ sudo apt-get update
+ sudo apt-get -u upgrade
+ else
+ ssh $1 sudo apt-get update
+ # ask before the upgrade
+ local dummy
+ ssh $1 sudo apt-get --no-act upgrade
+ echo -n "Process the upgrade ?"
+ read -q dummy
+ if [[ $dummy == "y" ]] ; then
+ ssh $1 sudo apt-get -u upgrade --yes
+ fi
+ fi
+ }
+
+# make screenshot of current desktop (use 'import' from ImageMagic)
+ sshot() {
+ [[ ! -d ~/shots ]] && mkdir ~/shots
+ #cd ~/shots ; sleep 5 ; import -window root -depth 8 -quality 80 `date "+%Y-%m-%d--%H:%M:%S"`.png
+ cd ~/shots ; sleep 5; import -window root shot_`date --iso-8601=m`.jpg
+ }
+
+
+# list images only
+ limg() {
+ local -a images
+ images=( *.{jpg,gif,png}(.N) )
+ if [[ $#images -eq 0 ]] ; then
+ print "No image files found"
+ else
+ ls "$@" "$images[@]"
+ fi
+ }
+
+
+# create pdf file from source code
+ makereadable() {
+ output=$1
+ shift
+ a2ps --medium A4dj -E -o $output $*
+ ps2pdf $output
+ }
+
+# zsh with perl-regex - use it e.g. via:
+# regcheck '\s\d\.\d{3}\.\d{3} Euro' ' 1.000.000 Euro'
+ regcheck() {
+ zmodload -i zsh/pcre
+ pcre_compile $1 && \
+ pcre_match $2 && echo "regex matches" || echo "regex does not match"
+ }
+# list files which have been modified within the last x days
+ new() { print -l *(m-$1) }
+
+# grep the history
+ greph () { history 0 | grep $1 }
+ (grep --help 2>/dev/null |grep -- --color) >/dev/null && \
+ alias grep='grep --color=auto' # use colors when GNU grep with color-support
+ alias GREP='grep -i --color=auto'
+
+# one blank line between each line
+ if [ -r ~/.terminfo/m/mostlike ] ; then
+# alias man2='MANPAGER="sed -e G |less" TERMINFO=~/.terminfo TERM=mostlike /usr/bin/man'
+ man2() { PAGER='dash -c "sed G | /usr/bin/less"' TERM=mostlike /usr/bin/man "$@" ; }
+ fi
+
+# jump between directories
+# Copyright 2005 Nikolai Weibull <nikolai@bitwi.se>
+# notice: option AUTO_PUSHD has to be set
+ d(){
+ emulate -L zsh
+ autoload -U colors
+ local color=$fg_bold[blue]
+ integer i=0
+ dirs -p | while read dir; do
+ local num="${$(printf "%-4d " $i)/ /.}"
+ printf " %s $color%s$reset_color\n" $num $dir
+ (( i++ ))
+ done
+ integer dir=-1
+ read -r 'dir?Jump to directory: ' || return
+ (( dir == -1 )) && return
+ if (( dir < 0 || dir >= i )); then
+ echo d: no such directory stack entry: $dir
+ return 1
+ fi
+ cd ~$dir
+ }
+
+# provide useful information on globbing
+ H-Glob() {
+ echo -e "
+ / directories
+ . plain files
+ @ symbolic links
+ = sockets
+ p named pipes (FIFOs)
+ * executable plain files (0100)
+ % device files (character or block special)
+ %b block special files
+ %c character special files
+ r owner-readable files (0400)
+ w owner-writable files (0200)
+ x owner-executable files (0100)
+ A group-readable files (0040)
+ I group-writable files (0020)
+ E group-executable files (0010)
+ R world-readable files (0004)
+ W world-writable files (0002)
+ X world-executable files (0001)
+ s setuid files (04000)
+ S setgid files (02000)
+ t files with the sticky bit (01000)
+ print *(m-1) # Dateien, die vor bis zu einem Tag modifiziert wurden.
+ print *(a1) # Dateien, auf die vor einem Tag zugegriffen wurde.
+ print *(@) # Nur Links
+ print *(Lk+50) # Dateien die ueber 50 Kilobytes grosz sind
+ print *(Lk-50) # Dateien die kleiner als 50 Kilobytes sind
+ print **/*.c # Alle *.c - Dateien unterhalb von \$PWD
+ print **/*.c~file.c # Alle *.c - Dateien, aber nicht 'file.c'
+ print (foo|bar).* # Alle Dateien mit 'foo' und / oder 'bar' am Anfang
+ print *~*.* # Nur Dateien ohne '.' in Namen
+ chmod 644 *(.^x) # make all non-executable files publically readable
+ print -l *(.c|.h) # Nur Dateien mit dem Suffix '.c' und / oder '.h'
+ print **/*(g:users:) # Alle Dateien/Verzeichnisse der Gruppe >users<
+ echo /proc/*/cwd(:h:t:s/self//) # Analog zu >ps ax | awk '{print $1}'<"
+ }
+
+ lcheck() {
+ nm -go /usr/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1"":[[:xdigit:]]\{8\} . .*$1"
+ }
+
+# clean up directory
+ purge() {
+ FILES=(*~(N) .*~(N) \#*\#(N) *.o(N) a.out(N) *.core(N) *.cmo(N) *.cmi(N) .*.swp(N))
+ NBFILES=${#FILES}
+ if [[ $NBFILES > 0 ]]; then
+ print $FILES
+ local ans
+ echo -n "Remove this files? [y/n] "
+ read -q ans
+ if [[ $ans == "y" ]]
+ then
+ rm ${FILES}
+ echo ">> $PWD purged, $NBFILES files removed"
+ else
+ echo "Ok. .. than not.."
+ fi
+ fi
+ }
+
+# Translate DE<=>EN
+# 'translate' looks up fot a word in a file with language-to-language
+# translations (field separator should be " : "). A typical wordlist looks
+# like at follows:
+# | english-word : german-transmission
+# It's also only possible to translate english to german but not reciprocal.
+# Use the following oneliner to turn back the sort order:
+# $ awk -F ':' '{ print $2" : "$1" "$3 }' \
+# /usr/local/lib/words/en-de.ISO-8859-1.vok > ~/.translate/de-en.ISO-8859-1.vok
+ trans() {
+ case "$1" in
+ -[dD]*) translate -l de-en $2
+ ;;
+ -[eE]*) translate -l en-de $2
+ ;;
+ *)
+ echo "Usage: $0 { -D | -E }"
+ echo " -D == German to English"
+ echo " -E == English to German"
+ esac
+ }
+
+# Some quick Perl-hacks aka /useful/ oneliner
+# bew() { perl -le 'print unpack "B*","'$1'"' }
+# web() { perl -le 'print pack "B*","'$1'"' }
+# hew() { perl -le 'print unpack "H*","'$1'"' }
+# weh() { perl -le 'print pack "H*","'$1'"' }
+# pversion() { perl -M$1 -le "print $1->VERSION" } # i. e."pversion LWP -> 5.79"
+# getlinks () { perl -ne 'while ( m/"((www|ftp|http):\/\/.*?)"/gc ) { print $1, "\n"; }' $* }
+# gethrefs () { perl -ne 'while ( m/href="([^"]*)"/gc ) { print $1, "\n"; }' $* }
+# getanames () { perl -ne 'while ( m/a name="([^"]*)"/gc ) { print $1, "\n"; }' $* }
+# getforms () { perl -ne 'while ( m:(\</?(input|form|select|option).*?\>):gic ) { print $1, "\n"; }' $* }
+# getstrings () { perl -ne 'while ( m/"(.*?)"/gc ) { print $1, "\n"; }' $*}
+# getanchors () { perl -ne 'while ( m/«([^«»\n]+)»/gc ) { print $1, "\n"; }' $* }
+# showINC () { perl -e 'for (@INC) { printf "%d %s\n", $i++, $_ }' }
+# vimpm () { vim `perldoc -l $1 | sed -e 's/pod$/pm/'` }
+# vimhelp () { vim -c "help $1" -c on -c "au! VimEnter *" }
+
+# plap foo -- list all occurrences of program in the current PATH
+ plap() {
+ if [[ $# = 0 ]]
+ then
+ echo "Usage: $0 program"
+ echo "Example: $0 zsh"
+ echo "Lists all occurrences of program in the current PATH."
+ else
+ ls -l ${^path}/*$1*(*N)
+ fi
+ }
+
+# Found in the mailinglistarchive from Zsh (IIRC ~1996)
+ selhist() {
+ emulate -L zsh
+ local TAB=$'\t';
+ (( $# < 1 )) && {
+ echo "Usage: $0 command"
+ return 1
+ };
+ cmd=(${(f)"$(grep -w $1 $HISTFILE | sort | uniq | pr -tn)"})
+ print -l $cmd | less -F
+ echo -n "enter number of desired command [1 - $(( ${#cmd[@]} - 1 ))]: "
+ local answer
+ read answer
+ print -z "${cmd[$answer]#*$TAB}"
+ }
+
+# mkdir && cd
+ mcd() { mkdir -p "$@"; cd "$@" } # mkdir && cd
+
+# cd && ls
+ cl() { cd $1 && ls -a }
+
+# Use vim to convert plaintext to HTML
+ 2html() { vim -u NONE -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 > /dev/null 2> /dev/null }
+
+# Usage: simple-extract <file>
+# Description: extracts archived files (maybe)
+ simple-extract () {
+ if [[ -f $1 ]]
+ then
+ case $1 in
+ *.tar.bz2) bzip2 -v -d $1 ;;
+ *.tar.gz) tar -xvzf $1 ;;
+ *.rar) unrar $1 ;;
+ *.deb) ar -x $1 ;;
+ *.bz2) bzip2 -d $1 ;;
+ *.lzh) lha x $1 ;;
+ *.gz) gunzip -d $1 ;;
+ *.tar) tar -xvf $1 ;;
+ *.tgz) gunzip -d $1 ;;
+ *.tbz2) tar -jxvf $1 ;;
+ *.zip) unzip $1 ;;
+ *.Z) uncompress $1 ;;
+ *) echo "'$1' Error. Please go away" ;;
+ esac
+ else
+ echo "'$1' is not a valid file"
+ fi
+ }
+
+# Usage: smartcompress <file> (<type>)
+# Description: compresses files or a directory. Defaults to tar.gz
+ smartcompress() {
+ if [ $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>
+# Description: view archive without unpack
+ show-archive() {
+ 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 ;;
+ *) echo "'$1' Error. Please go away" ;;
+ esac
+ else
+ echo "'$1' is not a valid archive"
+ fi
+ }
+
+ folsym() {
+ if [[ -e $1 || -h $1 ]]; then
+ file=$1
+ else
+ file=`which $1`
+ fi
+ if [[ -e $file || -L $file ]]; then
+ if [[ -L $file ]]; then
+ echo `ls -ld $file | perl -ane 'print $F[7]'` '->'
+ folsym `perl -le '$file = $ARGV[0];
+ $dest = readlink $file;
+ if ($dest !~ m{^/}) {
+ $file =~ s{(/?)[^/]*$}{$1$dest};
+ } else {
+ $file = $dest;
+ }
+ $file =~ s{/{2,}}{/}g;
+ while ($file =~ s{[^/]+/\.\./}{}) {
+ ;
+ }
+ $file =~ s{^(/\.\.)+}{};
+ print $file' $file`
+ else
+ ls -d $file
+ fi
+ else
+ echo $file
+ fi
+ }
+
+# Use 'view' to read manpages, if u want colors, regex - search, ...
+# like vi(m).
+# It's shameless stolen from <http://www.vim.org/tips/tip.php?tip_id=167>
+ vman() { man $* | col -b | view -c 'set ft=man nomod nolist' - }
+
+# search for various types or README file in dir and display them in $PAGER
+# function readme() { $PAGER -- (#ia3)readme* }
+ readme() {
+ local files
+ files=(./(#i)*(read*me|lue*m(in|)ut)*(ND))
+ if (($#files))
+ then $PAGER $files
+ else
+ print 'No README files.'
+ fi
+ }
+
+# find all suid files in $PATH
+# suidfind() { ls -latg $path | grep '^...s' }
+ suidfind() { ls -latg $path/*(sN) }
+
+# See above but this is /better/ ... anywise ..
+# Note: Add $USER and 'find' with "NOPASSWD" in your /etc/sudoers or run it
+# as root (UID == 0)
+ findsuid() {
+ if [ UID != 0 ] ; then
+ print 'Not running as root. Trying to run via sudo...'
+ RUNASROOT=sudo
+ fi
+ print 'Output will be written to ~/suid_* ...'
+ $RUNASROOT find / -type f \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suidfiles.`date "+%Y-%m-%d"`.out 2>&1
+ $RUNASROOT find / -type d \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suiddirs.`date "+%Y-%m-%d"`.out 2>&1
+ $RUNASROOT find / -type f \( -perm -2 -o -perm -20 \) -ls > ~/suid_writefiles.`date "+%Y-%m-%d"`.out 2>&1
+ $RUNASROOT find / -type d \( -perm -2 -o -perm -20 \) -ls > ~/suid_writedirs.`date "+%Y-%m-%d"`.out 2>&1
+ print 'Finished'
+ }
+
+# Reload functions.
+ refunc() {
+ for func in $argv
+ do
+ unfunction $func
+ autoload $func
+ done
+ }
+
+# a small check to see which DIR is located on which server/partition.
+# stolen and modified from Sven's zshrc.forall
+ dirspace() {
+ for dir in $path;
+ do
+ (cd $dir; echo "-<$dir>"; du -shx .; echo);
+ done
+ }
+
+# $ show_print `cat /etc/passwd`
+ slow_print() {
+ for argument in "${@}"
+ do
+ for ((i = 1; i <= ${#1} ;i++)) {
+ print -n "${argument[i]}"
+ sleep 0.08
+ }
+ print -n " "
+ done
+ print ""
+ }
+
+ status() {
+ print ""
+ print "Date..: "$(date "+%Y-%m-%d %H:%M:%S")""
+ print "Shell.: Zsh $ZSH_VERSION (PID = $$, $SHLVL nests)"
+ print "Term..: $TTY ($TERM), $BAUD bauds, $COLUMNS x $LINES cars"
+ print "Login.: $LOGNAME (UID = $EUID) on $HOST"
+ print "System: $(cat /etc/[A-Za-z]*[_-][rv]e[lr]*)"
+ print "Uptime:$(uptime)"
+ print ""
+ }
+
+ 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
+ }
+
+ 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
+ }
+
+ mkaudiocd() {
+ 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
+ }
+
+ mkiso() {
+ 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
+ }
+
+# generate thumbnails ;)
+ 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
+ }
+
+# unset all limits (see zshbuiltins(1) /ulimit for details)
+ allulimit() {
+ ulimit -c unlimited
+ ulimit -d unlimited
+ ulimit -f unlimited
+ ulimit -l unlimited
+ ulimit -n unlimited
+ ulimit -s unlimited
+ ulimit -t unlimited
+ }
+
+# ogg2mp3 with bitrate of 192
+ ogg2mp3_192() {
+ oggdec -o - ${1} | lame -b 192 - ${1:r}.mp3
+ }
+
+# RFC 2396 URL encoding in Z-Shell
+ urlencode() {
+ setopt localoptions extendedglob
+ input=( ${(s::)1} )
+ print ${(j::)input/(#b)([^A-Za-z0-9_.!~*\'\(\)-])/%$(([##16]#match))}
+ }
+
+# get x-lite voip software
+ getxlite() {
+ [ -d ~/tmp ] || mkdir ~/tmp
+ cd ~/tmp
+ echo "Downloading http://www.counterpath.com/download/X-Lite_Install.tar.gz and storing it in ~/tmp:"
+ if wget http://www.counterpath.com/download/X-Lite_Install.tar.gz ; then
+ unp X-Lite_Install.tar.gz && echo done || echo failed
+ else
+ echo "Error while downloading." ; return 1
+ fi
+ if [ -x xten-xlite/xtensoftphone ] ; then
+ echo "Execute xten-xlite/xtensoftphone to start xlite."
+ fi
+ }
+
+# get skype
+ getskype() {
+ echo "Downloading debian package of skype."
+ echo "Notice: If you want to use a more recent skype version run 'getskypebeta'."
+ wget http://www.skype.com/go/getskype-linux-deb
+ # mkdir skype.install
+ # dpkg-deb --extract skype_*.deb skype.install/
+ # dpkg-deb --control skype_*.deb skype.install/DEBIAN
+ # sed -i 's/libqt3c102-mt/libqt3-mt/' skype.install/DEBIAN/control
+ # dpkg --build skype.install
+ sudo dpkg -i skype_debian-*.deb && echo "skype installed."
+ }
+
+# get beta-version of skype
+ getskypebeta() {
+ echo "Downloading debian package of skype (beta version)."
+ wget http://www.skype.com/go/getskype-linux-beta-deb
+ sudo dpkg -i skype-beta*.deb && echo "skype installed."
+ }
+
+# get gzimo (voicp software)
+ getgizmo() {
+ echo "gconf2-common and libgconf2-4 have to be available. Installing therefor."
+ sudo apt-get update
+ sudo apt-get install gconf2-common libgconf2-4
+ wget $(lynx --dump http://www.gizmoproject.com/download-linux.html | awk '/\.deb/ {print $2" "}' | tr -d '\n')
+ sudo dpkg -i libsipphoneapi*.deb bonjour_*.deb gizmo-*.deb && echo "gizmo installed."
+ }
+
+# get AIR - Automated Image and Restore
+ getair() {
+ [ -w . ] || { echo 'Error: you do not have write permissions in this directory. Exiting.' ; return 1 }
+ local VER='1.2.8'
+ wget http://puzzle.dl.sourceforge.net/sourceforge/air-imager/air-$VER.tar.gz
+ tar zxf air-$VER.tar.gz
+ cd air-$VER
+ INTERACTIVE=no sudo ./install-air-1.2.8
+ [ -x /usr/local/bin/air ] && [ -n "$DISPLAY" ] && sudo air
+ }
+
+# get specific git commitdiff
+ git-get-diff() {
+ if [ -z $GITTREE ] ; then
+ GITTREE='linux/kernel/git/torvalds/linux-2.6.git'
+ fi
+ if ! [ -z $1 ] ; then
+ ${=BROWSER} "http://kernel.org/git/?p=$GITTREE;a=commitdiff;h=$1"
+ else
+ echo "Usage: git-get-diff <commit>"
+ fi
+ }
+
+# get specific git commit
+ git-get-commit() {
+ if [ -z $GITTREE ] ; then
+ GITTREE='linux/kernel/git/torvalds/linux-2.6.git'
+ fi
+ if ! [ -z $1 ] ; then
+ ${=BROWSER} "http://kernel.org/git/?p=$GITTREE;a=commit;h=$1"
+ else
+ echo "Usage: git-get-commit <commit>"
+ fi
+ }
+
+# get specific git diff
+ git-get-plaindiff() {
+ if [ -z $GITTREE ] ; then
+ GITTREE='linux/kernel/git/torvalds/linux-2.6.git'
+ fi
+ if ! [ -z $1 ] ; then
+ wget "http://kernel.org/git/?p=$GITTREE;a=commitdiff_plain;h=$1" -O $1.diff
+ else
+ echo 'Usage: git-get-plaindiff '
+ fi
+ }
+
+# log 'make install' output
+# http://strcat.de/blog/index.php?/archives/335-Software-sauber-deinstallieren...html
+ mmake() {
+ [[ ! -d ~/.errorlogs ]] && mkdir ~/.errorlogs
+ =make -n install > ~/.errorlogs/${PWD##*/}-makelog
+ }
+
+# indent source code
+ smart-indent() {
+ indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs $*
+ }
+
+
+# rename pictures based on information found in exif headers
+ exirename() {
+ 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
+ }
+
+# }}}
+
+# some useful commands often hard to remember - let's grep for them {{{
+
+# Work around ion/xterm resize bug.
+#if [ "$SHLVL" = 1 ]; then
+# if [ -x `which resize 2>/dev/null` ]; then
+# eval `resize </dev/null`
+# fi
+#fi
+
+# enable jackd:
+# /usr/bin/jackd -dalsa -dhw:0 -r48000 -p1024 -n2
+# now play audio file:
+# alsaplayer -o jack foobar.mp3
+
+# send files via netcat
+# on sending side:
+# send() {j=$*; tar cpz ${j/%${!#}/}|nc -w 1 ${!#} 51330;}
+# send dir* $HOST
+# alias receive='nc -vlp 51330 | tar xzvp'
+
+# debian stuff:
+# dh_make -e foo@localhost -f $1
+# dpkg-buildpackage -rfakeroot
+# lintian *.deb
+# dpkg-scanpackages ./ /dev/null | gzip > Packages.gz
+# dpkg-scansources . | gzip > Sources.gz
+# grep-dctrl --field Maintainer $* /var/lib/apt/lists/*
+
+# other stuff:
+# convert -geometry 200x200 -interlace LINE -verbose
+# ldapsearch -x -b "OU=Bedienstete,O=tug" -h ldap.tugraz.at sn=$1
+# ps -ao user,pcpu,start,command
+# gpg --keyserver blackhole.pca.dfn.de --recv-keys
+# xterm -bg black -fg yellow -fn -misc-fixed-medium-r-normal--14-140-75-75-c-90-iso8859-15 -ah
+# nc -vz $1 1-1024 # portscan via netcat
+# wget --mirror --no-parent --convert-links
+# pal -d `date +%d`
+# autoload -U tetris; zle -N tetris; bindkey '...' ; echo "press ... for playing tennis"
+#
+# modify console cursor
+# see http://www.tldp.org/HOWTO/Framebuffer-HOWTO-5.html
+# print $'\e[?96;0;64c'
+# }}}
+
+# finally source a local zshrc {{{
+# this allows us to stay in sync with /etc/skel/.zshrc
+# through 'ln -s /etc/skel/.zshrc ~/.zshrc' and put own
+# modifications in ~/.zshrc.local
+ if [ -r ~/.zshrc.local ] ; then
+ . ~/.zshrc.local
+ fi
+# }}}
+
+## END OF FILE #################################################################
+# vim:foldmethod=marker
--- /dev/null
+" Filename: /etc/vim/vimrc
+" Purpose: configuration file for vim
+" Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+" Bug-Reports: see http://grml.org/bugs/
+" License: This file is licensed under the GPL v2.
+" Latest change: Son Mai 28 01:26:49 CEST 2006 [mika]
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
+" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime you
+" can find below. If you wish to change any of those settings, you should do it
+" in the file /etc/vim/vimrc.local, since debian.vim will be overwritten
+" everytime an upgrade of the vim packages is performed and this file
+" (/etc/vim/vimrc) every time the package grml-etc is upgraded. It is
+" recommended to make changes after sourcing debian.vim since it alters the
+" value of the 'compatible' option.
+
+" This line should not be removed as it ensures that various options are
+" properly set to work with the Vim-related packages available in Debian.
+runtime! debian.vim
+
+" Uncomment the next line to make Vim more Vi-compatible
+" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
+" options, so any other options should be set AFTER setting 'compatible'.
+"set compatible
+
+set backspace=indent,eol,start " more powerful backspacing
+
+" Now we set some defaults for the editor
+set autoindent " always set autoindenting on
+" set linebreak " Don't wrap words by default
+set textwidth=0 " Don't wrap lines by default
+set nobackup " Don't keep a backup file
+set backupcopy=no " grml: Overwrite files/links with w!
+" set backupcopy=yes " Keep a backup file
+set viminfo='20,\"50 " read/write a .viminfo file, don't store more than
+ " 50 lines of registers
+set history=50 " keep 50 lines of command line history
+set ruler " show the cursor position all the time
+
+" Suffixes that get lower priority when doing tab completion for filenames.
+" These are files we are not likely to want to edit or read.
+set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc
+
+" Make p in Visual mode replace the selected text with the "" register.
+vnoremap p <Esc>:let current_reg = @"<CR>gvdi<C-R>=current_reg<CR><Esc>
+
+" Vim5 and later versions support syntax highlighting. Uncommenting the next
+" line enables syntax highlighting by default.
+syntax on
+
+" Debian uses compressed helpfiles. We must inform vim that the main
+" helpfiles is compressed. Other helpfiles are stated in the tags-file.
+" set helpfile=$VIMRUNTIME/doc/help.txt.gz
+
+" If using a dark background within the editing area and syntax highlighting
+" turn on this option as well
+set background=dark
+
+" begin of grml specials:
+" set list listchars=tab:»·
+" set listchars=eol:$,precedes:«,extends:»,tab:··,trail:·
+" end of grml specials
+
+" Uncomment the following to have Vim jump to the last position when
+" reopening a file
+"if has("autocmd")
+" au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
+" \| exe "normal g'\"" | endif
+"endif
+
+" Uncomment the following to have Vim load indentation rules according to the
+" detected filetype. Per default Debian Vim only load filetype specific
+" plugins.
+"if has("autocmd")
+" filetype indent on
+"endif
+
+" The following are commented out as they cause vim to behave a lot
+" differently from regular Vi. They are highly recommended though.
+ set showcmd " Show (partial) command in status line.
+ set showmatch " Show matching brackets.
+"set ignorecase " Do case insensitive matching
+"set smartcase " Do smart case matching
+"set incsearch " Incremental search
+"set autowrite " Automatically save before commands like :next and :make
+" When switching between different buffers you can't use undo without 'set hidden':
+ set hidden " Hide buffers when they are abandoned
+"set mouse=a " Enable mouse usage (all modes) in terminals
+
+" Source a global configuration file if available
+" XXX Deprecated by Debian but as grml's package grml-etc provides this file
+" it is still valid
+if filereadable("/etc/vim/vimrc.local")
+ source /etc/vim/vimrc.local
+endif
+" EOF
--- /dev/null
+ _debian_rules() { words=(make -f debian/rules) _make }
+ compdef _debian_rules debian/rules # type debian/rules <TAB> inside a source package
--- /dev/null
+# simple completion for fbset (switch resolution on console)
+ _fbmodes() { compadd 640x480-60 640x480-72 640x480-75 640x480-90 640x480-100 768x576-75 800x600-48-lace 800x600-56 800x600-60 800x600-70 800x600-72 800x600-75 800x600-90 800x600-100 1024x768-43-lace 1024x768-60 1024x768-70 1024x768-72 1024x768-75 1024x768-90 1024x768-100 1152x864-43-lace 1152x864-47-lace 1152x864-60 1152x864-70 1152x864-75 1152x864-80 1280x960-75-8 1280x960-75 1280x960-75-32 1280x1024-43-lace 1280x1024-47-lace 1280x1024-60 1280x1024-70 1280x1024-74 1280x1024-75 1600x1200-60 1600x1200-66 1600x1200-76 }
+ compdef _fbmodes fbset
--- /dev/null
+ _grml-lang() { compadd at ch de us ; }
+ compdef _grml-lang grml-lang
--- /dev/null
+ grml-wallpaper() { Esetroot -scale /usr/share/grml/$* }
+ _grml-wallpaper() {
+ dirs=(. /usr/share/grml/)
+ _description files expl 'set desktop wallpaper on grml system'
+ _files "$expl[@]" -W dirs -g '*.{jpg,png}(-.)'
+ }
+ compdef _grml-wallpaper grml-wallpaper
--- /dev/null
+_wlan_interfaces() {
+ local intf
+ intf=$(iwconfig |& egrep 'IEEE 802.11[abg]' | cut -d' ' -f1 | tr ' ' \\n )
+ # intf=$( fgrep ': ' < /proc/net/wireless | cut -d: -f1 | tr \\n ' ' | tr -s " \t" )
+ _wanted interfaces expl 'wireless network interface' \
+ compadd ${intf}
+}
+
+_wlan_networks() {
+ networks=()
+ while read LINE
+ do
+ networks+=$LINE
+ done <<(iwlist scanning 2>/dev/null | grep ESSID | sed -e s/'.*"\(.*\)"'/'\1'/ )
+ _wanted -x names expl 'network name' \
+ compadd off any on ${networks}
+}
+
+_iwconfig() {
+ local curcontext="$curcontext" state line expl ret=1
+
+ _arguments -C \
+ '(1 * -)--help[display help information]' \
+ '(1 * -)--version[display version information]' \
+ '1:network interface:_wlan_interfaces' \
+ '*:parameter:->parameters' && ret=0
+
+ if [[ -n "$state" ]]; then
+ local -a arg
+
+ case $words[CURRENT-1] in
+ essid) _wlan_networks;;
+ nwid|domain) _message -e ids 'network id' ;;
+ freq|channel) _message -e channels 'channel or frequency' ;;
+ sens) _message -e levels 'signal level' ;;
+ mode)
+ _wanted modes expl 'operating mode' compadd \
+ Ad-Hoc Managed Master Repeater Secondary Monitor Auto
+ ;;
+ ap) _message -e access-points 'access point' ;;
+ nick*) _message -e names 'nickname' ;;
+ rate|bit*) _message -e bit-rates 'bit rate' ;;
+ rts*|frag*) _message -e sizes 'size' ;;
+ key|enc*) _message -e keys 'key' ;;
+ power)
+ arg=(
+ \*{min,max}'[modifier]'
+ '*off[disable power management]'
+ '*on[enable power management]'
+ '*all[receive all packets]'
+ 'unicast[receive unicast packets only]'
+ 'multicast[receive multicast and broadcast packets only]'
+ )
+ ;&
+ min|max)
+ _values -S ' ' -w 'parameter' \
+ 'period[set the period between wake ups]' \
+ 'timeout[set timeout before sleep]' \
+ $arg[@] && ret=0
+ ;;
+ period|timeout) _message -e timeouts 'timeout' ;;
+ txpower) _message -e power 'transmit power' ;;
+ retry) _message -e retries 'retries' ;;
+ *)
+ _values -S ' ' -w 'option' \
+ 'essid[set the network name]' \
+ '(nwid domain)'{nwid,domain}'[set the network ID]' \
+ '(freq channel)'{freq,channel}'[set the operating frequency or channel]' \
+ 'sens[set the sensitivity threhold]' \
+ 'mode[set operating mode]' \
+ 'ap[register with given access point]' \
+ '(nick nickname)'nick{,name}'[set the nickname]' \
+ '(rate bit)'{rate,bit}'[set the bitrate]' \
+ 'rts[set packet size threshold for sending RTS]' \
+ 'frag[set maximum packet fragment size]' \
+ \*{key,enc}'[add encryption key]' \
+ '*power[manipulate power management scheme parameters]' \
+ 'txpower[set transmit power]' \
+ 'retry[set number of retries]' \
+ 'commit[apply changes imediately]' && ret=0
+ ;;
+ esac
+ fi
+
+ return ret
+}
+
+compdef _iwconfig iwconfig
--- /dev/null
+# Filename: /etc/zsh/keephack
+# Purpose: this file belongs to the zsh setup (see /etc/zsh/zshrc)
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Don Jän 27 23:38:57 CET 2005 [mika]
+################################################################################
+
+# save output in a variable for later use
+# Written by Bart Schaefer, for more details see:
+# http://www.zsh.org/cgi-bin/mla/wilma_hiliter/users/2004/msg00894.html ff.
+ function keep {
+ setopt localoptions nomarkdirs nonomatch nocshnullglob nullglob
+ kept=() # Erase old value in case of error on next line
+ kept=($~*)
+ if [[ ! -t 0 ]]; then
+ local line
+ while read line; do
+ kept+=( $line ) # += is a zsh 4.2+ feature
+ done
+ fi
+ print -Rc - ${^kept%/}(T)
+ }
+ # use it via:
+ # locate -i backup | grep -i thursday | keep
+ # echo $kept
+ #
+ # or:
+ #
+ # patch < mypatch.diff
+ # keep **/*.(orig|rej)
+ # vim ${${kept:#*.orig}:r}
+ # rm $kept
+ alias keep='noglob keep'
+
+ _insert_kept() {
+ (( $#kept )) || return 1
+ local action
+ zstyle -s :completion:$curcontext insert-kept action
+ if [[ -n $action ]]
+ then compstate[insert]=$action
+ elif [[ $WIDGET = *expand* ]]
+ then compstate[insert]=all
+ fi
+ if [[ $WIDGET = *expand* ]]
+ then compadd -U ${(M)kept:#${~words[CURRENT]}}
+ else compadd -a kept
+ fi
+ }
+
+ # now bind it to keys and enable completition
+ zle -C insert-kept-result complete-word _generic
+ zle -C expand-kept-result complete-word _generic
+ zstyle ':completion:*-kept-result:*' completer _insert_kept
+ zstyle ':completion:insert-kept-result:*' menu yes select
+
+ bindkey '^Xk' insert-kept-result
+ bindkey '^XK' expand-kept-result # shift-K to get expansion
+
+ # And the "_expand_word_and_keep" replacement for _expand_word:
+ _expand_word_and_keep() {
+ function compadd() {
+ local -A args
+ zparseopts -E -A args J:
+ if [[ $args[-J] == all-expansions ]]
+ then
+ builtin compadd -A kept "$@"
+ kept=( ${(Q)${(z)kept}} )
+ fi
+ builtin compadd "$@"
+ }
+ # for older versions of zsh:
+ local result
+ _main_complete _expand
+ result=$?
+ unfunction compadd
+ return result
+ # versions >=4.2.1 understand this:
+ # { _main_complete _expand } always { unfunction compadd }
+ }
+
+ # This line must come after "compinit" in startup:
+ zle -C _expand_word complete-word _expand_word_and_keep
+ # No bindkey needed, it's already ^Xe from _expand_word
+ zstyle ':completion:*' insert-kept menu
+ zmodload -i zsh/complist
+
+## END OF FILE #################################################################
--- /dev/null
+# Filename: zlogin
+# Purpose: system-wide .zlogin file for zsh(1)
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Die Nov 16 13:25:04 CET 2004 [mika]
+################################################################################
+# This file is sourced only for login shells. It
+# should contain commands that should be executed only
+# in login shells. It should be used to set the terminal
+# type and run a series of external commands (fortune,
+# msgs, from, etc.)
+#
+# Global Order: zshenv, zprofile, zshrc, zlogin
+################################################################################
+# nothing yet.
+## END OF FILE #################################################################
--- /dev/null
+# Filename: zlogout
+# Purpose: system-wide .zlogout file for zsh(1)
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Die Nov 16 13:25:11 CET 2004 [mika]
+################################################################################
+# nothing yet.
+## END OF FILE #################################################################
--- /dev/null
+# Filename: zprofile
+# Purpose: system-wide .zprofile file for zsh(1)
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Fri Nov 11 00:08:57 CET 2005 [mika]
+################################################################################
+# This file is sourced only for login shells (i.e. shells
+# invoked with "-" as the first character of argv[0], and
+# shells invoked with the -l flag.)
+#
+# Global Order: zshenv, zprofile, zshrc, zlogin
+################################################################################
+# nothing yet
+## END OF FILE #################################################################
--- /dev/null
+# Filename: zshenv
+# Purpose: system-wide .zshenv file for zsh(1)
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Sam Sep 23 14:20:25 CEST 2006 [mika]
+################################################################################
+# This file is sourced on all invocations of the shell.
+# If the -f flag is present or if the NO_RCS option is
+# set within this file, all other initialization files
+# are skipped.
+#
+# This file should contain commands to set the command
+# search path, plus other important environment variables.
+# This file should not contain commands that produce
+# output or assume the shell is attached to a tty.
+#
+# Global Order: zshenv, zprofile, zshrc, zlogin
+################################################################################
+
+# language settings (read in /etc/environment before /etc/default/locale as
+# the latter one is the default on Debian nowadays)
+ [ -r /etc/environment ] && source /etc/environment
+ [ -r /etc/default/locale ] && source /etc/default/locale
+ [ -n "$LANG" ] && export LANG || export LANG="en_US.iso885915"
+ [ -n "$LC_ALL" ] && export LC_ALL # || export LC_ALL="$LANG"
+ [ -n "$LC_MESSAGES" ] && export LC_MESSAGES
+
+ [ -r /etc/sysconfig/keyboard ] && source /etc/sysconfig/keyboard
+
+# set environment variables (important for autologin on tty)
+ [ -n "$HOSTNAME" ] || export HOSTNAME=`hostname`
+ [ -z "$USER" ] && export USER=`id -un`
+
+ [[ $LOGNAME == LOGIN ]] && LOGNAME=$(id -un)
+
+# workaround for live-cd mode as $HOME is not set via rungetty
+ if [ -f /etc/grml_cd ] ; then
+ if (( EUID == 0 )); then
+ export HOME=/root
+ else
+ export HOME=/home/$USER
+ fi
+ fi
+
+# set $PATH
+# gentoo users have to source /etc/profile.env
+ if [ -r /etc/gentoo-release ] ; then
+ [ -r /etc/profile.env ] && source /etc/profile.env
+ if (( EUID != 0 )); then
+ PATH="$HOME/bin:/bin/:/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/games:/usr/NX/bin:$PATH"
+ else
+ PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/bin:/usr/NX/bin:$PATH"
+ fi
+ else
+ # support extra software in special directory outside of squashfs environment in live-cd mode
+ if [ -f /etc/grml_cd ] ; then
+ [ -d /cdrom/addons/ ] && ADDONS=':/cdrom/addons/'
+ fi
+ if (( EUID != 0 )); then
+ PATH="$HOME/bin:/bin/:/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/games:/usr/NX/bin$ADDONS"
+ else
+ PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/bin:/usr/NX/bin$ADDONS"
+ fi
+# fi
+ fi
+
+# less (:=pager) options:
+# export LESS=C
+ export LESSOPEN="|lesspipe.sh %s"
+ export READNULLCMD=${PAGER:-/usr/bin/pager}
+ export DISTCC_HOSTS="+zeroconf"
+# MAKEDEV should be usable on udev as well by default:
+ export WRITE_ON_UDEV=yes
+
+## END OF FILE #################################################################
--- /dev/null
+# Filename: zshrc
+# Purpose: config file for zsh (z shell)
+# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports: see http://grml.org/bugs/
+# License: This file is licensed under the GPL v2.
+# Latest change: Son Okt 08 01:46:31 CEST 2006 [mika]
+################################################################################
+# This file is sourced only for interactive shells. It
+# should contain commands to set up aliases, functions,
+# options, key bindings, etc.
+#
+# Global Order: zshenv, zprofile, zshrc, zlogin
+################################################################################
+
+# {{{ check for version/system
+# check for versions (compatibility reasons)
+ is4(){
+ if [[ $ZSH_VERSION == 4.* ]]; then
+ return 0
+ else
+ return 1
+ fi
+ }
+
+# current release
+ is42(){
+ if [[ $ZSH_VERSION == 4.<2->* ]]; then
+ return 0
+ else
+ return 1
+ fi
+ }
+
+# grml specific stuff
+ isgrml(){
+ if [ -f /etc/grml_version ] ; then
+ return 0
+ else
+ return 1
+ fi
+ }
+
+ isgrmlcd(){
+ if [ -f /etc/grml_cd ] ; then
+ return 0
+ else
+ return 1
+ fi
+ }
+
+# check for user, if not running as root set $SUDO to sudo
+ (( EUID != 0 )) && SUDO='sudo' || SUDO=''
+
+# change directory to home on first invocation of zsh
+# important for rungetty -> autologin
+# Thanks go to Bart Schaefer!
+ isgrml && checkhome() {
+ if [[ -z "$ALREADY_DID_CD_HOME" ]]; then
+ export ALREADY_DID_CD_HOME=$HOME
+ cd
+ fi
+ }
+# }}}
+
+# {{{ set some variables
+ [[ -z "$EDITOR" ]] && export EDITOR='vim'
+ [[ -z "$SHELL" ]] && export SHELL='/bin/zsh'
+ [[ -z "$MAIL" ]] && export MAIL="/var/mail/$USER"
+ [[ -f ~/.terminfo/m/mostlike ]] && MYLESS='LESS=C TERMINFO=~/.terminfo TERM=mostlike less' || MYLESS='less'
+ [[ -x /usr/bin/dircolors ]] && eval `dircolors -b`
+
+# Search path for the cd comman
+# cdpath=(.. ~)
+
+# automatically remove duplicates from these arrays
+ typeset -U path cdpath fpath manpath
+# }}}
+
+# {{{ keybindings
+ if [[ "$TERM" != emacs ]]; then
+ [[ -z "$terminfo[kdch1]" ]] || bindkey -M emacs "$terminfo[kdch1]" delete-char
+ [[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
+ [[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line
+ [[ -z "$terminfo[kdch1]" ]] || bindkey -M vicmd "$terminfo[kdch1]" vi-delete-char
+ [[ -z "$terminfo[khome]" ]] || bindkey -M vicmd "$terminfo[khome]" vi-beginning-of-line
+ [[ -z "$terminfo[kend]" ]] || bindkey -M vicmd "$terminfo[kend]" vi-end-of-line
+ [[ -z "$terminfo[cuu1]" ]] || bindkey -M viins "$terminfo[cuu1]" vi-up-line-or-history
+ [[ -z "$terminfo[cuf1]" ]] || bindkey -M viins "$terminfo[cuf1]" vi-forward-char
+ [[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" vi-up-line-or-history
+ [[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" vi-down-line-or-history
+ [[ -z "$terminfo[kcuf1]" ]] || bindkey -M viins "$terminfo[kcuf1]" vi-forward-char
+ [[ -z "$terminfo[kcub1]" ]] || bindkey -M viins "$terminfo[kcub1]" vi-backward-char
+ # ncurses stuff:
+ [[ "$terminfo[kcuu1]" == "\eO"* ]] && bindkey -M viins "${terminfo[kcuu1]/O/[}" vi-up-line-or-history
+ [[ "$terminfo[kcud1]" == "\eO"* ]] && bindkey -M viins "${terminfo[kcud1]/O/[}" vi-down-line-or-history
+ [[ "$terminfo[kcuf1]" == "\eO"* ]] && bindkey -M viins "${terminfo[kcuf1]/O/[}" vi-forward-char
+ [[ "$terminfo[kcub1]" == "\eO"* ]] && bindkey -M viins "${terminfo[kcub1]/O/[}" vi-backward-char
+ [[ "$terminfo[khome]" == "\eO"* ]] && bindkey -M viins "${terminfo[khome]/O/[}" beginning-of-line
+ [[ "$terminfo[kend]" == "\eO"* ]] && bindkey -M viins "${terminfo[kend]/O/[}" end-of-line
+ [[ "$terminfo[khome]" == "\eO"* ]] && bindkey -M emacs "${terminfo[khome]/O/[}" beginning-of-line
+ [[ "$terminfo[kend]" == "\eO"* ]] && bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line
+fi
+
+## keybindings (run 'bindkeys' for details, more details via man zshzle)
+# use emacs style per default
+ bindkey -e
+# use vi style:
+# bindkey -v
+
+#if [[ "$TERM" == screen ]]; then
+ bindkey '\e[1~' beginning-of-line # home
+ bindkey '\e[4~' end-of-line # end
+ bindkey "^[[A" up-line-or-search # cursor up
+ bindkey "^[[B" down-line-or-search # <ESC>-
+ bindkey '^x' history-beginning-search-backward # alternative ways of searching the shell history
+# bindkey -s '^L' "|less\n" # ctrl-L pipes to less
+# bindkey -s '^B' " &\n" # ctrl-B runs it in the background
+# if terminal type is set to 'rxvt':
+ bindkey '\e[7~' beginning-of-line # home
+ bindkey '\e[8~' end-of-line # end
+#fi
+
+# bindkey '\eq' push-line-or-edit
+# }}}
+
+# {{{ autoloading
+ autoload -U zmv # who needs mmv or rename?
+ autoload history-search-end
+
+ # we don't want to quote/espace URLs on our own...
+ # avoid 'url-quote-magic: function definition file not found' on some older boxes
+ if [ -f /usr/share/zsh/$ZSH_VERSION/functions/Zle/url-quote-magic ] ; then
+ autoload -U url-quote-magic
+ zle -N self-insert url-quote-magic
+ fi
+
+ alias run-help >&/dev/null && unalias run-help
+ autoload run-help # use via 'esc-h'
+
+ is4 && autoload -U compinit && compinit # completition system
+ is4 && autoload -U zed # use ZLE editor to edit a file or function
+
+ is4 && zmodload -i zsh/complist
+ is4 && zmodload -i zsh/deltochar
+ is4 && zmodload -i zsh/mathfunc
+# autoload zsh modules when they are referenced
+ is4 && zmodload -a zsh/stat stat
+ is4 && zmodload -a zsh/zpty zpty
+ is4 && zmodload -a zsh/zprof zprof
+ is4 && zmodload -ap zsh/mapfile mapfile
+
+ is4 && autoload -U insert-files && \
+ zle -N insert-files && \
+ bindkey "^Xf" insert-files # C-x-f
+
+ bindkey ' ' magic-space # also do history expansion on space
+ bindkey '\ei' menu-complete # menu completion via esc-i
+
+# press esc-e for editing command line in $EDITOR or $VISUAL
+ is4 && autoload -U edit-command-line && \
+ zle -N edit-command-line && \
+ bindkey '\ee' edit-command-line
+
+# press "ctrl-e d" to insert the actual date in the form yyyy-mm-dd
+ _bkdate() { BUFFER="$BUFFER$(date '+%F')"; CURSOR=$#BUFFER; }
+ bindkey '\C-ed' _bkdate
+ zle -N _bkdate
+
+# press esc-m for inserting last typed word again (thanks to caphuso!)
+ insert-last-typed-word() { zle insert-last-word -- 0 -1 }; \
+ zle -N insert-last-typed-word; bindkey "\em" insert-last-typed-word
+
+# set command prediction from history, see 'man 1 zshcontrib'
+# is4 && autoload -U predict-on && \
+# zle -N predict-on && \
+# zle -N predict-off && \
+# bindkey "^X^Z" predict-on && \
+# bindkey "^Z" predict-off
+
+# put job into foreground via ctrl-z:
+ bindkey -s '^z' "fg\n"
+
+# press ctrl-q to quote line:
+# mquote () {
+# zle beginning-of-line
+# zle forward-word
+# # RBUFFER="'$RBUFFER'"
+# RBUFFER=${(q)RBUFFER}
+# zle end-of-line
+# }
+# zle -N mquote && bindkey '^q' mquote
+
+# run command line as user root via sudo:
+ _sudo-command-line() {
+ [[ $BUFFER != sudo\ * ]] && LBUFFER="sudo $LBUFFER"
+ }
+ zle -N sudo-command-line _sudo-command-line
+ bindkey "^Os" sudo-command-line
+# }}}
+
+# {{{ set some important options
+ umask 022
+
+# history:
+ setopt append_history # append history list to the history file (important for multiple parallel zsh sessions!)
+ is4 && setopt SHARE_HISTORY # import new commands from the history file also in other zsh-session
+ setopt extended_history # save each command's beginning timestamp and the duration to the history file
+ is4 && setopt histignorealldups # If a new command line being added to the history
+ # list duplicates an older one, the older command is removed from the list
+ setopt histignorespace # remove command lines from the history list when
+ # the first character on the line is a space
+# setopt histallowclobber # add `|' to output redirections in the history
+# setopt NO_clobber # warning if file exists ('cat /dev/null > ~/.zshrc')
+ setopt auto_cd # if a command is issued that can't be executed as a normal command,
+ # and the command is the name of a directory, perform the cd command to that directory
+ setopt extended_glob # in order to use #, ~ and ^ for filename generation
+ # grep word *~(*.gz|*.bz|*.bz2|*.zip|*.Z) ->
+ # -> searches for word not in compressed files
+ # don't forget to quote '^', '~' and '#'!
+ setopt notify # report the status of backgrounds jobs immediately
+ setopt hash_list_all # Whenever a command completion is attempted, make sure \
+ # the entire command path is hashed first.
+ setopt completeinword # not just at the end
+# setopt nocheckjobs # don't warn me about bg processes when exiting
+ setopt nohup # and don't kill them, either
+# setopt printexitvalue # alert me if something failed
+# setopt dvorak # with spelling correction, assume dvorak kb
+ setopt auto_pushd # make cd push the old directory onto the directory stack.
+ setopt nonomatch # try to avoid the 'zsh: no matches found...'
+ setopt nobeep # avoid "beep"ing
+
+ MAILCHECK=30 # mailchecks
+ REPORTTIME=5 # report about cpu-/system-/user-time of command if running longer than 5 secondes
+ watch=(notme root) # watch for everyone but me and root
+
+# define word separators (for stuff like backward-word, forward-word, backward-kill-word,..)
+# WORDCHARS='*?_-.[]~=/&;!#$%^(){}<>' # the default
+# WORDCHARS=.
+# WORDCHARS='*?_[]~=&;!#$%^(){}'
+# WORDCHARS='${WORDCHARS:s@/@}'
+
+# only slash should be considered as a word separator:
+ slash-backward-kill-word() {
+ local WORDCHARS="${WORDCHARS:s@/@}"
+ # zle backward-word
+ zle backward-kill-word
+ }
+ zle -N slash-backward-kill-word
+ bindkey '\ev' slash-backward-kill-word # press esc-v to delete a word until its last '/' (not the same as ctrl-w!)
+# }}}
+
+# {{{ history
+ export ZSHDIR=$HOME/.zsh
+ HISTFILE=$HOME/.zsh_history
+ isgrmlcd && HISTSIZE=500 || HISTSIZE=5000
+ isgrmlcd && SAVEHIST=1000 || SAVEHIST=10000 # useful for setopt append_history
+# }}}
+
+# {{{ display battery status on right side of prompt via running 'BATTERY=1 zsh'
+ if [ -n "$BATTERY" ] ; then
+ if [ -x =acpi ] ; then
+ PERCENT="${(C)${(s| |)$(acpi 2>/dev/null)}[4]}"
+ [ -z "$PERCENT" ] && PERCENT='acpi not present'
+ if [ "${PERCENT%%%}" -lt 20 ] ; then
+ PERCENT="warning: ${PERCENT}%"
+ fi
+ fi
+ fi
+# }}}
+
+# {{{ set prompt
+ autoload promptinit ; promptinit # people should be able to use their favourite prompt
+ # precmd() => a function which is executed just before each prompt
+ # precmd () { setopt promptsubst; [[ -o interactive ]] && jobs -l;
+ # run 'NOPRECMD=1 zsh' to disable the precmd + preexec commands
+ is4 && ! [[ -n "$NOPRECMD" ]] && precmd () {
+ if [ -n "$BATTERY" ] ; then
+ RPROMPT="%(?..:()% ${PERCENT}${SCREENTITLE}"
+ else
+ RPROMPT="%(?..:()% ${SCREENTITLE}"
+ fi
+ # adjust title of xterm
+ # see http://www.faqs.org/docs/Linux-mini/Xterm-Title.html
+ case $TERM in (xterm*|rxvt)
+ print -Pn "\e]0;%n@%m: %~\a"
+ ;;
+ esac
+ }
+
+ # chpwd () => a function which is executed whenever the directory is changed
+
+ # preexec() => a function running before every command
+ is4 && ! [[ -n "$NOPRECMD" ]] && preexec () {
+ # set screen window title if running in a screen
+ # get the name of the program currently running and hostname of local machine
+ local HOSTNAME=$(hostname)
+ if [[ "$HOSTNAME" != grml ]] ; then
+ NAME="@$HOSTNAME"
+ fi
+ if [[ "$TERM" == screen* ]]; then
+# local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} # dont't use hostname
+ local CMD="${1[(wr)^(*=*|sudo|ssh|-*)]}$NAME" # use hostname
+ echo -ne "\ek$CMD\e\\"
+ fi
+ # set the screen title to "zsh" when sitting at the command prompt:
+ if [[ "$TERM" == screen* ]]; then
+ SCREENTITLE=$'%{\ekzsh\e\\%}'
+ else
+ SCREENTITLE=''
+ fi
+ # adjust title of xterm
+ case $TERM in (xterm*|rxvt)
+ print -Pn "\e]0;%n@%m: $1\a"
+ ;;
+ esac
+ }
+
+ EXITCODE="%(?..%?%1v )"
+ local BLUE="%{\e[1;34m%}"
+ local RED="%{\e[1;31m%}"
+ local GREEN="%{\e[1;32m%}"
+ local CYAN="%{\e[1;36m%}"
+ local WHITE="%{\e[1;37m%}"
+ local NO_COLOUR="%{\e[0m%}"
+ PS2='`%_> ' # secondary prompt, printed when the shell needs more information to complete a command.
+ PS3='?# ' # selection prompt used within a select loop.
+ PS4='+%N:%i:%_> ' # the execution trace prompt (setopt xtrace). default: '+%N:%i>'
+
+# set variable debian_chroot if running in a chroot with /etc/debian_chroot
+ if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
+ debian_chroot=$(cat /etc/debian_chroot)
+ fi
+
+# don't use colors on dumb terminals (like emacs):
+ if [[ "$TERM" == dumb ]] ; then
+ PROMPT="${EXITCODE}${debian_chroot:+($debian_chroot)}%n@%m %40<...<%B%~%b%<< %# "
+ else
+ # only if $GRMLPROMPT is set (e.g. via 'GRMLPROMPT=1 zsh') use the extended prompt
+ # set variable identifying the chroot you work in (used in the prompt below)
+ if [[ -n "$GRMLPROMPT" ]]; then
+ PROMPT="${RED}${EXITCODE}${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D
+${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# "
+ else
+ if (( EUID != 0 )); then
+ PROMPT="${RED}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# " # primary prompt string
+ else
+ PROMPT="${BLUE}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${RED}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# " # primary prompt string
+ fi
+ fi
+ fi
+
+# if we are inside a grml-chroot set a specific prompt theme
+ if [ -n "$GRML_CHROOT" ] ; then
+ PROMPT="%{$fg[red]%}(CHROOT) %{$fg_bold[red]%}%n%{$fg_no_bold[white]%}@%m %40<...<%B%~%b%<< %\# "
+ fi
+# }}}
+
+# {{{ 'hash' some often used directories
+ hash -d deb=/var/cache/apt/archives
+ hash -d doc=/usr/share/doc
+ hash -d linux=/lib/modules/$(command uname -r)/build/
+ hash -d log=/var/log
+ hash -d slog=/var/log/syslog
+ hash -d src=/usr/src
+ hash -d templ=/usr/share/doc/grml-templates
+ hash -d tt=/usr/share/doc/texttools-doc
+ hash -d www=/var/www
+# }}}
+
+# {{{ some aliases
+ if [ $UID = 0 ] ; then
+ [ -r /etc/grml/screenrc ] && alias screen='/usr/bin/screen -c /etc/grml/screenrc'
+ elif [ -r $HOME/.screenrc ] ; then
+ alias screen="/usr/bin/screen -c $HOME/.screenrc"
+ else
+ [ -r /etc/grml/screenrc_grml ] && alias screen='/usr/bin/screen -c /etc/grml/screenrc_grml'
+ fi
+
+ if ls --help 2>/dev/null |grep -- --color= >/dev/null && [ "$TERM" != dumb ] ; then
+ alias ls='ls -b -CF --color=auto' # do we have GNU ls with color-support?
+ alias la='ls -la --color=auto'
+ alias ll='ls -l --color=auto'
+ alias lh='ls -hAl --color=auto'
+ alias l='ls -lF --color=auto'
+ else
+ alias ls='ls -b -CF'
+ alias la='ls -la'
+ alias ll='ls -l'
+ alias lh='ls -hAl'
+ alias l='ls -lF'
+ fi
+
+ alias cp='nocorrect cp' # no spelling correction on cp
+ alias mkdir='nocorrect mkdir' # no spelling correction on mkdir
+ alias mv='nocorrect mv' # no spelling correction on mv
+ alias rm='nocorrect rm' # no spelling correction on rm
+
+ alias rd='rmdir'
+ alias md='mkdir'
+
+ alias swspeak="setopt singlelinezle ; unsetopt prompt_cr ; export PS1='%m%# ' ; speechd-up" # set up software synth.
+
+# truecrypt; use e.g. via 'truec /dev/ice' /mnt/ice' or 'truec -i'
+ if [ -x /usr/sbin/truecrypt ] ; then
+ alias truec='truecrypt --mount-options "rw,sync,dirsync,users,uid=1000,gid=users,umask=077" '
+ fi
+
+ zsh-help(){print "$bg[white]$fg[black]
+zsh-help - hints for use of zsh on grml
+=======================================$reset_color
+
+Main configuration of zsh happens in /etc/zsh/zshrc (global)
+and /etc/skel/.zshrc which is copied to \$HOME/.zshrc once.
+The files are part of the package grml-etc, if you want to
+use them on a non-grml-system just get the tar.gz from
+http://grml.org/repos/
+
+If you want to stay in sync with zsh configuration of grml
+run 'ln -sf /etc/skel/.zshrc \$HOME/.zshrc' and configure
+your own stuff in \$HOME/.zshrc.local. System wide configuration
+without touching configuration files of grml can take place
+in /etc/zsh/zshrc.local.
+
+If you want to use the configuration of user grml also when
+running as user root just run 'zshskel' which will source
+the file /etc/skel/.zshrc.
+
+For information regarding zsh start at http://grml.org/zsh/
+
+Take a look at grml's zsh refcard:
+% xpdf =(zcat /usr/share/doc/grml-docs/zsh/grml-zsh-refcard.pdf.gz)
+
+Check out the main zsh refcard:
+% $BROWSER http://www.bash2zsh.com/zsh_refcard/refcard.pdf
+
+And of course visit the zsh-lovers:
+% man zsh-lovers
+
+You can adjust some options through environment variables when
+invoking zsh without having to edit configuration files.
+Basically meant for bash users who are not used to the power of
+the zsh yet. :)
+
+ \"NOCOR=1 zsh\" => deactivate automatic correction
+ \"NOMENU=1 zsh\" => do not use menu completion (note: use strg-d for completion instead!)
+ \"NOPRECMD=1 zsh\" => disable the precmd + preexec commands (set GNU screen title)
+ \"BATTERY=1 zsh\" => activate battery status (via acpi) on right side of prompt
+$bg[white]$fg[black]
+Please report wishes + bugs to the grml-team: http://grml.org/bugs/
+Enjoy your grml system with the zsh!$reset_color"
+}
+
+# debian stuff
+ if [ -r /etc/debian_version ] ; then
+ alias acs="apt-cache search"
+ alias acsh="apt-cache show"
+ alias adg="$SUDO apt-get dist-upgrade"
+ alias agi="$SUDO apt-get install"
+ alias ag="$SUDO apt-get upgrade"
+ alias au="$SUDO apt-get update"
+ alias dbp="dpkg-buildpackage"
+ alias ge="grep-excuses"
+
+ isgrmlcd && alias su="sudo su" # change to user root
+ alias tlog="tail -f /var/log/syslog" # take a look at the syslog
+ alias zshskel="source /etc/skel/.zshrc" # source skeleton zshrc
+ fi
+
+# if cdrecord is a symlink (to wodim) or isn't present at all warn:
+ if [ -L /usr/bin/cdrecord -o ! -x =cdrecord ] ; then
+ if [ -x =wodim ] ; then
+ alias cdrecord="echo 'cdrecord is not provided under its original name by Debian anymore.
+See #377109 in the BTS of Debian for more details.
+
+Please use the wodim binary instead' ; return 1"
+ fi
+ fi
+
+# }}}
+
+# {{{ Use hard limits, except for a smaller stack and no core dumps
+ unlimit
+ limit stack 8192
+ limit core 0 # important for a live-cd-system
+ limit -s
+# }}}
+
+# {{{ completion stuff
+
+# Where to look for autoloaded function definitions
+ if [ -d /etc/zsh/completion.d ] ; then
+ local comp=/etc/zsh/completion.d
+ for func in $comp/*(N-.:t); . ${comp}/${func}
+ fi
+
+# called later (via is4 && grmlcomp)
+# notice: use 'zstyle' for getting current settings
+# press ^Xh (control-x h) for getting tags in context; ^X? (control-x ?) to run complete_debug with trace output
+grmlcomp() {
+## completion system
+ zstyle ':completion:*:approximate:' max-errors 'reply=( $((($#PREFIX+$#SUFFIX)/3 )) numeric )' # allow one error for every three characters typed in approximate completer
+ zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~' # don't complete backup files as executables
+ zstyle ':completion:*:correct:*' insert-unambiguous true # start menu completion only if it could find no unambiguous initial string
+ zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}' #
+ zstyle ':completion:*:correct:*' original true #
+ zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} # activate color-completion(!)
+ zstyle ':completion:*:descriptions' format $'%{\e[0;31m%}completing %B%d%b%{\e[0m%}' # format on completion
+ zstyle ':completion:*:*:cd:*:directory-stack' menu yes select # complete 'cd -<tab>' with menu
+ zstyle ':completion:*:expand:*' tag-order all-expansions # insert all expansions for expand completer
+ zstyle ':completion:*:history-words' list false #
+ zstyle ':completion:*:history-words' menu yes # activate menu
+ zstyle ':completion:*:history-words' remove-all-dups yes # ignore duplicate entries
+ zstyle ':completion:*:history-words' stop yes #
+ zstyle ':completion:*:*:linda:*' file-patterns '*.deb' # complete debian packages for command 'linda'
+ zstyle ':completion:*:*:lintian:*' file-patterns '*.deb' # complete debian packages for command 'lintian'
+ zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # match uppercase from lowercase
+ zstyle ':completion:*:matches' group 'yes' # separate matches into groups
+ if [[ -z "$NOMENU" ]] ; then
+ zstyle ':completion:*' menu select=5 # if there are more than 5 options allow selecting from a menu
+ else
+ setopt no_auto_menu # don't use any menus at all
+ fi
+ zstyle ':completion:*:messages' format '%d' #
+ zstyle ':completion:*:options' auto-description '%d' #
+ zstyle ':completion:*:options' description 'yes' # describe options in full
+ zstyle ':completion:*:processes' command 'ps -au$USER' # on processes completion complete all user processes
+ zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters # offer indexes before parameters in subscripts
+ zstyle ':completion:*' verbose true # provide verbose completion information
+ zstyle ':completion:*:warnings' format $'%{\e[0;31m%}No matches for:%{\e[0m%} %d' # set format for warnings
+ zstyle ':completion:*:*:zcompile:*' ignored-patterns '(*~|*.zwc)' # define files to ignore for zcompile
+ zstyle ':completion:correct:' prompt 'correct to: %e' #
+ zstyle ':completion::(^approximate*):*:functions' ignored-patterns '_*' # Ignore completion functions for commands you don't have:
+
+# complete manual by their section
+ zstyle ':completion:*:manuals' separate-sections true
+ zstyle ':completion:*:man:*' menu yes select
+
+## correction
+# run rehash on completion so new installed program are found automatically:
+ _force_rehash() {
+ (( CURRENT == 1 )) && rehash
+ return 1 # Because we didn't really complete anything
+ }
+# some people don't like the automatic correction - so run 'NOCOR=1 zsh' to deactivate it
+ if [[ -n "$NOCOR" ]] ; then
+ zstyle ':completion:*' completer _oldlist _expand _force_rehash _complete
+ setopt nocorrect # do not try to correct the spelling if possible
+ else
+# zstyle ':completion:*' completer _oldlist _expand _force_rehash _complete _correct _approximate
+ setopt correct # try to correct the spelling if possible
+ zstyle -e ':completion:*' completer '
+ if [[ $_last_try != "$HISTNO$BUFFER$CURSOR" ]]; then
+ _last_try="$HISTNO$BUFFER$CURSOR"
+ reply=(_complete _match _prefix)
+ else
+ if [[ $words[1] = (rm|mv) ]]; then
+ reply=(_complete)
+ else
+ reply=(_oldlist _expand _force_rehash _complete _correct _approximate)
+ fi
+ fi'
+ fi
+# zstyle ':completion:*' completer _complete _correct _approximate
+# zstyle ':completion:*' expand prefix suffix
+
+# command for process lists, the local web server details and host completion
+ hosts=(`hostname` grml.org)
+ zstyle '*' hosts $hosts
+ zstyle ':completion:*:urls' local 'www' '/var/www/' 'public_html'
+
+# caching
+ [ -d $ZSHDIR/cache ] && zstyle ':completion:*' use-cache yes && \
+ zstyle ':completion::complete:*' cache-path $ZSHDIR/cache/
+
+# use ~/.ssh/known_hosts for completion [does not work with hashing of new ssh versions anymore]
+ if [ -f "$HOME/.ssh/known_hosts" ] ; then
+ hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[\|]*}%%\ *}%%,*})
+ zstyle ':completion:*:hosts' hosts $hosts
+ fi
+
+# use generic completion system for programs not yet defined:
+ compdef _gnu_generic tail head feh cp mv gpg df stow uname ipacsum fetchipac
+
+# see upgrade function in this file
+ compdef _hosts upgrade
+}
+# }}}
+
+# {{{ grmlstuff
+grmlstuff() {
+# people should use 'grml-x'!
+ function startx() {
+ if [ -e /etc/X11/xorg.conf ] ; then
+ [ -x /usr/bin/startx ] && /usr/bin/startx || /usr/X11R6/bin/startx
+ else
+ echo "Please use the script \"grml-x\" for starting the X Window System
+because there does not exist /etc/X11/xorg.conf yet.
+If you want to use startx anyway please call \"/usr/bin/startx\"."
+ return -1
+ fi
+ }
+
+ function xinit() {
+ if [ -e /etc/X11/xorg.conf ] ; then
+ [ -x /usr/bin/xinit ] && /usr/bin/xinit || /usr/X11R6/bin/xinit
+ else
+ echo "Please use the script \"grml-x\" for starting the X Window System.
+because there does not exist /etc/X11/xorg.conf yet.
+If you want to use xinit anyway please call \"/usr/bin/xinit\"."
+ return -1
+ fi
+ }
+
+ if [ -x /usr/sbin/915resolution ] ; then
+ alias 855resolution='echo -e "Please use 915resolution as resolution modify tool for Intel graphic chipset."; return -1'
+ fi
+
+ alias grml-version='cat /etc/grml_version'
+
+ if [ -x /usr/sbin/rebuildfstab ] ; then
+ local fstabuser=$(getent passwd 1000 | cut -d: -f1)
+ alias grml-rebuildfstab="rebuildfstab -v -r -u $fstabuser -g $fstabuser"
+ fi
+}
+# }}}
+
+# {{{ now run the functions
+ isgrml && checkhome
+ is4 && isgrml && grmlstuff
+ is4 && grmlcomp
+# }}}
+
+# {{{ keephack
+ [ -r /etc/zsh/keephack ] && is4 && source /etc/zsh/keephack
+# }}}
+
+# {{{ wonderful idea of using "e" glob qualifier by Peter Stephenson
+# You use it as follows:
+# $ NTREF=/reference/file
+# $ ls -l *(e:nt:)
+# This lists all the files in the current directory newer than the reference file.
+# You can also specify the reference file inline; note quotes:
+# $ ls -l *(e:'nt ~/.zshenv':)
+ is4 && nt() {
+ if [[ -n $1 ]]; then
+ local NTREF=${~1}
+ fi
+ [[ $REPLY -nt $NTREF ]]
+ }
+# }}}
+
+# shell functions {{{
+ setenv() { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" } # csh compatibility
+ freload() { while (( $# )); do; unfunction $1; autoload -U $1; shift; done }
+ manzsh() { /usr/bin/man zshall | vim -c "se ft=man| se hlsearch" +/"$1" - ; }
+# manzsh() { man zshall | $MYLESS -p $1 ; }
+# manzsh() { /usr/bin/man zshall | most +/"$1" ; }
+
+# use "dchange <package-name>" to view Debian's changelog of the package:
+ dchange() { most /usr/share/doc/${1}/changelog.Debian.gz ; }
+ _dchange() { _files -W /usr/share/doc -/ }
+ compdef _dchange dchange
+
+# use "uchange <package-name>" to view upstream's changelog of the package:
+ uchange() { most /usr/share/doc/${1}/changelog.gz ; }
+ _uchange() { _files -W /usr/share/doc -/ }
+ compdef _uchange uchange
+
+# edit alias via zle:
+ edalias() {
+ [ -z "$1" ] && { echo "Usage: edalias <alias_to_edit>" ; return 1 } || vared aliases'[$1]' ;
+ }
+ compdef _aliases edalias
+
+# edit function via zle:
+ edfun() {
+ [ -z "$1" ] && { echo "Usage: edfun <function_to_edit>" ; return 1 } || zed -f "$1" ;
+ }
+ compdef _functions edfun
+
+# use it e.g. via 'Restart apache2'
+ if [ -d /etc/init.d ] ; then
+ for i in Start Restart Stop Reload ; do
+ eval "$i() { $SUDO /etc/init.d/\$1 ${i:l} $2 ; }"
+ done
+# now the completion for this:
+ compctl -g "$(echo /etc/init.d/*(:t))" Start Restart Stop Reload
+ fi
+# }}}
+
+# source another config file if present {{{
+ if [ -r /etc/zsh/zshrc.local ]; then
+ source /etc/zsh/zshrc.local
+ fi
+# }}}
+
+# "persistent history" {{{
+# just write important commands you always need to ~/.important_commands
+ if [ -r ~/.important_commands ] ; then
+ fc -R ~/.important_commands
+ fi
+# }}}
+
+## END OF FILE #################################################################
+# vim:foldmethod=marker