|
|
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.