Subj : command shell probs.
To   : Finnigann
From : -oblivious-
Date : Thu Mar 05 2037 06:27 pm

.��( Finnigann said this to -oblivious- )��.
re:hangup problems in the command shell...
Fi> Dunno if this being too snotty... but could we see the code?


Fi> James King, Coldwater, Mi     And that's JIM to you guys!
no, not snotty at all... well....hm....
the current version i have is ripped off of one of the included
cmd shells, with a few additions.

uh...this is pretty messy.. be carefull for what you wish for:

sorry this is SO BIG!!
here it goes, i'd appreciate any help!
# DEFAULT.SRC
:top
!include sbbsdefs.inc

# Set return point for main menu commands (via end_cmd)
cmd_home

# Display TEXT\MENU\MAIN.* if not in expert mode
:main
compare_user_misc UM_EXPERT
if_false
       cls
       menu eob\MAIN
       end_if

# Update node status
node_action node_main
async

inc_main_cmds

# Display main Prompt
exec_bin "rumors"
crlf
print "\r|15M|07ain |15M|07enu |14[|04@TLEFT@|14]:"
#compare_ars exempt T
#if_true
#        print "@TUSED@"
#else
#        print "@TLEFT@"
#        end_if
#print " [@GN@] @GRP@ [@SN@] @SUB@: "

# Get key (with / extended commands allowed)
compare_user_misc UM_COLDKEYS
if_false
       getkeye
else
       getstrupr 60
       endif

compare_ars RIP
if_true
       getlines
       end_if

# Do nothing for control keys and space
cmdkey ^@
       end_cmd
cmdkey ^M
       end_cmd
cmdkey ^S
       end_cmd
cmdkey  "
       end_cmd

# Write command to log file
logkey_comma

# Hitting number changes current sub-board
cmdkey digit
       compare_user_misc UM_COLDKEYS
       if_false
               ungetkey
               end_if
       msg_get_sub_num
       end_cmd

# Hitting /number changes current group
cmdkey edigit
       compare_user_misc UM_COLDKEYS
       if_false
               ungetkey
       else
               shift_str 1
               end_if
       msg_get_grp_num
       end_cmd

# Show the key hit
compare_user_misc UM_COLDKEYS
if_false
       printkey
       endif

# Next sub-board
cmdkey }
       msg_subboard_up
       end_cmd

# Previous sub-board
cmdkey {
       msg_subboard_down
       end_cmd


# Next group
cmdkey ]
       msg_group_up
       end_cmd

