@prog add-jack-exits.muf 1 999 d 1 i : set-owner chown ; : set-desc setdesc ; : set-lock dup if lock else pop unlock then ; : set-succ setsucc ; : set-fail setfail ; : set-drop setdrop ; : set-osucc setosucc ; : set-ofail setofail ; : set-odrop setodrop ; : set-dest addlink ; : config-string (prefix exit suffix set-fn -- prefix exit) 4 pick rot "-" swap strcat strcat prog swap over over prop-exists? if ( prefix exit set-fn obj propname ) getpropstr ( prefix exit set-fn propstr ) 3 pick swap rot ( prefix exit exit propstr set-fn ) exec else pop pop pop then ; : config-dbref (prefix exit suffix set-fn -- prefix exit) 4 pick rot "-" swap strcat strcat prog swap getpropstr ( prefix exit set-fn propstr ) atoi dbref 3 pick swap rot ( prefix exit exit dbref set-fn ) exec ; : config-exit (prefix exit -- ) "desc" ' set-desc config-string "lock" ' set-lock config-string "succ" ' set-succ config-string "fail" ' set-fail config-string "drop" ' set-drop config-string "osucc" ' set-osucc config-string "ofail" ' set-ofail config-string "odrop" ' set-odrop config-string "dest" ' set-dest config-dbref "owner" ' set-owner config-dbref 1 begin ( prefix exit n ) "-prop-" over intostr strcat 4 pick swap strcat prog over prop-exists? while ( prefix exit n propname ) prog swap getpropstr ( prefix exit n propval ) dup ":" instr dup if 1 - strcut 1 strcut swap pop ( prefix exit n propname propval ) 4 pick -3 rotate 0 addprop else pop pop then ( prefix exit n ) 1 + loop pop pop pop pop ; : ok-caller? callers 1 swap 1 - 1 for pop pop loop int intostr "caller-" swap "-ok" strcat strcat prog swap prop-exists? ; : main ok-caller? not if exit then ( deck ) 1 begin "exit-" over intostr strcat "-name" strcat prog swap prop-exists? while ( deck n ) "exit-" over intostr strcat ( deck n exit-n ) dup "-name" strcat prog swap getpropstr ( deck n exit-n exit-name ) 4 pick open ( deck n exit-n exit ) config-exit 1 + loop pop ; . c q