Skip to content

Instantly share code, notes, and snippets.

@ormaaj
Last active November 20, 2023 01:07
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ormaaj/12874b68acd06ee98b59 to your computer and use it in GitHub Desktop.
Save ormaaj/12874b68acd06ee98b59 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ksh
typeset -a FUNCNAME
function FUNCNAME.get {
nameref self=${.sh.name}
if (( .sh.subscript < .sh.level )); then
trap "(( .sh.level -= .sh.subscript + 1 )); eval '(( .sh.level = ${.sh.level} ))' \; _=\${.sh.fun}" DEBUG
trap - DEBUG;
fi
(( .sh.subscript < .sh.level - 2 )) && self[.sh.subscript + 1]=
}
function f {
if (($1 < 10)); then
print -r -- "${FUNCNAME[@]}"
g $(($1 + 1))
fi
print -r -- "${FUNCNAME[@]}"
}
function g {
if (($1 < 10)); then
print -r -- "${FUNCNAME[@]}"
f $(($1 + 1))
fi
print -r -- "${FUNCNAME[@]}"
}
#typeset -ft FUNCNAME.get f g
f 0
f
g f
f g f
g f g f
f g f g f
g f g f g f
f g f g f g f
g f g f g f g f
f g f g f g f g f
g f g f g f g f g f
f g f g f g f g f g f
g f g f g f g f g f
f g f g f g f g f
g f g f g f g f
f g f g f g f
g f g f g f
f g f g f
g f g f
f g f
g f
f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment