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