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