|
|
1.1 root 1: /* cmdshell.h */
2:
3: /* Synchronet command shell/module constants and structure definitions */
4:
5: /* $Id: cmdshell.h,v 1.7 2003/10/09 17:27:05 deuce 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_INCHAR /* Was RIOSYNC (now deprecated) 02/18/01 */
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_MULTINODE_CHAT
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
144: ,CS_COMPARE_WORD /* 0x5a */
145: ,CS_EXEC
146: ,CS_EXEC_INT
147: ,CS_EXEC_BIN
148: ,CS_EXEC_XTRN
149: ,CS_GETCMD
150: ,CS_LOG /* 0x60 */
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
160: ,CS_READ_SIF /* 0x6a */
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
177: ,CS_USE_INT_VAR /* 0x7a */
178:
179: /* Network (TCP/IP) Functions */
180:
181: ,CS_NET_FUNCTION=0x7d
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
209: ,CS_MSG_GROUP_UP /* 0x90 */
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
225: ,CS_MSG_BROWSE_SCAN /* 0xA0 */
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
241: ,CS_FILE_SHOW_DIRECTORIES /* 0xB0 */
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
257: ,CS_FILE_REMOVE /* 0xC0 */
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
271: ,CS_FILE_SEND /* Like file_get, but no password needed */
272: ,CS_FILE_BATCH_ADD_LIST
273: ,CS_FILE_RECEIVE /* 0xD0 */
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
289: ,CS_USERLIST_DIR /* 0xE0 */
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
305: ,CS_LIST_TEXT_FILE /* 0xF0 */
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
320: ,CS_SPY /* 0xFF */
321:
322: };
323:
324: /* Variable instructions (sub-op-code) */
325:
326: /* Preceeded by CS_VAR_INSTRUCTION */
327:
328: enum {
329:
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 */
334: ,VAR_RESERVED_3
335: ,VAR_RESERVED_2
336: ,VAR_RESERVED_1
337: ,DEFINE_STR_VAR /* Define Local Variable */
338: ,DEFINE_INT_VAR
339: ,VAR_RESERVED_A4
340: ,VAR_RESERVED_A3
341: ,VAR_RESERVED_A2
342: ,VAR_RESERVED_A1
343: ,DEFINE_GLOBAL_STR_VAR /* Define Global Variable */
344: ,DEFINE_GLOBAL_INT_VAR
345: ,VAR_RESERVED_B4
346: ,VAR_RESERVED_B3 /* 0x10 */
347: ,VAR_RESERVED_B2
348: ,VAR_RESERVED_B1
349: ,SET_STR_VAR /* Set string variable */
350: ,SET_INT_VAR /* Set integer variable */
351: ,VAR_RESERVED_C4
352: ,VAR_RESERVED_C3
353: ,VAR_RESERVED_C2
354: ,VAR_RESERVED_C1
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) */
359: ,VAR_RESERVED_D2
360: ,VAR_RESERVED_D1
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 */
364: ,VAR_RESERVED_E2
365: ,VAR_RESERVED_E1
366: ,COPY_VAR /* Copy from one variable to another */
367: ,VAR_RESERVED_F4
368: ,VAR_RESERVED_F3
369: ,VAR_RESERVED_F2
370: ,VAR_RESERVED_F1
371: ,SWAP_VARS /* Swap two variables */
372: ,VAR_RESERVED_G4
373: ,VAR_RESERVED_G3
374: ,VAR_RESERVED_G2
375: ,VAR_RESERVED_G1
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) */
387: ,VAR_RESERVED_I4
388: ,VAR_RESERVED_I3
389: ,VAR_RESERVED_I2
390: ,VAR_RESERVED_I1
391: ,SUB_INT_VAR /* Subtract from int variable (static) */
392: ,SUB_INT_VARS /* Subtract from int variable (dynamic) */
393: ,VAR_RESERVED_J4
394: ,VAR_RESERVED_J3 /* 0x40 */
395: ,VAR_RESERVED_J2
396: ,VAR_RESERVED_J1
397: ,MUL_INT_VAR /* Multiply int variable (static) */
398: ,MUL_INT_VARS /* Multiply int variable (dynamic) */
399: ,VAR_RESERVED_K4
400: ,VAR_RESERVED_K3
401: ,VAR_RESERVED_K2
402: ,VAR_RESERVED_K1
403: ,DIV_INT_VAR /* Divide int variable (static) */
404: ,DIV_INT_VARS /* Divide int variable (dynamic) */
405: ,MOD_INT_VAR
406: ,MOD_INT_VARS
407: ,VAR_RESERVED_L2
408: ,VAR_RESERVED_L1
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
413: ,VAR_RESERVED_M2
414: ,VAR_RESERVED_M1
415: ,OR_INT_VAR /* Bit-wise OR int variable (static) */
416: ,OR_INT_VARS /* Bit-wise OR int variable (dynamic) */
417: ,VAR_RESERVED_N4
418: ,VAR_RESERVED_N3
419: ,VAR_RESERVED_N2
420: ,VAR_RESERVED_N1
421: ,NOT_INT_VAR /* Bit-wise NOT int variable (static) */
422: ,NOT_INT_VARS /* Bit-wise NOT int variable (dynamic) */
423: ,VAR_RESERVED_O4
424: ,VAR_RESERVED_O3
425: ,VAR_RESERVED_O2
426: ,VAR_RESERVED_O1 /* 0x60 */
427: ,XOR_INT_VAR /* XOR int variable (static) */
428: ,XOR_INT_VARS /* XOR int variable (dynamic) */
429: ,VAR_RESERVED_P4
430: ,VAR_RESERVED_P3
431: ,VAR_RESERVED_P2
432: ,VAR_RESERVED_P1
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 */
449: ,CHKFILE_VAR
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) */
467: };
468:
469: /* Preceeded by CS_STR_FUNCTION */
470:
471: enum { /* More string arg functions */
472: CS_LOGIN /* Login/password prompt */
473: ,CS_LOAD_TEXT /* Load alternative TEXT.DAT */
474: };
475:
476: /* Preceeded by CS_ONE_MORE_BYTE */
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 */
488: };
489:
490: /* Preceeded by CS_TWO_MORE_BYTES */
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
531: };
532:
533: /* Preceeded by CS_FIO_FUNCTION */
534: enum {
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 */
559: ,FIO_UNUSED8
560: ,FIO_UNUSED7
561: ,FIO_UNUSED6
562: ,FIO_UNUSED5
563: ,FIO_UNUSED4
564: ,FIO_UNUSED3
565: ,FIO_UNUSED2
566: ,FIO_UNUSED1
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 */
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:
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:
623: #define MAX_RETS 50 /* maximum nested call depth */
624: #define MAX_CMDRETS 50 /* maximum nested cmd depth */
625: #define MAX_LOOPDEPTH 50 /* maximum nested loop depth */
626: #define MAX_STRVARS 26
627: #define MAX_INTVARS 26
628: #define MAX_STRLEN 81
629: #define MAX_FOPENS 10 /* maximum open files */
630: #define MAX_SOCKETS 10 /* maximum open sockets */
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 */
650: *loop_home[MAX_LOOPDEPTH]; /* Loop home address stack */
651:
652: int logic; /* Current logic */
653:
654: FILE *file[MAX_FOPENS]; /* Each file ptr */
655: int socket[MAX_SOCKETS]; /* Open socket descriptors */
656: long socket_error; /* Last socket error */
657:
658: uint str_vars, /* Total number of string variables */
659: int_vars, /* Total number of integer variables */
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 */
665:
666: long retval, /* Return value */
667: misc, /* Misc bits */
668: ftp_mode, /* FTP operation mode */
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.