Annotation of sbbs/sbbs3/cmdshell.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.