|
|
1.1 ! root 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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.