summaryrefslogtreecommitdiff
path: root/.zsh/func
diff options
context:
space:
mode:
Diffstat (limited to '.zsh/func')
-rwxr-xr-x.zsh/func/baseconv20
-rwxr-xr-x.zsh/func/vcsh48
2 files changed, 68 insertions, 0 deletions
diff --git a/.zsh/func/baseconv b/.zsh/func/baseconv
new file mode 100755
index 0000000..05e7d8d
--- /dev/null
+++ b/.zsh/func/baseconv
@@ -0,0 +1,20 @@
+#!/bin/zsh
+#
+# func/baseconv
+#
+# zsh-based conversion between numeric bases
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: git://git.madduck.net/etc/zsh.git
+#
+
+if [ $# -ne 3 ]; then
+ echo Usage: ${0##*/} ibase obase number
+ return 1
+fi
+
+typeset -li $2 var
+eval ((var=${1}#${3}))
+echo ${var#*\#}
diff --git a/.zsh/func/vcsh b/.zsh/func/vcsh
new file mode 100755
index 0000000..31da22d
--- /dev/null
+++ b/.zsh/func/vcsh
@@ -0,0 +1,48 @@
+#!/bin/zsh
+#
+# func/vcsh
+#
+# set the context for vcs-home operations
+#
+# Copyright © 1994–2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+# Source repository: git://git.madduck.net/etc/zsh.git
+#
+# Adapted by Tobias Klauser <tklauser@distanz.ch>
+#
+# Source repository: git://git.distanz.ch/dotfiles/zsh.git
+
+local FGIT_BASE="$HOME/src/dotfiles"
+
+if [ "${1:---help}" = '--help' ] || [ $# -gt 1 ]; then
+ echo "usage: ${0##*/} reponame" >&2
+ echo "usage: ${0##*/} -l" >&2
+ [ "$1" = '--help' ]
+ return $?
+
+elif [ "$1" = '-l' ]; then
+ for i in $FGIT_BASE/*.git; do
+ i="${i#$FGIT_BASE/}"
+ echo "${i%.git}"
+ done
+ return 0
+fi
+
+if [ ! -d "$FGIT_BASE/${1}.git" ]; then
+ echo E: no repository found for "$1" >&2
+ return 2
+fi
+
+old_GIT_DIR="${GIT_DIR:-}"
+old_GIT_WORK_TREE="${GIT_WORK_TREE:-}"
+
+export GIT_DIR="$FGIT_BASE/${1}.git"
+export GIT_WORK_TREE="$GIT_DIR/$(git config --get core.worktree)"
+
+$SHELL -i || :
+
+GIT_DIR="$old_GIT_DIR"
+[ -z "$GIT_DIR" ] && unset GIT_DIR
+GIT_WORK_TREE="$old_GIT_WORK_TREE"
+[ -z "$GIT_WORK_TREE" ] && unset GIT_WORK_TREE