home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 September / PCO_0998.ISO / filesbbs / dos / sbbs_src.exe / SBBS / CMDSHELL.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-04-13  |  15.2 KB  |  587 lines

  1. /* CMDSHELL.H */
  2.  
  3. /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
  4.  
  5. #include "gen_defs.h"
  6.  
  7. /******************************/
  8. /* Instructions and Functions */
  9. /******************************/
  10. enum {
  11.  
  12. /* Single byte instructions */
  13.  
  14.      CS_IF_TRUE=0            // Same as IF_EQUAL
  15.     ,CS_IF_FALSE            // Same as IF_NOT_EQUAL
  16.     ,CS_ELSE
  17.     ,CS_ENDIF
  18.     ,CS_CMD_HOME
  19.     ,CS_CMD_POP
  20.     ,CS_END_CMD
  21.     ,CS_RETURN
  22.     ,CS_GETKEY
  23.     ,CS_GETKEYE
  24.     ,CS_UNGETKEY
  25.     ,CS_UNGETSTR
  26.     ,CS_PRINTKEY
  27.     ,CS_PRINTSTR
  28.     ,CS_HANGUP
  29.     ,CS_SYNC
  30.     ,CS_ASYNC
  31.     ,CS_CHKSYSPASS
  32.     ,CS_LOGKEY
  33.     ,CS_LOGKEY_COMMA
  34.     ,CS_LOGSTR
  35.     ,CS_CLS
  36.     ,CS_CRLF
  37.     ,CS_PAUSE
  38.     ,CS_PAUSE_RESET
  39.     ,CS_GETLINES
  40.     ,CS_GETFILESPEC
  41.     ,CS_FINDUSER
  42.     ,CS_CLEAR_ABORT
  43.     ,CS_SELECT_SHELL
  44.     ,CS_SET_SHELL
  45.     ,CS_SELECT_EDITOR
  46.     ,CS_SET_EDITOR            // 0x20
  47.     ,CS_INKEY
  48.     ,CS_RIOSYNC
  49.     ,CS_GETTIMELEFT
  50.     ,CS_SAVELINE
  51.     ,CS_RESTORELINE
  52.     ,CS_IF_GREATER
  53.     ,CS_IF_GREATER_OR_EQUAL
  54.     ,CS_IF_LESS
  55.     ,CS_IF_LESS_OR_EQUAL
  56.     ,CS_DEFAULT             // 0x2a
  57.     ,CS_END_SWITCH
  58.     ,CS_END_CASE
  59.     ,CS_PUT_NODE
  60.     ,CS_ONE_MORE_BYTE=0x2f
  61.  
  62. /* Two byte instructions */
  63.  
  64.     ,CS_CMDKEY=0x30
  65.     ,CS_NODE_ACTION
  66.     ,CS_GETSTR
  67.     ,CS_GETNAME
  68.     ,CS_GETSTRUPR
  69.     ,CS_SHIFT_STR
  70.     ,CS_COMPARE_KEY
  71.     ,CS_SETLOGIC
  72.     ,CS_SET_USER_LEVEL
  73.     ,CS_SET_USER_STRING
  74.     ,CS_GETLINE             // 0x3a
  75.     ,CS_NODE_STATUS
  76.     ,CS_TWO_MORE_BYTES=0x3f
  77.  
  78. /* Three byte instructions */
  79.  
  80.     ,CS_GOTO=0x40
  81.     ,CS_CALL
  82.     ,CS_TOGGLE_NODE_MISC
  83.     ,CS_ADJUST_USER_CREDITS
  84.     ,CS_TOGGLE_USER_FLAG
  85.     ,CS_GETNUM
  86.     ,CS_COMPARE_NODE_MISC
  87.     ,CS_MSWAIT
  88.     ,CS_ADJUST_USER_MINUTES
  89.     ,CS_REVERT_TEXT
  90.     ,CS_THREE_MORE_BYTES=0x4f
  91.  
  92. /* String arg instructions */
  93.  
  94.     ,CS_MENU=0x50
  95.     ,CS_PRINT
  96.     ,CS_PRINT_LOCAL
  97.     ,CS_PRINT_REMOTE
  98.     ,CS_PRINTFILE
  99.     ,CS_PRINTFILE_LOCAL
  100.     ,CS_PRINTFILE_REMOTE
  101.     ,CS_YES_NO
  102.     ,CS_NO_YES
  103.     ,CS_COMPARE_STR
  104.     ,CS_COMPARE_WORD        // 0x5a
  105.     ,CS_EXEC
  106.     ,CS_EXEC_INT
  107.     ,CS_EXEC_BIN
  108.     ,CS_EXEC_XTRN
  109.     ,CS_GETCMD
  110.     ,CS_LOG                 // 0x60
  111.     ,CS_MNEMONICS
  112.     ,CS_SETSTR
  113.     ,CS_SET_MENU_DIR
  114.     ,CS_SET_MENU_FILE
  115.     ,CS_CMDSTR
  116.     ,CS_CHKFILE
  117.     ,CS_GET_TEMPLATE
  118.     ,CS_TRASHCAN
  119.     ,CS_CREATE_SIF
  120.     ,CS_READ_SIF            // 0x6a
  121.     ,CS_CMDKEYS
  122.     ,CS_COMPARE_KEYS
  123.     ,CS_STR_FUNCTION=0x6f
  124.  
  125. /* Var length instructions */
  126.  
  127.     ,CS_COMPARE_ARS=0x70
  128.     ,CS_TOGGLE_USER_MISC
  129.     ,CS_COMPARE_USER_MISC
  130.     ,CS_REPLACE_TEXT
  131.     ,CS_TOGGLE_USER_CHAT
  132.     ,CS_COMPARE_USER_CHAT
  133.     ,CS_TOGGLE_USER_QWK
  134.     ,CS_COMPARE_USER_QWK
  135.     ,CS_SWITCH
  136.     ,CS_CASE
  137.     ,CS_USE_INT_VAR         // 0x7a
  138.  
  139. /* File I/O Functions */
  140.  
  141.     ,CS_FIO_FUNCTION=0x7e
  142.  
  143. /* Variable instruction sub-ops */
  144.  
  145.     ,CS_VAR_INSTRUCTION=0x7f
  146.  
  147. /* Functions */
  148.  
  149.     ,CS_MAIL_READ=0x80
  150.     ,CS_MAIL_READ_SENT
  151.     ,CS_MAIL_READ_ALL
  152.     ,CS_MAIL_SEND
  153.     ,CS_MAIL_SEND_BULK
  154.     ,CS_MAIL_SEND_FILE
  155.     ,CS_MAIL_SEND_FEEDBACK
  156.     ,CS_MAIL_SEND_NETMAIL
  157.     ,CS_MAIL_SEND_NETFILE
  158.     ,CS_LOGOFF
  159.     ,CS_LOGOFF_FAST
  160.     ,CS_AUTO_MESSAGE
  161.     ,CS_MSG_SET_AREA
  162.     ,CS_MSG_SELECT_AREA
  163.     ,CS_MSG_SHOW_GROUPS
  164.     ,CS_MSG_SHOW_SUBBOARDS
  165.     ,CS_MSG_GROUP_UP            // 0x90
  166.     ,CS_MSG_GROUP_DOWN
  167.     ,CS_MSG_SUBBOARD_UP
  168.     ,CS_MSG_SUBBOARD_DOWN
  169.     ,CS_MSG_GET_SUB_NUM
  170.     ,CS_MSG_GET_GRP_NUM
  171.     ,CS_MSG_READ
  172.     ,CS_MSG_POST
  173.     ,CS_MSG_QWK
  174.     ,CS_MSG_PTRS_CFG
  175.     ,CS_MSG_PTRS_REINIT
  176.     ,CS_MSG_NEW_SCAN_CFG
  177.     ,CS_MSG_NEW_SCAN
  178.     ,CS_MSG_NEW_SCAN_ALL
  179.     ,CS_MSG_CONT_SCAN
  180.     ,CS_MSG_CONT_SCAN_ALL
  181.     ,CS_MSG_BROWSE_SCAN         // 0xA0
  182.     ,CS_MSG_BROWSE_SCAN_ALL
  183.     ,CS_MSG_FIND_TEXT
  184.     ,CS_MSG_FIND_TEXT_ALL
  185.     ,CS_MSG_YOUR_SCAN_CFG
  186.     ,CS_MSG_YOUR_SCAN
  187.     ,CS_MSG_YOUR_SCAN_ALL
  188.     ,CS_MSG_NEW_SCAN_SUB
  189.     ,CS_MSG_SET_GROUP
  190.     ,CS_MSG_UNUSED4
  191.     ,CS_MSG_UNUSED3
  192.     ,CS_MSG_UNUSED2
  193.     ,CS_MSG_UNUSED1
  194.     ,CS_FILE_SET_AREA
  195.     ,CS_FILE_SELECT_AREA
  196.     ,CS_FILE_SHOW_LIBRARIES
  197.     ,CS_FILE_SHOW_DIRECTORIES    // 0xB0
  198.     ,CS_FILE_LIBRARY_UP
  199.     ,CS_FILE_LIBRARY_DOWN
  200.     ,CS_FILE_DIRECTORY_UP
  201.     ,CS_FILE_DIRECTORY_DOWN
  202.     ,CS_FILE_GET_DIR_NUM
  203.     ,CS_FILE_GET_LIB_NUM
  204.     ,CS_FILE_LIST
  205.     ,CS_FILE_LIST_EXTENDED
  206.     ,CS_FILE_VIEW
  207.     ,CS_FILE_UPLOAD
  208.     ,CS_FILE_UPLOAD_USER
  209.     ,CS_FILE_UPLOAD_SYSOP
  210.     ,CS_FILE_DOWNLOAD
  211.     ,CS_FILE_DOWNLOAD_USER
  212.     ,CS_FILE_DOWNLOAD_BATCH
  213.     ,CS_FILE_REMOVE             //0xC0
  214.     ,CS_FILE_BATCH_SECTION
  215.     ,CS_FILE_TEMP_SECTION
  216.     ,CS_FILE_NEW_SCAN_CFG
  217.     ,CS_FILE_NEW_SCAN
  218.     ,CS_FILE_NEW_SCAN_ALL
  219.     ,CS_FILE_FIND_TEXT
  220.     ,CS_FILE_FIND_TEXT_ALL
  221.     ,CS_FILE_FIND_NAME
  222.     ,CS_FILE_FIND_NAME_ALL
  223.     ,CS_FILE_PTRS_CFG
  224.     ,CS_FILE_BATCH_ADD
  225.     ,CS_FILE_BATCH_CLEAR
  226.     ,CS_FILE_SET_LIBRARY
  227.     ,CS_FILE_SEND                //Like file_get, but no password needed
  228.     ,CS_FILE_BATCH_ADD_LIST
  229.     ,CS_FILE_UNUSED1            //0xD0
  230.     ,CS_NODELIST_ALL
  231.     ,CS_NODELIST_USERS
  232.     ,CS_CHAT_SECTION
  233.     ,CS_USER_DEFAULTS
  234.     ,CS_USER_EDIT
  235.     ,CS_TEXT_FILE_SECTION
  236.     ,CS_INFO_SYSTEM
  237.     ,CS_INFO_SUBBOARD
  238.     ,CS_INFO_DIRECTORY
  239.     ,CS_INFO_USER
  240.     ,CS_INFO_VERSION
  241.     ,CS_INFO_XFER_POLICY
  242.     ,CS_XTRN_EXEC
  243.     ,CS_XTRN_SECTION
  244.     ,CS_USERLIST_SUB
  245.     ,CS_USERLIST_DIR            //0xE0
  246.     ,CS_USERLIST_ALL
  247.     ,CS_USERLIST_LOGONS
  248.     ,CS_PAGE_SYSOP
  249.     ,CS_PRIVATE_CHAT
  250.     ,CS_PRIVATE_MESSAGE
  251.     ,CS_MINUTE_BANK
  252.     ,CS_GURU_LOG
  253.     ,CS_ERROR_LOG
  254.     ,CS_SYSTEM_LOG
  255.     ,CS_SYSTEM_YLOG
  256.     ,CS_SYSTEM_STATS
  257.     ,CS_NODE_STATS
  258.     ,CS_SHOW_MEM
  259.     ,CS_CHANGE_USER
  260.     ,CS_ANSI_CAPTURE
  261.     ,CS_LIST_TEXT_FILE            //0xF0
  262.     ,CS_EDIT_TEXT_FILE
  263.     ,CS_FILE_SET_ALT_PATH
  264.     ,CS_FILE_RESORT_DIRECTORY
  265.     ,CS_FILE_GET
  266.     ,CS_FILE_PUT
  267.     ,CS_FILE_UPLOAD_BULK
  268.     ,CS_FILE_FIND_OLD
  269.     ,CS_FILE_FIND_OPEN
  270.     ,CS_FILE_FIND_OFFLINE
  271.     ,CS_FILE_FIND_OLD_UPLOADS
  272.     ,CS_INC_MAIN_CMDS
  273.     ,CS_INC_FILE_CMDS
  274.     ,CS_PRINTFILE_STR
  275.     ,CS_PAGE_GURU                //0xFE
  276.     
  277.     };
  278.  
  279.     /* Variable instructions (sub-op-code) */
  280.  
  281. enum {
  282.  
  283.      SHOW_VARS                        // Show all variables
  284.     ,PRINT_VAR                        // Print a single variable
  285.     ,VAR_PRINTF                     // Print a formated line of text
  286.     ,VAR_RESERVED_4
  287.     ,VAR_RESERVED_3
  288.     ,VAR_RESERVED_2
  289.     ,VAR_RESERVED_1
  290.     ,DEFINE_STR_VAR                 // Define Local Variable
  291.     ,DEFINE_INT_VAR
  292.     ,VAR_RESERVED_A4
  293.     ,VAR_RESERVED_A3
  294.     ,VAR_RESERVED_A2
  295.     ,VAR_RESERVED_A1
  296.     ,DEFINE_GLOBAL_STR_VAR            // Define Global Variable
  297.     ,DEFINE_GLOBAL_INT_VAR
  298.     ,VAR_RESERVED_B4
  299.     ,VAR_RESERVED_B3    // 0x10
  300.     ,VAR_RESERVED_B2
  301.     ,VAR_RESERVED_B1
  302.     ,SET_STR_VAR                    // Set string variable
  303.     ,SET_INT_VAR                    // Set integer variable
  304.     ,VAR_RESERVED_C4
  305.     ,VAR_RESERVED_C3
  306.     ,VAR_RESERVED_C2
  307.     ,VAR_RESERVED_C1
  308.     ,COMPARE_STR_VAR                // Compare string variable (static)
  309.     ,COMPARE_INT_VAR                // Compare integer variable (static)
  310.     ,STRNCMP_VAR                    // Compare n chars of str var (static)
  311.     ,STRSTR_VAR                     // Sub-string compare of str var (static)
  312.     ,VAR_RESERVED_D2
  313.     ,VAR_RESERVED_D1
  314.     ,COMPARE_VARS                    // Compare two variables
  315.     ,STRNCMP_VARS        // 0x20     // Compare n chars of str vars (dynamic)
  316.     ,STRSTR_VARS                    // Sub-string compare between two str vars
  317.     ,VAR_RESERVED_E2
  318.     ,VAR_RESERVED_E1
  319.     ,COPY_VAR                        // Copy from one variable to another
  320.     ,VAR_RESERVED_F4
  321.     ,VAR_RESERVED_F3
  322.     ,VAR_RESERVED_F2
  323.     ,VAR_RESERVED_F1
  324.     ,SWAP_VARS                        // Swap two variables
  325.     ,VAR_RESERVED_G4
  326.     ,VAR_RESERVED_G3
  327.     ,VAR_RESERVED_G2
  328.     ,VAR_RESERVED_G1
  329.     ,CAT_STR_VAR                    // Concatenate string variable (static)
  330.     ,CAT_STR_VARS                   // Concatenate strint variable (dynamic)
  331.     ,FORMAT_STR_VAR     // 0x30     // Format string variable
  332.     ,TIME_STR                        // Write formated date/time to string
  333.     ,DATE_STR                        // Write MM/DD/YY to string
  334.     ,FORMAT_TIME_STR                // Create custom date/time string
  335.     ,SECOND_STR                     // Create a string in format hh:mm:ss
  336.     ,STRUPR_VAR                     // Convert string to upper case
  337.     ,STRLWR_VAR                     // Convert string to lower case
  338.     ,ADD_INT_VAR                    // Add to int variable (static)
  339.     ,ADD_INT_VARS                    // Add to int variable (dynamic)
  340.     ,VAR_RESERVED_I4
  341.     ,VAR_RESERVED_I3
  342.     ,VAR_RESERVED_I2
  343.     ,VAR_RESERVED_I1
  344.     ,SUB_INT_VAR                    // Subtract from int variable (static)
  345.     ,SUB_INT_VARS                    // Subtract from int variable (dynamic)
  346.     ,VAR_RESERVED_J4
  347.     ,VAR_RESERVED_J3    // 0x40
  348.     ,VAR_RESERVED_J2
  349.     ,VAR_RESERVED_J1
  350.     ,MUL_INT_VAR                    // Multiply int variable (static)
  351.     ,MUL_INT_VARS                    // Multiply int variable (dynamic)
  352.     ,VAR_RESERVED_K4
  353.     ,VAR_RESERVED_K3
  354.     ,VAR_RESERVED_K2
  355.     ,VAR_RESERVED_K1
  356.     ,DIV_INT_VAR                    // Divide int variable (static)
  357.     ,DIV_INT_VARS                    // Divide int variable (dynamic)
  358.     ,MOD_INT_VAR
  359.     ,MOD_INT_VARS
  360.     ,VAR_RESERVED_L2
  361.     ,VAR_RESERVED_L1
  362.     ,AND_INT_VAR                    // Bit-wise AND int variable (static)
  363.     ,AND_INT_VARS        // 0x50     // Bit-wise AND int variable (dynamic)
  364.     ,VAR_RESERVED_M4
  365.     ,VAR_RESERVED_M3
  366.     ,VAR_RESERVED_M2
  367.     ,VAR_RESERVED_M1
  368.     ,OR_INT_VAR                     // Bit-wise OR int variable (static)
  369.     ,OR_INT_VARS                    // Bit-wise OR int variable (dynamic)
  370.     ,VAR_RESERVED_N4
  371.     ,VAR_RESERVED_N3
  372.     ,VAR_RESERVED_N2
  373.     ,VAR_RESERVED_N1
  374.     ,NOT_INT_VAR                    // Bit-wise NOT int variable (static)
  375.     ,NOT_INT_VARS                    // Bit-wise NOT int variable (dynamic)
  376.     ,VAR_RESERVED_O4
  377.     ,VAR_RESERVED_O3
  378.     ,VAR_RESERVED_O2
  379.     ,VAR_RESERVED_O1    // 0x60
  380.     ,XOR_INT_VAR                    // XOR int variable (static)
  381.     ,XOR_INT_VARS                    // XOR int variable (dynamic)
  382.     ,VAR_RESERVED_P4
  383.     ,VAR_RESERVED_P3
  384.     ,VAR_RESERVED_P2
  385.     ,VAR_RESERVED_P1
  386.     ,RANDOM_INT_VAR                 // Set integer to random number
  387.     ,TIME_INT_VAR                    // Set integer to current time/date
  388.     ,DATE_STR_TO_INT                // Convert a date string to integer
  389.     ,STRLEN_INT_VAR                 // Set integer to length of str
  390.     ,CRC16_TO_INT                    // Get CRC-16 of str var
  391.     ,CRC32_TO_INT                    // Get CRC-32 of str var
  392.     ,FLENGTH_TO_INT                 // Put length of str var file into int
  393.     ,CHARVAL_TO_INT                 // Put character val of str var into int
  394.     ,GETNUM_VAR                     // Get number
  395.     ,GETSTR_VAR         // 0x70     // Get string
  396.     ,GETNAME_VAR                    // Get string (upper/lower)
  397.     ,GETSTRUPR_VAR                    // Get string (upper)
  398.     ,GETLINE_VAR                    // Get string (input bar/line)
  399.     ,SHIFT_STR_VAR                    // Shift str in variable
  400.     ,GETSTR_MODE                    // Get string with various modes
  401.     ,TRUNCSP_STR_VAR                // Truncate space off end of str var
  402.     ,CHKFILE_VAR
  403.     ,PRINTFILE_VAR_MODE             // Printfile str var with mode
  404.     ,PRINTTAIL_VAR_MODE             // Print tail-end of str var with mode
  405.     ,CHKSUM_TO_INT                    // Get CHKSUM of str var
  406.     ,STRIP_CTRL_STR_VAR             // Strip ctrl chars from str var
  407.     ,SEND_FILE_VIA                    // Send file (static) via protocol
  408.     ,SEND_FILE_VIA_VAR                // Send file (dynamic) via protocol
  409.     ,FTIME_TO_INT                    // Put time of str var file into int
  410.     ,RECEIVE_FILE_VIA                // Receive file (static) via protocol
  411.     ,RECEIVE_FILE_VIA_VAR            // Receive file (dynamic) via protocol
  412.     };
  413.  
  414.                                     // More string arg functions
  415. enum {
  416.      CS_LOGIN                        // Login/password prompt
  417.     ,CS_LOAD_TEXT                    // Load alternative TEXT.DAT
  418.     };
  419.  
  420. enum {                                // More single byte instructions
  421.      CS_ONLINE                        // Online execution only
  422.     ,CS_OFFLINE                     // Offline execution allowed
  423.     ,CS_NEWUSER                     // New user procedure
  424.     ,CS_LOGON                        // Logon procedure
  425.     ,CS_LOGOUT                        // Logout procedure
  426.     ,CS_EXIT                        // Exit current module immediately
  427.     };
  428.  
  429. enum {                                // More two byte instructions
  430.      CS_USER_EVENT                    // External user event
  431.     };
  432.  
  433. enum {
  434.      FIO_OPEN                        // Open file (static filename)
  435.     ,FIO_CLOSE                        // Close file
  436.     ,FIO_READ                        // Read from file
  437.     ,FIO_READ_VAR                    // Read from file, variable # of bytes
  438.     ,FIO_WRITE                        // Write to file
  439.     ,FIO_WRITE_VAR                    // Write to file, variable # of bytes
  440.     ,FIO_GET_LENGTH                 // Get length
  441.     ,FIO_EOF                        // Set logic to TRUE if eof
  442.     ,FIO_GET_POS                    // Get current file position
  443.     ,FIO_SEEK                        // Seek within file
  444.     ,FIO_SEEK_VAR                    // Seek within file, variable offset
  445.     ,FIO_LOCK                        // Lock a region
  446.     ,FIO_LOCK_VAR                    // Lock a region, variable length
  447.     ,FIO_UNLOCK                     // Unlock a region
  448.     ,FIO_UNLOCK_VAR                 // Unlock a region, variable length
  449.     ,FIO_SET_LENGTH                 // Change size
  450.     ,FIO_SET_LENGTH_VAR             // Change size, variable length
  451.     ,FIO_PRINTF                     // Write formated string to file
  452.     ,FIO_SET_ETX                    // Set end-of-text character
  453.     ,FIO_GET_TIME                    // Gets the current date/time of file
  454.     ,FIO_SET_TIME                    // Sets the current date/time of file
  455.     ,FIO_OPEN_VAR                    // Open a file (dynamic filename)
  456.     ,FIO_READ_LINE                    // Read a single line from file
  457.     ,FIO_FLUSH                        // Flush buffered output to disk
  458.     ,FIO_UNUSED8
  459.     ,FIO_UNUSED7
  460.     ,FIO_UNUSED6
  461.     ,FIO_UNUSED5
  462.     ,FIO_UNUSED4
  463.     ,FIO_UNUSED3
  464.     ,FIO_UNUSED2
  465.     ,FIO_UNUSED1
  466.     ,REMOVE_FILE                    // Remove a file
  467.     ,RENAME_FILE                    // Rename a file
  468.     ,COPY_FILE                        // Copy a file to another file
  469.     ,MOVE_FILE                        // Move a file to another file
  470.     ,GET_FILE_ATTRIB                // Get file attributes
  471.     ,SET_FILE_ATTRIB                // Set file attributes
  472.     ,MAKE_DIR                        // Make directory
  473.     ,CHANGE_DIR                     // Change current directory
  474.     ,REMOVE_DIR                     // Remove directory
  475.     ,OPEN_DIR                        // Open a directory
  476.     ,READ_DIR                        // Read a directory entry
  477.     ,REWIND_DIR                     // Rewind an open directory
  478.     ,CLOSE_DIR                        // Close an open directory
  479.     };
  480.  
  481. enum {
  482.      USER_STRING_ALIAS
  483.     ,USER_STRING_REALNAME
  484.     ,USER_STRING_HANDLE
  485.     ,USER_STRING_COMPUTER
  486.     ,USER_STRING_NOTE
  487.     ,USER_STRING_ADDRESS
  488.     ,USER_STRING_LOCATION
  489.     ,USER_STRING_ZIPCODE
  490.     ,USER_STRING_PASSWORD
  491.     ,USER_STRING_BIRTHDAY
  492.     ,USER_STRING_PHONE
  493.     ,USER_STRING_MODEM
  494.     ,USER_STRING_COMMENT
  495.  
  496.     };
  497.  
  498. #define CS_ONE_BYTE     CS_IF_TRUE
  499. #define CS_TWO_BYTE     CS_CMDKEY
  500. #define CS_THREE_BYTE    CS_GOTO
  501. #define CS_ASCIIZ        CS_MENU
  502. #define CS_MISC         CS_COMPARE_ARS
  503. #define CS_FUNCTIONS    CS_MAIL_READ
  504. #define CS_ELSEORENDIF    0xff
  505. #define CS_NEXTCASE     0xfe
  506.  
  507. #define CS_DIGIT        0xff
  508. #define CS_EDIGIT        0xfe
  509.  
  510.                                     /* Bits for csi_t.misc */
  511. #define CS_IN_SWITCH    (1L<<0)     /* Inside active switch statement */
  512. #define CS_OFFLINE_EXEC (1L<<1)     /* Offline execution */
  513.  
  514. #define MAX_RETS    50    /* maximum nested call depth */
  515. #define MAX_CMDRETS 50    /* maximum nested cmd depth */
  516. #define MAX_STRVARS 26
  517. #define MAX_INTVARS 26
  518. #define MAX_STRLEN    81
  519. #define MAX_FOPENS    10    /* maximum open files */
  520. #define MAX_SYSVARS 16    /* maximum system variable saves */
  521.  
  522. #define LOGIC_LESS        -1
  523. #define LOGIC_EQUAL     0
  524. #define LOGIC_GREATER    1
  525. #define LOGIC_TRUE        LOGIC_EQUAL
  526. #define LOGIC_FALSE     LOGIC_LESS
  527.  
  528. typedef struct {                    /* Command shell image */
  529.  
  530.     uchar    *cs,                    /* Command shell image */
  531.             *ip,                    /* Instruction pointer */
  532.             cmd,                    /* Current command key */
  533.             etx,                    /* End-of-text character */
  534.             *str,                    /* Current string */
  535.             *ret[MAX_RETS],         /* Return address stack */
  536.             rets,                    /* Returns on stack */
  537.             *cmdret[MAX_CMDRETS],    /* Command return address stack */
  538.             cmdrets,                /* Command returns on stack */
  539.             **str_var;                /* String variables */
  540.  
  541.  
  542.     int     logic,                    /* Current logic */
  543.             files;                    /* Open files */
  544.  
  545.     FILE    *file[MAX_FOPENS];        /* Each file ptr */
  546.  
  547.     uint    str_vars,                /* Total number of string variables */
  548.             int_vars;                /* Total number of integer variables */
  549.  
  550.     long    retval,                 /* Return value */
  551.             misc,                    /* Misc bits */
  552.             switch_val,             /* Current switch value */
  553.             *int_var,                /* Integer variables */
  554.             *str_var_name,            /* String variable names (CRC-32) */
  555.             *int_var_name;            /* Integer variable names (CRC-32) */
  556.  
  557.     ulong    length;                 /* Length of image */
  558.  
  559.     } csi_t;
  560.  
  561. extern uint global_str_vars;
  562. extern char **global_str_var;
  563. extern long *global_str_var_name;
  564. extern uint global_int_vars;
  565. extern long *global_int_var;
  566. extern long *global_int_var_name;
  567. extern csi_t main_csi;
  568. extern char *sysvar_p[MAX_SYSVARS];
  569. extern int sysvar_pi;
  570. extern long sysvar_l[MAX_SYSVARS];
  571. extern int sysvar_li;
  572.  
  573. int exec(csi_t *csi);
  574. int exec_function(csi_t *csi);
  575. int exec_misc(csi_t *csi, uchar *path);
  576. int execmsg(csi_t *csi);
  577. int execfile(csi_t *csi);
  578. long exec_bin(uchar *mod, csi_t *csi);
  579. void clearvars(csi_t *bin);
  580. void freevars(csi_t *bin);
  581. char **getstrvar(csi_t *bin, long name);
  582. long *getintvar(csi_t *bin, long name);
  583. char *copystrvar(csi_t *csi, char *p, char *str);
  584. void skipto(csi_t *csi, uchar inst);
  585.  
  586. /* End of CMDSHELL.H */
  587.