diff options
Diffstat (limited to 'Functions/Misc/nslookup')
-rw-r--r-- | Functions/Misc/nslookup | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Functions/Misc/nslookup b/Functions/Misc/nslookup new file mode 100644 index 000000000..5b49ae9d2 --- /dev/null +++ b/Functions/Misc/nslookup @@ -0,0 +1,48 @@ +# Simple wrapper function for `nslookup'. With completion if you are using +# the function based completion system. + +if [[ $argv[(I)-] -eq 0 && $argv[(I)[^-]*] -ne 0 ]]; then + command nslookup "$@" + return +fi + +setopt localoptions localtraps completealiases + +local tmp line compcontext=nslookup curcontext='nslookup:::' pmpt +local pager opager="$PAGER" +typeset +g -x PAGER=cat + +zmodload -e zsh/zpty || zmodload -i zsh/zpty + +trap 'return 130' INT +trap 'zpty -d nslookup' EXIT + +pmpt=() +zstyle -s ':nslookup' prompt tmp && pmpt=(-p "$tmp") +zstyle -s ':nslookup' rprompt tmp && pmpt=("$pmpt[@]" -r "$tmp") +zstyle -s ':nslookup' pager tmp && + [[ -z "$pager" ]] && pager="${opager:-more}" +(( $#pmpt )) || pmpt=(-p '> ') + +zpty nslookup command nslookup "${(q)@}" + +zpty -r nslookup line '* +> ' +print -nr "$line" + +while line=''; vared -he "$pmpt[@]" line; do + print -s "$line" + [[ "$line" = exit ]] && break + + zpty -w nslookup "$line" + + zpty -r nslookup line '* +> ' + if [[ -n "$pager" && ${#${(f)line}} -gt LINES ]]; then + print -nr "$line" | eval "$pager" + else + print -nr "$line" + fi +done + +zpty -w nslookup 'exit' |