# Previous group
cmdkey [
       msg_group_down
       end_cmd

# String commands start with a semicolon
cmdkey ;
       compare_user_misc UM_COLDKEYS
       if_true
               shift_str 1
       else
               getstrupr 40
               end_if
       exec_bin str_cmds
       end_cmd


# Sysop Menu
#cmdkey /!
#compare_ars SYSOP or EXEMPT Q or I or N
#if_true
#exec_XTRN "DOSSHELL"
#end_cmd
#        end_if

cmdkey /Q
       msg_qwk
       end_cmd

cmdkey N
       setstr "1"
       mail_send_feedback
       end_cmd

cmdkey _
exec_bin "bullseye"
end_cmd

cmdkey /O
exec_xtrn "wall"
end_cmd

cmdkey .
printfile "c:\sbbs\text\morecmds.ans"
end_cmd

cmdkey /?
exec_bin "help"
end_cmd

cmdkey /@
       SETSTR "rasta"
       PAGE_GURU "rasta"
end_cmd

CMDKEY /X
EXEC_XTRN "SYNCREG"
END_CMD

cmdkey F
       chkfile "..\text\menu\tmessage.*"
       if_true
               menu tmessage
               end_if
       call file_transfers
       end_cmd

compare_user_misc UM_COLDKEYS
if_false
       crlf
       end_if
pause_reset

# Menu
cmdkey ?
       compare_user_misc UM_expert
       if_true
               menu main
               end_if
       end_cmd

# Sysop Menu
compare_ars SYSOP or EXEMPT Q or I or N
if_true
       cmdkey !
               menu sysmain
               end_cmd
       end_if

# Commands

cmdkey O
       xtrn_section
       end_cmd

cmdkey A
       cls
       PRINTFILE "C:\SBBS\TEXT\AUTOMSG.ANS"
       auto_message
       end_cmd

cmdkey /R
      # print "\r\nBrowse/New Message Scan\r\n"
      # msg_browse_scan
exec_xtrn "rumors"

       end_cmd

cmdkey B
      # print "\r\nBrowse/New Message Scan\r\n"
      # msg_browse_scan
exec_xtrn "sbl"

       end_cmd

cmdkey /W
printfile "C:\SBBS\TEXT\WATCH.ANS"
end_cmd

cmdkey C
       chat_section
       end_cmd

cmdkey P
       user_defaults
       end_cmd

CMDKEY Y
PRINTFILE "C:\SBBS\TEXT\USERINFO.ANS"
END_CMD
cmdkey E
       call E-mail
       end_cmd

#cmdkey F
#        print "\r\nFind Text in Messages\r\n"
#        msg_find_text
#        end_cmd

cmdkey /S
exec "*shit"
       end_cmd

cmdkey F
       msg_find_text_all
       end_cmd

cmdkey G
       text_file_section
       end_cmd

cmdkey I
       call main_info
       end_cmd

cmdkey J
       msg_select_area
       end_cmd

#our dosshell
cmdkey /!
exec_xtrn "dosshell"
end_cmd

cmdkey /L
       nodelist_all
       end_cmd

cmdkey $
       minute_bank
       end_cmd
cmdkey M
       cmd_pop
       goto message
       end_cmd

cmdkey N
       print "\r\nNew Message Scan\r\n"
       msg_new_scan
       end_cmd

cmdkey /N
       msg_new_scan_all
       end_cmd

cmdkey G
       file_download_batch
       if_true
               end_cmd
               end_if
       logoff
       end_cmd

cmdkey /G
       file_download_batch
       if_true
               end_cmd
               end_if
       logoff_fast
       end_cmd

#cmdkey P
#        msg_post
#        end_cmd

cmdkey /Q
       msg_qwk
       end_cmd

cmdkey R
       msg_read
       end_cmd

cmdkey S
       print "\r\nScan for Messages Posted to You\r\n"
       msg_your_scan
       end_cmd

cmdkey /S
       msg_your_scan_all
       end_cmd

cmdkey U
       #print "\r\nList Users\r\n"
       #mnemonics "\r\n~Logons Today, ~Sub-board, or ~All: "
       #getcmd LSA\r
       #
       #cmdkey L
       #        userlist_logons
       #        end_cmd
       #cmdkey S
       #        userlist_sub
       #        end_cmd
       #cmdkey A
               userlist_all
               end_cmd

       # fall-through for CR, Ctrl-C, etc
       end_cmd

cmdkey /U
       userlist_all
       end_cmd



cmdkey Z
       print "\r\nContinuous New Message Scan\r\n"
       msg_cont_scan
       end_cmd

cmdkey /Z
       msg_cont_scan_all
       end_cmd

cmdkey *
       msg_show_subboards
       end_cmd

cmdkey /*
       msg_show_groups
       end_cmd

cmdkey /P
       goto main_cfg
       end_cmd

cmdkey #
       print "\r\nType the actual number, not the symbol.\r\n"
       end_cmd

cmdkey /#
       print "\r\nType the actual number, not the symbol.\r\n"
       end_cmd

# fall through
print "\r\nUnrecognized command."
compare_user_misc UM_expert
if_true
       print " Hit '?' for a menu."
       end_if
crlf
end_cmd

# shouldn't hit next line
print "Problem in command shell you should probably log of and call back."
pause
goto main
###################################### message area #######################
:message
cmd_home
compare_ars expert
if_false
       cls
       menu EOB\MESSAGE
       end_if

# Update node status
node_action node_main
async

# Display main Prompt
print "|08[|14@GRP@|07]|08�|07(|11@SN@|07)|08-|08[|14@SUB@|07]\r\n"
#compare_ars exempt T
#if_true
#        print "Time Used: [@TUSED@]  "
#else
       print "Time Left: [@TLEFT@]  "
       end_if

#print "(?=Help)\r\nMessage Menu : "

# Get key (with / extended commands allowed)
compare_user_misc UM_COLDKEYS
if_false
       getkeye
else
       getstrupr 60
       endif

# Do nothing for control keys and space
cmdkey ^@
       end_cmd
cmdkey ^M
       end_cmd
cmdkey ^S
       end_cmd
cmdkey  "
       end_cmd

# Write command to log file
logkey_comma

# Hitting number changes current sub-board
cmdkey digit
       compare_user_misc UM_COLDKEYS
       if_false
               ungetkey
               end_if
       msg_get_sub_num
       end_cmd

# Hitting /number changes current group
cmdkey edigit
       compare_user_misc UM_COLDKEYS
       if_false
               ungetkey
       else
               shift_str 1
               end_if
       msg_get_grp_num
       end_cmd

# Show the key hit
compare_user_misc UM_COLDKEYS
if_false
       printkey
       endif

cmdkey ?
       compare_ars expert
       if_true
               cls
               menu EOB\MESSAGE
               end_if
       end_cmd

cmdkey Q
       cmd_pop
       goto main
       end_cmd

cmdkey [
       msg_subboard_down
       end_cmd

cmdkey ]
       msg_subboard_up
       end_cmd

compare_user_misc UM_COLDKEYS
if_false
       crlf
       end_if
pause_reset

cmdkey A
       msg_show_subboards
       end_cmd

cmdkey /A
       msg_show_groups
       end_cmd

cmdkey C
       chat_section
       end_cmd

cmdkey /L
       nodelist_all
       end_cmd

cmdkey N
       msg_new_scan
       end_cmd

cmdkey R
       msg_read
       end_cmd

cmdkey P
       msg_post
       end_cmd

cmdkey F
       cmd_pop
       goto file_transfers
       end_cmd

cmdkey S
       print "\r\nSearch for Text in Messages\r\n"
       msg_find_text
       end_cmd

cmdkey U
       userlist_sub
       end_cmd

cmdkey G
       file_download_batch
       if_true
               end_cmd
               end_if
       logoff
       end_cmd

cmdkey /G
       file_download_batch
       if_true
               end_cmd
               end_if
       logoff_fast
       end_cmd

cmdkey E
       print "\r\nE-mail (User name or number): "
       getname 25
       compare_str ""
       if_true
               end_cmd
               end_if
       compare_str "SYSOP"
       if_true
               setstr "1"
               end_if
       mail_send
       end_cmd

cmdkey J
       msg_select_area
       end_cmd

cmdkey Y
       msg_your_scan_all
       end_cmd

cmdkey P
       msg_post
       end_cmd

cmdkey #
       print "\r\nEnter the number of the sub-board to change to.\r\n"
       end_cmd

cmdkey /#
       print "\r\nEnter the number of the message group to change to.\r\n"
       end_cmd

# fall through
print "\r\nUnrecognized command."
compare_ars expert
if_true
       print " Hit '?' for a menu."
       end_if
crlf
end_cmd

############################### E-mail Section ################################

:e-mail
cmd_home
compare_user_misc UM_expert
if_false
       menu E-MAIL
       end_if
async
print "\r\nE-mail: "
getcmd ?SRFNUKQ\r
logkey

cmdkey ?
       compare_user_misc UM_expert
       if_true
               menu E-MAIL
               end_if
       end_cmd

cmdkey S
       print "\r\nE-mail (User name or number): "
       getname 25
       compare_str ""
       if_true
               end_cmd
               end_if
       compare_str "SYSOP"
       if_true
               setstr "1"
               end_if
       mail_send
       end_cmd

cmdkey U
       print "\r\nE-mail (User name or number): "
       getname 25
       compare_str ""
       if_true
               end_cmd
               end_if
       compare_str "SYSOP"
       if_true
               setstr "1"
               end_if
       mail_send_file
       end_cmd

cmdkey R
       mail_read
       end_cmd

cmdkey F
       setstr "1"
       mail_send_feedback
       end_cmd

cmdkey N
       no_yes "\r\nAttach a file"
       if_true
               mail_send_netmail
       else
               mail_send_netfile
               end_if
       end_cmd

cmdkey K
       mail_read_sent
       end_cmd

cmdkey Q
       cmd_pop
       return
       end_cmd

cmd_pop
return

############################ Main Info Section  ###############################

:main_info
cmd_home
compare_user_misc UM_expert
if_false
       menu MAININFO
       end_if
async
print "\r\nInfo: "
getcmd ?QISVY\r
logkey

cmdkey ?
       compare_user_misc UM_expert
       if_true
               menu MAININFO
               end_if
       end_cmd

cmdkey I
       info_system
       end_cmd

cmdkey S
       info_subboard
       end_cmd

cmdkey Y
       info_user
       end_cmd

cmdkey V
       info_version
       end_cmd

cmdkey Q
       cmd_pop
       return
       end_cmd

cmd_pop
return

########################### Main Config Section  ##############################

:main_cfg

compare_user_misc UM_expert
if_false
       menu MAINCFG
       end_if
async
print "\r\nConfig: "
getcmd ?QNPIS\r
logkey

cmdkey ?
       compare_user_misc UM_expert
       if_true
               menu MAINCFG
               end_if
       goto main_cfg
       end_cmd

cmdkey N
       msg_new_scan_cfg
       return
       end_cmd

cmdkey S
       msg_your_scan_cfg
       return
       end_cmd

cmdkey P
#        msg_ptrs_cfg
       msg_post
       return
       end_cmd

cmdkey I
       msg_ptrs_reinit
       return
       end_cmd

return


########################### File Transfer Section #############################

:file_transfers

compare_ars file_cmds=0
if_true
       compare_user_misc UM_ask_nscan
       if_true
               yes_no "\r\n\r\nSearch all libraries for new files"
               if_true
                       file_new_scan_all
                       end_if
               end_if
       end_if

cmd_home

compare_user_misc UM_expert
if_false
       cls
       menu eob\TRANSFER
       end_if

# Update node status
node_action node_xfer
async

inc_file_cmds

# Display main Prompt
print "\r\n� File � "
#compare_ars exempt T
#if_true
#        print "@TUSED@"
#else
#        print "@TLEFT@"
#        end_if
print " (@LN@) @LIB@ (@DN@) @DIR@: "

# Get key (with / extended commands allowed)
compare_user_misc UM_COLDKEYS
if_false
       getkeye
else
       getstrupr 60
       endif

compare_ars RIP
if_true
       getlines
       end_if

# Do nothing for control keys and space
cmdkey ^@
       end_cmd
cmdkey ^M
       end_cmd
cmdkey ^S
       end_cmd
cmdkey  "
       end_cmd

# Write command to log file
logkey_comma

# Hitting number changes current sub-board
cmdkey digit
       compare_user_misc UM_COLDKEYS
       if_false
               ungetkey
               end_if
       file_get_dir_num
       end_cmd

# Hitting /number changes current group
cmdkey edigit
       compare_user_misc UM_COLDKEYS
       if_false
               ungetkey
       else
               shift_str 1
               end_if
       file_get_lib_num
       end_cmd

# Show the key hit
compare_user_misc UM_COLDKEYS
if_false
       printkey
       endif

# Next directory
cmdkey >
       file_directory_up
       end_cmd
cmdkey ]
       file_directory_up
       end_cmd
cmdkey +
       file_directory_up
       end_cmd
cmdkey =
       file_directory_up
       end_cmd

# Previous directory
cmdkey <
       file_directory_down
       end_cmd
cmdkey [
       file_directory_down
       end_cmd
cmdkey -
       file_directory_down
       end_cmd

# Next library
cmdkey }
       file_library_up
       end_cmd

# Previous library
cmdkey {
       file_library_down
       end_cmd

# String commands start with a semicolon
cmdkey ;
       compare_user_misc UM_COLDKEYS
       if_true
               shift_str 1
       else
               getstrupr 40
               end_if
       exec_bin str_cmds
       end_cmd

cmdkey Q
       cmd_pop
       return
       end_cmd

cmdkey /!
print "executing uploads.bat externally"
exec "start /m c:\sbbs\exec\upload.bat"
end_cmd

compare_user_misc UM_COLDKEYS
if_false
       crlf
       end_if
pause_reset

# Menu
cmdkey ?
       compare_user_misc UM_expert
       if_true
               menu TRANSFER
               end_if
       end_cmd

# Sysop Menu
compare_ars SYSOP
if_true
       cmdkey !
               menu sysxfer
               end_cmd
       end_if

# Commands

cmdkey B
       file_batch_section
       end_cmd

cmdkey C
       chat_section
       end_cmd

cmdkey D
       print "\r\nDownload File(s)\r\n"
       file_download_batch
       if_true
               end_cmd
               end_if
       getfilespec
       if_true
               file_download
               end_if
       end_cmd

cmdkey /D
       print "\r\nDownload File(s) from User(s)\r\n"
       file_download_user
       end_cmd

cmdkey E
       print "\r\nList Extended File Information\r\n"
       getfilespec
       if_true
               file_list_extended
               end_if
       end_cmd

#cmdkey F
#        print "\r\nFind Text in File Descriptions (no wildcards)\r\n"
#        file_find_text
#        end_cmd

cmdkey F
       file_find_text_all
       end_cmd

cmdkey I
       call file_info
       end_cmd

cmdkey J
       file_select_area
       end_cmd

cmdkey L
       setstr *.*
       file_list
       end_cmd

cmdkey /L
       nodelist_all
       end_cmd

cmdkey N
       print "\r\nNew File Scan\r\n"
       file_new_scan_all
       #file_new_scan
       end_cmd

cmdkey /N
       file_new_scan_all
       end_cmd

cmdkey G
       file_download_batch
       if_true
               end_cmd
               end_if
       logoff
       end_cmd

cmdkey /G
       file_download_batch
       if_true
               end_cmd
               end_if
       logoff_fast
       end_cmd

cmdkey R
       print "\r\nRemove/Edit File(s)\r\n"
       getfilespec
       if_true
               file_remove
               end_if
       end_cmd

cmdkey S
       print "\r\nSearch for Filename(s)\r\n"
       file_find_name
       end_cmd

cmdkey /S
       file_find_name_all
       end_cmd

cmdkey T
       file_temp_section
       end_cmd

cmdkey U
       print "\r\nUpload File\r\n"
       chkfile "..\text\menu\upload.*"
       if_true
               menu upload
               end_if
       file_upload
       end_cmd

cmdkey /U
       print "\r\nUpload File to User\r\n"
       file_upload_user
       end_cmd

cmdkey V
       print "\r\nView File(s)\r\n"
       getfilespec
       if_true
               file_view
               end_if
       end_cmd

cmdkey Z
       print "\r\nUpload File to Sysop\r\n"
       file_upload_sysop
       end_cmd

cmdkey *
       file_show_directories
       end_cmd

cmdkey /*
       file_show_libraries
       end_cmd

cmdkey &
       :xfercfg
       compare_user_misc UM_expert
       if_false
               menu XFERCFG
               end_if
       async
       print "\r\nConfig: "
       getcmd ?QBEP\r
       logkey

       cmdkey ?
               compare_user_misc UM_expert
               if_true
                       menu XFERCFG
                       end_if
               goto xfercfg
               end_cmd

       cmdkey P
               file_ptrs_cfg
               end_cmd

       cmdkey B
               toggle_user_misc UM_BATCHFLAG
               end_cmd

       cmdkey E
               toggle_user_misc UM_EXTDESC
               end_cmd
       end_cmd

cmdkey #
       print "\r\nType the actual number, not the symbol.\r\n"
       end_cmd

cmdkey /#
       print "\r\nType the actual number, not the symbol.\r\n"
       end_cmd

# fall through
print "\r\nUnrecognized command."
compare_user_misc UM_expert
if_true
       print " Hit '?' for a menu."
       end_if
crlf
end_cmd

# shouldn't hit next line
print "Problem in command shell you should probably hang up and call back."
pause
goto main

############################ File Info Section  ###############################

:file_info
cmd_home
compare_user_misc UM_expert
if_false
       menu XFERINFO
       end_if
async
print "\r\nInfo: "
getcmd ?TYDUQ\r
logkey

cmdkey ?
       compare_user_misc UM_expert
       if_true
               menu XFERINFO
               end_if
       end_cmd

cmdkey T
       info_xfer_policy
       end_cmd

cmdkey Y
       info_user
       end_cmd

cmdkey D
       info_directory
       end_cmd

cmdkey U
       userlist_dir
       end_cmd

cmdkey Q
       cmd_pop
       return
       end_cmd

cmd_pop
return

#end of DEFAULT.SRC


.�.�Ŀ� .�.�  �.�..�.� �.-.
� :��::  : :  � : � :� ��-.
`�'�_�����`\/'���`�':_:`�'
+o edge of oblivion bbs
telnet://eob_bbs.thebbs.org
... 42? 7 and a half million years and all you can come up with is 42?!
--- MultiMail/MS-DOS v0.35
� Synchronet � ...edge of oblivion eob_bbs.thebbs.org