|
|
1.1 root 1: /* cmdshell.h */
2:
3: /* Synchronet command shell/module constants and structure definitions */
4:
1.1.1.2 ! root 5: /* $Id: cmdshell.h,v 1.7 2003/10/09 17:27:05 deuce Exp $ */
1.1 root 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:
1.1.1.2 ! root 50: CS_IF_TRUE=0 /* Same as IF_EQUAL */
! 51: ,CS_IF_FALSE /* Same as IF_NOT_EQUAL */
1.1 root 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
1.1.1.2 ! root 82: ,CS_SET_EDITOR /* 0x20 */
1.1 root 83: ,CS_INKEY
1.1.1.2 ! root 84: ,CS_INCHAR /* Was RIOSYNC (now deprecated) 02/18/01 */
1.1 root 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
1.1.1.2 ! root 92: ,CS_DEFAULT /* 0x2a */
1.1 root 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
1.1.1.2 ! root 111: ,CS_GETLINE /* 0x3a */
1.1 root 112: ,CS_NODE_STATUS
113: ,CS_CMDCHAR
114: ,CS_COMPARE_CHAR
1.1.1.2 ! root 115: ,CS_MULTINODE_CHAT
1.1 root 116: ,CS_TWO_MORE_BYTES=0x3f
117:
118: /* Three byte instructions */
119:
120: ,CS_GOTO=0x40
121: ,CS_CALL
122: ,CS_TOGGLE_NODE_MISC
123: ,CS_ADJUST_USER_CREDITS
124: ,CS_TOGGLE_USER_FLAG
125: ,CS_GETNUM
126: ,CS_COMPARE_NODE_MISC
127: ,CS_MSWAIT
128: ,CS_ADJUST_USER_MINUTES
129: ,CS_REVERT_TEXT
130: ,CS_THREE_MORE_BYTES=0x4f
131:
132: /* String arg instructions */
133:
134: ,CS_MENU=0x50
135: ,CS_PRINT
136: ,CS_PRINT_LOCAL
137: ,CS_PRINT_REMOTE
138: ,CS_PRINTFILE
139: ,CS_PRINTFILE_LOCAL
140: ,CS_PRINTFILE_REMOTE
141: ,CS_YES_NO
142: ,CS_NO_YES
143: ,CS_COMPARE_STR
1.1.1.2 ! root 144: ,CS_COMPARE_WORD /* 0x5a */
1.1 root 145: ,CS_EXEC
146: ,CS_EXEC_INT
147: ,CS_EXEC_BIN
148: ,CS_EXEC_XTRN
149: ,CS_GETCMD
1.1.1.2 ! root 150: ,CS_LOG /* 0x60 */
1.1 root 151: ,CS_MNEMONICS
152: ,CS_SETSTR
153: ,CS_SET_MENU_DIR
154: ,CS_SET_MENU_FILE
155: ,CS_CMDSTR
156: ,CS_CHKFILE
157: ,CS_GET_TEMPLATE
158: ,CS_TRASHCAN
159: ,CS_CREATE_SIF
1.1.1.2 ! root 160: ,CS_READ_SIF /* 0x6a */
1.1 root 161: ,CS_CMDKEYS
162: ,CS_COMPARE_KEYS
163: ,CS_STR_FUNCTION=0x6f
164:
165: /* Var length instructions */
166:
167: ,CS_COMPARE_ARS=0x70
168: ,CS_TOGGLE_USER_MISC
169: ,CS_COMPARE_USER_MISC
170: ,CS_REPLACE_TEXT
171: ,CS_TOGGLE_USER_CHAT
172: ,CS_COMPARE_USER_CHAT
173: ,CS_TOGGLE_USER_QWK
174: ,CS_COMPARE_USER_QWK
175: ,CS_SWITCH
176: ,CS_CASE
1.1.1.2 ! root 177: ,CS_USE_INT_VAR /* 0x7a */
! 178:
! 179: /* Network (TCP/IP) Functions */
! 180:
! 181: ,CS_NET_FUNCTION=0x7d
1.1 root 182:
183: /* File I/O Functions */
184:
185: ,CS_FIO_FUNCTION=0x7e
186:
187: /* Variable instruction sub-ops */
188:
189: ,CS_VAR_INSTRUCTION=0x7f
190:
191: /* Functions */
192:
193: ,CS_MAIL_READ=0x80
194: ,CS_MAIL_READ_SENT
195: ,CS_MAIL_READ_ALL
196: ,CS_MAIL_SEND
197: ,CS_MAIL_SEND_BULK
198: ,CS_MAIL_SEND_FILE
199: ,CS_MAIL_SEND_FEEDBACK
200: ,CS_MAIL_SEND_NETMAIL
201: ,CS_MAIL_SEND_NETFILE
202: ,CS_LOGOFF
203: ,CS_LOGOFF_FAST
204: ,CS_AUTO_MESSAGE
205: ,CS_MSG_SET_AREA
206: ,CS_MSG_SELECT_AREA
207: ,CS_MSG_SHOW_GROUPS
208: ,CS_MSG_SHOW_SUBBOARDS
1.1.1.2 ! root 209: ,CS_MSG_GROUP_UP /* 0x90 */
1.1 root 210: ,CS_MSG_GROUP_DOWN
211: ,CS_MSG_SUBBOARD_UP
212: ,CS_MSG_SUBBOARD_DOWN
213: ,CS_MSG_GET_SUB_NUM
214: ,CS_MSG_GET_GRP_NUM
215: ,CS_MSG_READ
216: ,CS_MSG_POST
217: ,CS_MSG_QWK
218: ,CS_MSG_PTRS_CFG
219: ,CS_MSG_PTRS_REINIT
220: ,CS_MSG_NEW_SCAN_CFG
221: ,CS_MSG_NEW_SCAN
222: ,CS_MSG_NEW_SCAN_ALL
223: ,CS_MSG_CONT_SCAN
224: ,CS_MSG_CONT_SCAN_ALL
1.1.1.2 ! root 225: ,CS_MSG_BROWSE_SCAN /* 0xA0 */
1.1 root 226: ,CS_MSG_BROWSE_SCAN_ALL
227: ,CS_MSG_FIND_TEXT
228: ,CS_MSG_FIND_TEXT_ALL
229: ,CS_MSG_YOUR_SCAN_CFG
230: ,CS_MSG_YOUR_SCAN
231: ,CS_MSG_YOUR_SCAN_ALL
232: ,CS_MSG_NEW_SCAN_SUB
233: ,CS_MSG_SET_GROUP
234: ,CS_MSG_UNUSED4
235: ,CS_MSG_UNUSED3
236: ,CS_MSG_UNUSED2
237: ,CS_MSG_UNUSED1
238: ,CS_FILE_SET_AREA
239: ,CS_FILE_SELECT_AREA
240: ,CS_FILE_SHOW_LIBRARIES
1.1.1.2 ! root 241: ,CS_FILE_SHOW_DIRECTORIES /* 0xB0 */
1.1 root 242: ,CS_FILE_LIBRARY_UP
243: ,CS_FILE_LIBRARY_DOWN
244: ,CS_FILE_DIRECTORY_UP
245: ,CS_FILE_DIRECTORY_DOWN
246: ,CS_FILE_GET_DIR_NUM
247: ,CS_FILE_GET_LIB_NUM
248: ,CS_FILE_LIST
249: ,CS_FILE_LIST_EXTENDED
250: ,CS_FILE_VIEW
251: ,CS_FILE_UPLOAD
252: ,CS_FILE_UPLOAD_USER
253: ,CS_FILE_UPLOAD_SYSOP
254: ,CS_FILE_DOWNLOAD
255: ,CS_FILE_DOWNLOAD_USER
256: ,CS_FILE_DOWNLOAD_BATCH
1.1.1.2 ! root 257: ,CS_FILE_REMOVE /* 0xC0 */
1.1 root 258: ,CS_FILE_BATCH_SECTION
259: ,CS_FILE_TEMP_SECTION
260: ,CS_FILE_NEW_SCAN_CFG
261: ,CS_FILE_NEW_SCAN
262: ,CS_FILE_NEW_SCAN_ALL
263: ,CS_FILE_FIND_TEXT
264: ,CS_FILE_FIND_TEXT_ALL
265: ,CS_FILE_FIND_NAME
266: ,CS_FILE_FIND_NAME_ALL
267: ,CS_FILE_PTRS_CFG
268: ,CS_FILE_BATCH_ADD
269: ,CS_FILE_BATCH_CLEAR
270: ,CS_FILE_SET_LIBRARY
1.1.1.2 ! root 271: ,CS_FILE_SEND /* Like file_get, but no password needed */
1.1 root 272: ,CS_FILE_BATCH_ADD_LIST
1.1.1.2 ! root 273: ,CS_FILE_RECEIVE /* 0xD0 */
1.1 root 274: ,CS_NODELIST_ALL
275: ,CS_NODELIST_USERS
276: ,CS_CHAT_SECTION
277: ,CS_USER_DEFAULTS
278: ,CS_USER_EDIT
279: ,CS_TEXT_FILE_SECTION
280: ,CS_INFO_SYSTEM
281: ,CS_INFO_SUBBOARD
282: ,CS_INFO_DIRECTORY
283: ,CS_INFO_USER
284: ,CS_INFO_VERSION
285: ,CS_INFO_XFER_POLICY
286: ,CS_XTRN_EXEC
287: ,CS_XTRN_SECTION
288: ,CS_USERLIST_SUB
1.1.1.2 ! root 289: ,CS_USERLIST_DIR /* 0xE0 */
1.1 root 290: ,CS_USERLIST_ALL
291: ,CS_USERLIST_LOGONS
292: ,CS_PAGE_SYSOP
293: ,CS_PRIVATE_CHAT
294: ,CS_PRIVATE_MESSAGE
295: ,CS_MINUTE_BANK
296: ,CS_GURU_LOG
297: ,CS_ERROR_LOG
298: ,CS_SYSTEM_LOG
299: ,CS_SYSTEM_YLOG
300: ,CS_SYSTEM_STATS
301: ,CS_NODE_STATS
302: ,CS_SHOW_MEM
303: ,CS_CHANGE_USER
304: ,CS_ANSI_CAPTURE
1.1.1.2 ! root 305: ,CS_LIST_TEXT_FILE /* 0xF0 */
1.1 root 306: ,CS_EDIT_TEXT_FILE
307: ,CS_FILE_SET_ALT_PATH
308: ,CS_FILE_RESORT_DIRECTORY
309: ,CS_FILE_GET
310: ,CS_FILE_PUT
311: ,CS_FILE_UPLOAD_BULK
312: ,CS_FILE_FIND_OLD
313: ,CS_FILE_FIND_OPEN
314: ,CS_FILE_FIND_OFFLINE
315: ,CS_FILE_FIND_OLD_UPLOADS
316: ,CS_INC_MAIN_CMDS
317: ,CS_INC_FILE_CMDS
318: ,CS_PRINTFILE_STR
319: ,CS_PAGE_GURU
1.1.1.2 ! root 320: ,CS_SPY /* 0xFF */
1.1 root 321:
322: };
323:
324: /* Variable instructions (sub-op-code) */
325:
326: /* Preceeded by CS_VAR_INSTRUCTION */
327:
328: enum {
329:
1.1.1.2 ! root 330: SHOW_VARS /* Show all variables */
! 331: ,PRINT_VAR /* Print a single variable */
! 332: ,VAR_PRINTF /* Print a formated line of text */
! 333: ,VAR_PRINTF_LOCAL /* Print a formated line of text to local display */
1.1 root 334: ,VAR_RESERVED_3
335: ,VAR_RESERVED_2
336: ,VAR_RESERVED_1
1.1.1.2 ! root 337: ,DEFINE_STR_VAR /* Define Local Variable */
1.1 root 338: ,DEFINE_INT_VAR
339: ,VAR_RESERVED_A4
340: ,VAR_RESERVED_A3
341: ,VAR_RESERVED_A2
342: ,VAR_RESERVED_A1
1.1.1.2 ! root 343: ,DEFINE_GLOBAL_STR_VAR /* Define Global Variable */
1.1 root 344: ,DEFINE_GLOBAL_INT_VAR
345: ,VAR_RESERVED_B4
1.1.1.2 ! root 346: ,VAR_RESERVED_B3 /* 0x10 */
1.1 root 347: ,VAR_RESERVED_B2
348: ,VAR_RESERVED_B1
1.1.1.2 ! root 349: ,SET_STR_VAR /* Set string variable */
! 350: ,SET_INT_VAR /* Set integer variable */
1.1 root 351: ,VAR_RESERVED_C4
352: ,VAR_RESERVED_C3
353: ,VAR_RESERVED_C2
354: ,VAR_RESERVED_C1
1.1.1.2 ! root 355: ,COMPARE_STR_VAR /* Compare string variable (static) */
! 356: ,COMPARE_INT_VAR /* Compare integer variable (static) */
! 357: ,STRNCMP_VAR /* Compare n chars of str var (static) */
! 358: ,STRSTR_VAR /* Sub-string compare of str var (static) */
1.1 root 359: ,VAR_RESERVED_D2
360: ,VAR_RESERVED_D1
1.1.1.2 ! root 361: ,COMPARE_VARS /* Compare two variables */
! 362: ,STRNCMP_VARS /* 0x20 // Compare n chars of str vars (dynamic) */
! 363: ,STRSTR_VARS /* Sub-string compare between two str vars */
1.1 root 364: ,VAR_RESERVED_E2
365: ,VAR_RESERVED_E1
1.1.1.2 ! root 366: ,COPY_VAR /* Copy from one variable to another */
1.1 root 367: ,VAR_RESERVED_F4
368: ,VAR_RESERVED_F3
369: ,VAR_RESERVED_F2
370: ,VAR_RESERVED_F1
1.1.1.2 ! root 371: ,SWAP_VARS /* Swap two variables */
1.1 root 372: ,VAR_RESERVED_G4
373: ,VAR_RESERVED_G3
374: ,VAR_RESERVED_G2
375: ,VAR_RESERVED_G1
1.1.1.2 ! root 376: ,CAT_STR_VAR /* Concatenate string variable (static) */
! 377: ,CAT_STR_VARS /* Concatenate strint variable (dynamic) */
! 378: ,FORMAT_STR_VAR /* 0x30 // Format string variable */
! 379: ,TIME_STR /* Write formated date/time to string */
! 380: ,DATE_STR /* Write MM/DD/YY to string */
! 381: ,FORMAT_TIME_STR /* Create custom date/time string */
! 382: ,SECOND_STR /* Create a string in format hh:mm:ss */
! 383: ,STRUPR_VAR /* Convert string to upper case */
! 384: ,STRLWR_VAR /* Convert string to lower case */
! 385: ,ADD_INT_VAR /* Add to int variable (static) */
! 386: ,ADD_INT_VARS /* Add to int variable (dynamic) */
1.1 root 387: ,VAR_RESERVED_I4
388: ,VAR_RESERVED_I3
389: ,VAR_RESERVED_I2
390: ,VAR_RESERVED_I1
1.1.1.2 ! root 391: ,SUB_INT_VAR /* Subtract from int variable (static) */
! 392: ,SUB_INT_VARS /* Subtract from int variable (dynamic) */
1.1 root 393: ,VAR_RESERVED_J4
1.1.1.2 ! root 394: ,VAR_RESERVED_J3 /* 0x40 */
1.1 root 395: ,VAR_RESERVED_J2
396: ,VAR_RESERVED_J1
1.1.1.2 ! root 397: ,MUL_INT_VAR /* Multiply int variable (static) */
! 398: ,MUL_INT_VARS /* Multiply int variable (dynamic) */
1.1 root 399: ,VAR_RESERVED_K4
400: ,VAR_RESERVED_K3
401: ,VAR_RESERVED_K2
402: ,VAR_RESERVED_K1
1.1.1.2 ! root 403: ,DIV_INT_VAR /* Divide int variable (static) */
! 404: ,DIV_INT_VARS /* Divide int variable (dynamic) */
1.1 root 405: ,MOD_INT_VAR
406: ,MOD_INT_VARS
407: ,VAR_RESERVED_L2
408: ,VAR_RESERVED_L1
1.1.1.2 ! root 409: ,AND_INT_VAR /* Bit-wise AND int variable (static) */
! 410: ,AND_INT_VARS /* 0x50 // Bit-wise AND int variable (dynamic) */
! 411: ,COMPARE_ANY_BITS
! 412: ,COMPARE_ALL_BITS
1.1 root 413: ,VAR_RESERVED_M2
414: ,VAR_RESERVED_M1
1.1.1.2 ! root 415: ,OR_INT_VAR /* Bit-wise OR int variable (static) */
! 416: ,OR_INT_VARS /* Bit-wise OR int variable (dynamic) */
1.1 root 417: ,VAR_RESERVED_N4
418: ,VAR_RESERVED_N3
419: ,VAR_RESERVED_N2
420: ,VAR_RESERVED_N1
1.1.1.2 ! root 421: ,NOT_INT_VAR /* Bit-wise NOT int variable (static) */
! 422: ,NOT_INT_VARS /* Bit-wise NOT int variable (dynamic) */
1.1 root 423: ,VAR_RESERVED_O4
424: ,VAR_RESERVED_O3
425: ,VAR_RESERVED_O2
1.1.1.2 ! root 426: ,VAR_RESERVED_O1 /* 0x60 */
! 427: ,XOR_INT_VAR /* XOR int variable (static) */
! 428: ,XOR_INT_VARS /* XOR int variable (dynamic) */
1.1 root 429: ,VAR_RESERVED_P4
430: ,VAR_RESERVED_P3
431: ,VAR_RESERVED_P2
432: ,VAR_RESERVED_P1
1.1.1.2 ! root 433: ,RANDOM_INT_VAR /* Set integer to random number */
! 434: ,TIME_INT_VAR /* Set integer to current time/date */
! 435: ,DATE_STR_TO_INT /* Convert a date string to integer */
! 436: ,STRLEN_INT_VAR /* Set integer to length of str */
! 437: ,CRC16_TO_INT /* Get CRC-16 of str var */
! 438: ,CRC32_TO_INT /* Get CRC-32 of str var */
! 439: ,FLENGTH_TO_INT /* Put length of str var file into int */
! 440: ,CHARVAL_TO_INT /* Put character val of str var into int */
! 441: ,GETNUM_VAR /* Get number */
! 442: ,GETSTR_VAR /* 0x70 // Get string */
! 443: ,GETNAME_VAR /* Get string (upper/lower) */
! 444: ,GETSTRUPR_VAR /* Get string (upper) */
! 445: ,GETLINE_VAR /* Get string (input bar/line) */
! 446: ,SHIFT_STR_VAR /* Shift str in variable */
! 447: ,GETSTR_MODE /* Get string with various modes */
! 448: ,TRUNCSP_STR_VAR /* Truncate space off end of str var */
1.1 root 449: ,CHKFILE_VAR
1.1.1.2 ! root 450: ,PRINTFILE_VAR_MODE /* Printfile str var with mode */
! 451: ,PRINTTAIL_VAR_MODE /* Print tail-end of str var with mode */
! 452: ,CHKSUM_TO_INT /* Get CHKSUM of str var */
! 453: ,STRIP_CTRL_STR_VAR /* Strip ctrl chars from str var */
! 454: ,SEND_FILE_VIA /* Send file (static) via protocol */
! 455: ,SEND_FILE_VIA_VAR /* Send file (dynamic) via protocol */
! 456: ,FTIME_TO_INT /* Put time of str var file into int */
! 457: ,RECEIVE_FILE_VIA /* Receive file (static) via protocol */
! 458: ,RECEIVE_FILE_VIA_VAR /* 0x80 // Receive file (dynamic) via protocol */
! 459: ,TELNET_GATE_STR /* Run telnet gateway to static address with mode */
! 460: ,TELNET_GATE_VAR /* Run telnet gateway to variable address with mode */
! 461: ,COPY_FIRST_CHAR /* Copy first char of str var to int var */
! 462: ,COMPARE_FIRST_CHAR /* Compare first char of str var to static char */
! 463: ,COPY_CHAR /* Copy cmdkey to int var or str var */
! 464: ,SHIFT_TO_FIRST_CHAR /* Shift str var to first occurance of static char */
! 465: ,SHIFT_TO_LAST_CHAR /* Shift str var to last occurance of static char */
! 466: ,MATCHUSER /* Set int var to user number of user name (str var) */
1.1 root 467: };
468:
469: /* Preceeded by CS_STR_FUNCTION */
470:
1.1.1.2 ! root 471: enum { /* More string arg functions */
! 472: CS_LOGIN /* Login/password prompt */
! 473: ,CS_LOAD_TEXT /* Load alternative TEXT.DAT */
1.1 root 474: };
475:
476: /* Preceeded by CS_ONE_MORE_BYTE */
1.1.1.2 ! root 477: enum { /* More single byte instructions */
! 478: CS_ONLINE /* Online execution only */
! 479: ,CS_OFFLINE /* Offline execution allowed */
! 480: ,CS_NEWUSER /* New user procedure */
! 481: ,CS_LOGON /* Logon procedure */
! 482: ,CS_LOGOUT /* Logout procedure */
! 483: ,CS_EXIT /* Exit current module immediately */
! 484: ,CS_LOOP_BEGIN /* Looping anchor */
! 485: ,CS_CONTINUE_LOOP /* "next" loop */
! 486: ,CS_BREAK_LOOP /* Stop executing loop */
! 487: ,CS_END_LOOP /* End of looping code block */
1.1 root 488: };
489:
490: /* Preceeded by CS_TWO_MORE_BYTES */
1.1.1.2 ! root 491: enum { /* More two byte instructions */
! 492: CS_USER_EVENT /* External user event */
! 493: };
! 494:
! 495: /* Preceeded by CS_NET_FUNCTION */
! 496:
! 497: enum {
! 498: CS_SOCKET_OPEN /* Open a socket */
! 499: ,CS_SOCKET_CLOSE /* Close a socket */
! 500: ,CS_SOCKET_CONNECT /* Outbound connection */
! 501: ,CS_SOCKET_ACCEPT /* Accept an incomming connection */
! 502: ,CS_SOCKET_NREAD /* Get number of bytes in input buffer */
! 503: ,CS_SOCKET_PEEK /* Peek at input buffer */
! 504: ,CS_SOCKET_READ /* Read input buffer */
! 505: ,CS_SOCKET_WRITE /* Write to socket */
! 506: ,CS_SOCKET_CHECK /* Check connection */
! 507: ,CS_SOCKET_READLINE /* Read a cr/lf delimited line from socket */
! 508: ,CS_SOCKET_UNUSED6
! 509: ,CS_SOCKET_UNUSED5
! 510: ,CS_SOCKET_UNUSED4
! 511: ,CS_SOCKET_UNUSED3
! 512: ,CS_SOCKET_UNUSED2
! 513: ,CS_SOCKET_UNUSED1
! 514:
! 515: ,CS_FTP_LOGIN /* socket, username, password */
! 516: ,CS_FTP_LOGOUT
! 517: ,CS_FTP_PWD /* print working dir */
! 518: ,CS_FTP_CWD /* change working dir */
! 519: ,CS_FTP_DIR /* path */
! 520: ,CS_FTP_PUT /* path */
! 521: ,CS_FTP_GET /* path, offset */
! 522: ,CS_FTP_RENAME
! 523: ,CS_FTP_DELETE
! 524: ,CS_FTP_UNUSED7
! 525: ,CS_FTP_UNUSED6
! 526: ,CS_FTP_UNUSED5
! 527: ,CS_FTP_UNUSED4
! 528: ,CS_FTP_UNUSED3
! 529: ,CS_FTP_UNUSED2
! 530: ,CS_FTP_UNUSED1
1.1 root 531: };
532:
533: /* Preceeded by CS_FIO_FUNCTION */
534: enum {
1.1.1.2 ! root 535: FIO_OPEN /* Open file (static filename) */
! 536: ,FIO_CLOSE /* Close file */
! 537: ,FIO_READ /* Read from file */
! 538: ,FIO_READ_VAR /* Read from file, variable # of bytes */
! 539: ,FIO_WRITE /* Write to file */
! 540: ,FIO_WRITE_VAR /* Write to file, variable # of bytes */
! 541: ,FIO_GET_LENGTH /* Get length */
! 542: ,FIO_EOF /* Set logic to TRUE if eof */
! 543: ,FIO_GET_POS /* Get current file position */
! 544: ,FIO_SEEK /* Seek within file */
! 545: ,FIO_SEEK_VAR /* Seek within file, variable offset */
! 546: ,FIO_LOCK /* Lock a region */
! 547: ,FIO_LOCK_VAR /* Lock a region, variable length */
! 548: ,FIO_UNLOCK /* Unlock a region */
! 549: ,FIO_UNLOCK_VAR /* Unlock a region, variable length */
! 550: ,FIO_SET_LENGTH /* Change size */
! 551: ,FIO_SET_LENGTH_VAR /* Change size, variable length */
! 552: ,FIO_PRINTF /* Write formated string to file */
! 553: ,FIO_SET_ETX /* Set end-of-text character */
! 554: ,FIO_GET_TIME /* Gets the current date/time of file */
! 555: ,FIO_SET_TIME /* Sets the current date/time of file */
! 556: ,FIO_OPEN_VAR /* Open a file (dynamic filename) */
! 557: ,FIO_READ_LINE /* Read a single line from file */
! 558: ,FIO_FLUSH /* Flush buffered output to disk */
1.1 root 559: ,FIO_UNUSED8
560: ,FIO_UNUSED7
561: ,FIO_UNUSED6
562: ,FIO_UNUSED5
563: ,FIO_UNUSED4
564: ,FIO_UNUSED3
565: ,FIO_UNUSED2
566: ,FIO_UNUSED1
1.1.1.2 ! root 567: ,REMOVE_FILE /* Remove a file */
! 568: ,RENAME_FILE /* Rename a file */
! 569: ,COPY_FILE /* Copy a file to another file */
! 570: ,MOVE_FILE /* Move a file to another file */
! 571: ,GET_FILE_ATTRIB /* Get file attributes */
! 572: ,SET_FILE_ATTRIB /* Set file attributes */
! 573: ,MAKE_DIR /* Make directory */
! 574: ,CHANGE_DIR /* Change current directory */
! 575: ,REMOVE_DIR /* Remove directory */
! 576: ,OPEN_DIR /* Open a directory */
! 577: ,READ_DIR /* Read a directory entry */
! 578: ,REWIND_DIR /* Rewind an open directory */
! 579: ,CLOSE_DIR /* Close an open directory */
1.1 root 580: };
581:
582: enum {
583: USER_STRING_ALIAS
584: ,USER_STRING_REALNAME
585: ,USER_STRING_HANDLE
586: ,USER_STRING_COMPUTER
587: ,USER_STRING_NOTE
588: ,USER_STRING_ADDRESS
589: ,USER_STRING_LOCATION
590: ,USER_STRING_ZIPCODE
591: ,USER_STRING_PASSWORD
592: ,USER_STRING_BIRTHDAY
593: ,USER_STRING_PHONE
594: ,USER_STRING_MODEM
595: ,USER_STRING_COMMENT
596: ,USER_STRING_NETMAIL
597:
598: };
599:
600: #define CS_ONE_BYTE CS_IF_TRUE
601: #define CS_TWO_BYTE CS_CMDKEY
602: #define CS_THREE_BYTE CS_GOTO
603: #define CS_ASCIIZ CS_MENU
604: #define CS_MISC CS_COMPARE_ARS
605: #define CS_FUNCTIONS CS_MAIL_READ
606: #define CS_ELSEORENDIF 0xff
607: #define CS_NEXTCASE 0xfe
608:
609: #define CS_DIGIT 0xff
610: #define CS_EDIGIT 0xfe
611:
612: /* Bits for csi_t.misc */
613: #define CS_IN_SWITCH (1L<<0) /* Inside active switch statement */
614: #define CS_OFFLINE_EXEC (1L<<1) /* Offline execution */
615:
1.1.1.2 ! root 616: /* Bits for csi_t.ftp_mode */
! 617: #define CS_FTP_ECHO_CMD (1L<<0) /* Echo command lines to user (for debug) */
! 618: #define CS_FTP_ECHO_RSP (1L<<1) /* Echo response lines to user */
! 619: #define CS_FTP_PASV (1L<<2) /* Use PASV mode transfers */
! 620: #define CS_FTP_ASCII (1L<<3) /* Use ASCII file transfers */
! 621: #define CS_FTP_HASH (1L<<4) /* Hash marks printing during xfers */
! 622:
1.1 root 623: #define MAX_RETS 50 /* maximum nested call depth */
624: #define MAX_CMDRETS 50 /* maximum nested cmd depth */
1.1.1.2 ! root 625: #define MAX_LOOPDEPTH 50 /* maximum nested loop depth */
1.1 root 626: #define MAX_STRVARS 26
627: #define MAX_INTVARS 26
628: #define MAX_STRLEN 81
629: #define MAX_FOPENS 10 /* maximum open files */
1.1.1.2 ! root 630: #define MAX_SOCKETS 10 /* maximum open sockets */
1.1 root 631: #define MAX_SYSVARS 16 /* maximum system variable saves */
632:
633: #define LOGIC_LESS -1
634: #define LOGIC_EQUAL 0
635: #define LOGIC_GREATER 1
636: #define LOGIC_TRUE LOGIC_EQUAL
637: #define LOGIC_FALSE LOGIC_LESS
638:
639: typedef struct { /* Command shell image */
640:
641: char* str, /* Current string */
642: **str_var; /* String variables */
643:
644: uchar *cs, /* Command shell image */
645: *ip, /* Instruction pointer */
646: cmd, /* Current command key */
647: etx, /* End-of-text character */
648: *ret[MAX_RETS], /* Return address stack */
649: *cmdret[MAX_CMDRETS], /* Command return address stack */
1.1.1.2 ! root 650: *loop_home[MAX_LOOPDEPTH]; /* Loop home address stack */
1.1 root 651:
652: int logic; /* Current logic */
653:
654: FILE *file[MAX_FOPENS]; /* Each file ptr */
1.1.1.2 ! root 655: int socket[MAX_SOCKETS]; /* Open socket descriptors */
! 656: long socket_error; /* Last socket error */
1.1 root 657:
658: uint str_vars, /* Total number of string variables */
659: int_vars, /* Total number of integer variables */
1.1.1.2 ! root 660: files, /* Open files */
! 661: sockets, /* Open sockets */
! 662: rets, /* Returns on stack */
! 663: loops, /* Nested loop depth (loops on stack) */
! 664: cmdrets; /* Command returns on stack */
1.1 root 665:
666: long retval, /* Return value */
667: misc, /* Misc bits */
1.1.1.2 ! root 668: ftp_mode, /* FTP operation mode */
1.1 root 669: switch_val, /* Current switch value */
670: *int_var, /* Integer variables */
671: *str_var_name, /* String variable names (CRC-32) */
672: *int_var_name; /* Integer variable names (CRC-32) */
673:
674: long length; /* Length of image */
675:
676: } csi_t;
677:
678: #endif /* End of CMDSHELL.H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.