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