diff --git a/bin/scripts/__core_func.def b/bin/scripts/__core_func.def index b49f94c..d0468eb 100644 --- a/bin/scripts/__core_func.def +++ b/bin/scripts/__core_func.def @@ -101,6 +101,17 @@ set,top ${@0} default,top ${@caller} return #${top}::${@def} +//--------------------------------------------------------- +#script=sclistname +//--------------------------------------------------------- +// purpose: returns the global name of a script list +// args: @def: script name +set,c ?{substr,1 ${@def}} +// it is a global name already if the script name starts with # or there is no caller script +if ?{or,?{equal,# ${c}} ?{not ${@caller}}} + return ${@def} +endif +return #DEFSCRIPT::SCRIPT::${@def} //--------------------------------------------------------- #script=getvar @@ -149,7 +160,7 @@ if ?{and,{?{strlen ${@def}}} ?{strlen ${sc}}} createdef ${sc} endif - lpushback,{#DEFSCRIPT::SCRIPT::${sc}} ${@def} + lpushback,{?{sclistname ${sc}}} ${@def} unset cmd endif @@ -161,5 +172,5 @@ endif // @0: script name // @def: line of text to look for -return ?{lcontains,{#DEFSCRIPT::SCRIPT::?{lowercase ${@0}}} ${@def}} +return ?{lcontains,{?{sclistname ?{lowercase ${@0}}}} ${@def}} diff --git a/bin/scripts/__core_hookHelper.def b/bin/scripts/__core_hookHelper.def index 3498899..8ce1bd0 100644 --- a/bin/scripts/__core_hookHelper.def +++ b/bin/scripts/__core_hookHelper.def @@ -26,7 +26,7 @@ set,sc ${@def} default,sc ${#hookhelper::CurScript} set,c ${@0} default,c ${@caller} -appenddef,{${sc}} #tag:hook-end:${c} +appenddef,{${sc}} #tag:hook-end set,#hookhelper::CurScript unset ${sc} unset sc @@ -74,19 +74,30 @@ HookStart,{${c}} OPCODE::${@def} #script=UnHook // @def: name of script where to remove hook from // [@0: hook name (usually name of script that installed the hook). default: name of calling script] +set,target ?{lowercase ${@def}} +if ?{not ?{scriptexists ${target}}} + logerror UnHook called for nonexisting script '${target}' by '${@caller}' +endif set,sc ${@0} default,sc ${@caller} -set,sl #DEFSCRIPT::SCRIPT::${@def} +set,sc ?{lowercase ${sc}} +set,sl ?{sclistname ${target}} set,hn #tag:hook:${sc} -set,hne #tag:hook-end:${sc} +set,hne #tag:hook-end +//logdebug -- sl='${sl}' hn='${hn}' hne='${hne}' loop - if ?{not ?{IsHooked,{${sc}} ${@def}}} + if ?{not ?{IsHooked,{${sc}} ${target}}} + //logdebug -- unhook done exitloop endif set,p ?{lfind,{${sl}} ${hn}} - if ?{strlen ${p}} + set,line ?{lindex,{${sl}} ${p}} + //logdebug -- line[${p}] = ${line} + if ?{strlen ${p}} // p is empty string if the line wasnt found loop - if ?{equal,{?{lerase,{${sl}} ${p}}} ${hne}} + set,line2 ?{lerase,{${sl}} ${p}} + //logdebug -- removed: '${line2}' + if ?{equal,{${line2}} ${hne}} exitloop endif endloop @@ -100,7 +111,7 @@ unset sc #script=UnHookOpcode // @def: opcode name // [@0: name of calling script] -set,sc ?{@0} +set,sc ${@0} default,sc ${@caller} UnHook,{${sc}} OPCODE::${@def} @@ -108,9 +119,9 @@ UnHook,{${sc}} OPCODE::${@def} // @def: name of script to remove all hooks from // [@0: name of calling script] set,sc ${@0} -set,sl #DEFSCRIPT::SCRIPT::${@def} +set,sl ?{sclistname ${@def}} set,hn #tag:hook: -set,hne #tag:hook-end: +set,hne #tag:hook-end set,i 0 set,hookcode false loop