From f60c04f9c51cd985ec8959d8134f7ab6a41c2833 Mon Sep 17 00:00:00 2001 From: Sven Wischnowsky Date: Mon, 2 Apr 2001 12:28:48 +0000 Subject: moved from ./Functions/Misc/zless --- Functions/Example/zless | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Functions/Example/zless (limited to 'Functions/Example/zless') 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 $* -- cgit 1.4.1