@program cmd-bootme.muf 1 1000 d i ( bootme.muf -- 6/23/95 by Squirrelly ) ( @bootme [#idle] -- Drop all but your least idle connect. Default. @bootme #old -- Drop all but your most recent conect. @bootme #all -- Drop all of your connections. @bootme #list -- Show a numbered list of your connections. @bootme -- Boot connection{s} from above #list. @bootme #help @bootme #u= FB ver. 6.00+ add: {used to be 5.48+} @bootme [#other] -- Boot your other connects. Becomes new default. ) $def TMAX 359999 lvar USER lvar MVAL lvar UNIDLECON lvar UNIDLESEC lvar TOT $include $lib/alynna $def .rstrfmt rj $def .lstrfmt lj $def .split \split $def .me_wiz? me @ mlevel 5 >= : nsize ( i-val i-size -- s ) swap intostr "0000" swap strcat dup strlen rot - strcut swap pop ; : do_boot ( i -- ) dup "== BootMe Disconnect" over condbref ME @ dbcmp not if " by " strcat ME @ name strcat then " ==" strcat connotify dup conboot "--> Booted " over condbref name strcat " connection id # " strcat over condescr intostr strcat " (idle " strcat swap conidle intostr strcat " seconds)." strcat .tell TOT @ 1 + TOT ! ; : bt_idle ( -- ) 0 UNIDLECON ! mode MVAL ! preempt USER @ descriptors dup if swap descrcon dup UNIDLECON ! conidle UNIDLESEC ! 1 - then begin dup while swap descrcon dup conidle dup UNIDLESEC @ < if UNIDLECON @ do_boot UNIDLESEC ! UNIDLECON ! else pop do_boot then 1 - repeat MVAL @ setmode pop ; : bt_old ( -- ) mode MVAL ! preempt USER @ descriptors dup if swap pop 1 - then begin dup while swap descrcon do_boot 1 - repeat MVAL @ setmode pop ; : bt_all ( -- ) mode MVAL ! preempt USER @ descriptors begin dup while swap descrcon do_boot 1 - repeat MVAL @ setmode pop ; : bt_n ( i -- i ) mode MVAL ! preempt descrcon dup if dup condbref USER @ dbcmp not else 1 then if "BootMe: Invalid ID# given." .tell MVAL @ setmode pop 1 exit then do_boot MVAL @ setmode 0 ; : set_user ( s -- i ) dup .pmatch dup player? not if pop "BootMe: Player '" swap strcat "' not found." strcat .tell 1 exit then swap pop ME @ over controls not if "BootMe: You can't select player '" swap name strcat "'." strcat .tell 1 exit then "BootMe user selected: " over name strcat .tell USER ! 0 ; : give_list ( -- ) ME @ USER @ dbcmp if "Your" else USER @ name "'s" strcat then " connections:" strcat .tell " ID# On-line Idle Host" .tell mode MVAL ! preempt USER @ descriptors begin dup while swap dup intostr 7 .rstrfmt " " strcat swap descrcon swap over contime dup TMAX > if pop TMAX then dup 3600 / 2 nsize rot swap strcat ":" strcat swap 3600 % dup 60 / 2 nsize rot swap strcat ":" strcat swap 60 % 2 nsize strcat " " strcat over conidle dup 9999 > if pop 9999 then intostr 4 .rstrfmt strcat " " strcat swap conhost strcat .tell 1 - repeat MVAL @ setmode pop ; : give_help ( -- ) "BootMe.muf -- 6/23/95 by Squirrelly" .tell " @bootme [#idle] -- Drop all but your least idle connect. Default." .tell " @bootme #old -- Drop all but your most recent conect." .tell " @bootme #list -- Show a numbered list of your connections." .tell " @bootme #all -- Drop all of your connections." .tell " @bootme -- Boot connection(s) from above #list." .tell .me_wiz? if " @bootme #u= - Set target player (Wizard only)." .tell then ; : main "me" match dup ME ! USER ! strip tolower dup not if pop ME @ "_bootme/def" getpropstr then dup not if pop "#idle" then 0 TOT ! begin dup while " " .split swap strip dup not if pop continue then dup "#idle" strcmp not if pop bt_idle continue then dup "#old" strcmp not if pop bt_old continue then dup "#all" strcmp not if pop bt_all continue then dup "#list" strcmp not if pop give_list continue then dup number? if atoi bt_n if break else continue then then dup "#help" strcmp not if pop give_help continue then dup "#u=" 3 strncmp not if 3 strcut swap pop set_user if break else continue then then "Bootme: Unknown operation: '" swap strcat "'" strcat .tell repeat pop "Done. " TOT @ intostr strcat " connection" strcat TOT @ 1 = not if "s" strcat then " dropped." strcat .tell ; . c q