about summary refs log tree commit diff
path: root/Functions/Example/zless
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2001-04-02 12:28:48 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2001-04-02 12:28:48 +0000
commitf60c04f9c51cd985ec8959d8134f7ab6a41c2833 (patch)
treed3ec62498ff118def80d2b86552a46c9f2125dd4 /Functions/Example/zless
parentf0fbd50a98b82ad371879b6a8554ce890ac5484d (diff)
downloadzsh-f60c04f9c51cd985ec8959d8134f7ab6a41c2833.tar.gz
zsh-f60c04f9c51cd985ec8959d8134f7ab6a41c2833.tar.xz
zsh-f60c04f9c51cd985ec8959d8134f7ab6a41c2833.zip
moved from ./Functions/Misc/zless
Diffstat (limited to 'Functions/Example/zless')
-rw-r--r--Functions/Example/zless37
1 files changed, 37 insertions, 0 deletions
diff --git a/Functions/Example/zless b/Functions/Example/zless
new file mode 100644
index 000000000..809ce35c7
--- /dev/null
+++ b/Functions/Example/zless
@@ -0,0 +1,37 @@
+#!/usr/bin/zsh -f
+#
+# zsh function script to run less on various inputs, decompressing as required.
+# Author: Phil Pennock.  zsh-hacks@athenaeum.demon.co.uk
+# Modified by Bart Schaefer.
+# Thanks to zefram@fysh.org for a great deal of help in sorting this out,
+# ie wrt syntax for unsetting members of arrays and eval "$(...)" when I
+# asked for something better than . =(...)
+#
+# Use -zforce to pass through a display-formatting command
+#  zless -zforce 'bzip2 -dc' foo-no-dotbz2
+#  zless -zforce 'od -hc' foo-binfile
+#
+# If you can understand all of this without reference to zshexpn(1)
+# and zshparam(1) then you either have a photographic memory or you
+# need to get out more.
+#
+
+emulate -R zsh
+setopt localoptions
+
+[[ $# -ge 1 ]] || return
+local lessopts
+set -A lessopts
+integer i=1 loi=1
+while ((i <= $#))
+do
+  case $argv[i] in
+  -zforce) argv[i,i+2]=("=($argv[i+1] \"$argv[i+2]\")"); ((++i));;
+  -*) lessopts[loi++]=\"$argv[i]\"; argv[i]=(); continue;;
+  *.(gz|Z)) argv[i]="=(zcat \"$argv[i]\")";;
+  *.bz2) argv[i]="=(bzip2 -dc \"$argv[i]\")";;
+  *.bz) argv[i]="=(bzip -dc \"$argv[i]\")";;
+  esac
+  ((++i))
+done
+eval command less $lessopts $*