ckucmd.h
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:8k
源码类别:

通讯/手机编程

开发平台:

Windows_Unix

  1. /*  C K U C M D . H  --  Header file for Unix cmd package  */
  2. /*
  3.   Author: Frank da Cruz <fdc@columbia.edu>
  4.   Columbia University Kermit Project, New York City.
  5.   Copyright (C) 1985, 2000,
  6.     Trustees of Columbia University in the City of New York.
  7.     All rights reserved.  See the C-Kermit COPYING.TXT file or the
  8.     copyright text in the ckcmai.c module for disclaimer and permissions.
  9. */
  10. #ifndef CKUCMD_H
  11. #define CKUCMD_H
  12. /* Command recall */
  13. #ifdef pdp11 /* Not enough room for this */
  14. #ifndef NORECALL
  15. #define NORECALL
  16. #endif /* NORECALL */
  17. #endif /* pdp11 */
  18. #ifdef DYNAMIC /* Dynamic command buffers */
  19. /*
  20.   Use malloc() to allocate the many command-related buffers in ckucmd.c.
  21. */
  22. #ifndef DCMDBUF
  23. #ifndef NORECALL
  24. #define NORECALL
  25. #endif /* NORECALL */
  26. #endif /* DCMDBUF */
  27. #ifndef NORECALL
  28. #define CK_RECALL
  29. #else
  30. #ifdef CK_RECALL
  31. #undef CK_RECALL
  32. #endif /* CK_RECALL */
  33. #endif /* NORECALL */
  34. #else
  35. #ifndef NORECALL
  36. #define NORECALL
  37. #endif /*  NORECALL */
  38. #endif /* DYNAMIC */
  39. #ifdef NORECALL
  40. #ifdef CK_RECALL
  41. #undef CK_RECALL
  42. #endif /* CK_RECALL */
  43. #endif /* NORECALL */
  44. /* Special getchars */
  45. #ifdef VMS
  46. #ifdef getchar /* This is for VMS GCC */
  47. #undef getchar
  48. #endif /* getchar */
  49. #define getchar()   vms_getchar()
  50. int vms_getchar(void);
  51. #endif /* VMS */
  52. #ifdef aegis
  53. #undef getchar
  54. #define getchar()   coninc(0)
  55. #endif /* aegis */
  56. #ifdef AMIGA
  57. #undef getchar
  58. #define getchar() coninc(0)
  59. #endif /* AMIGA */
  60. #ifdef Plan9
  61. #undef getchar
  62. #define getchar() coninc(0)
  63. #undef putchar
  64. #define putchar(c) conoc(c)
  65. #undef printf
  66. #define printf conprint
  67. #endif /* Plan9 */
  68. /* Sizes of things */
  69. #ifndef CMDDEP
  70. #ifdef BIGBUFOK
  71. #define CMDDEP  64 /* Maximum command recursion depth */
  72. #else
  73. #define CMDDEP  20
  74. #endif /* BIGBUFOK */
  75. #endif /* CMDDEP */
  76. #define HLPLW   78 /* Width of ?-help line */
  77. #define HLPCW   19 /* Width of ?-help column */
  78. #define HLPBL  100 /* Help string buffer length */
  79. #ifdef BIGBUFOK
  80. #define ATMBL 10238 /* Command atom buffer length*/
  81. #else
  82. #ifdef NOSPL
  83. #define ATMBL  256
  84. #else
  85. #define ATMBL  1024
  86. #endif /* NOSPL */
  87. #endif /* BIGBUFOK */
  88. #ifndef CMDBL
  89. #ifdef NOSPL
  90. /* No script programming language, save some space */
  91. #define CMDBL 508 /* Command buffer length */
  92. #else
  93. #ifdef BIGBUFOK
  94. #define CMDBL 32763
  95. #else
  96. #define CMDBL 4092
  97. #endif /* OS2 */
  98. #endif /* NOSPL */
  99. #endif /* CMDBL */
  100. /* Special characters */
  101. #define RDIS 0022 /* Redisplay   (^R) */
  102. #define LDEL 0025 /* Delete line (^U) */
  103. #define WDEL 0027 /* Delete word (^W) */
  104. #ifdef CK_RECALL
  105. #define C_UP 0020 /* Go Up in recall buffer (^P) */
  106. #define C_UP2 0002 /* Alternate Go Up (^B) for VMS */
  107. #define C_DN 0016 /* Go Down in recall buffer (^N) */
  108. #endif /* CK_RECALL */
  109. /* Keyword flags (bits, powers of 2) */
  110. #define CM_INV 1 /* Invisible keyword */
  111. #define CM_ABR 2 /* Abbreviation for another keyword */
  112. #define CM_HLP 4 /* Help-only keyword */
  113. #define CM_ARG 8 /* An argument is required */
  114. #define CM_NOR 16 /* No recall for this command */
  115. #define CM_PRE 32 /* Long-form cmdline arg for prescan */
  116. /*
  117.   A long-form command line option is a keyword using the regular struct keytab
  118.   and lookup mechanisms.  Flags that make sense in this context are CM_ARG,
  119.   indicating this option requires an argument (operand), and CM_PRE, which
  120.   means this option must be processed before the initialization file.  The
  121.   absence of CM_PRE means the option is to be processed after the
  122.   initialization file in the normal manner.
  123. */
  124. /* Token flags (numbers) */
  125. #define CMT_COM 0 /* Comment (; or #) */
  126. #define CMT_SHE 1 /* Shell escape (!) */
  127. #define CMT_LBL 2 /* Label (:) */
  128. #define CMT_FIL 3 /* Indirect filespec (@) */
  129. /* Path separator for path searches */
  130. #ifdef OS2
  131. #define PATHSEP ';'
  132. #else
  133. #ifdef UNIX
  134. #define PATHSEP ':'
  135. #else
  136. #define PATHSEP ','
  137. #endif /* UNIX */
  138. #endif /* OS2 */
  139. #ifndef CK_KEYTAB
  140. #define CK_KEYTAB
  141. /* Keyword Table Template perhaps already defined in ckcdeb.h */
  142. struct keytab { /* Keyword table */
  143.     char *kwd; /* Pointer to keyword string */
  144.     int kwval; /* Associated value */
  145.     int flgs; /* Flags (as defined above) */
  146. };
  147. #endif /* CK_KEYTAB */
  148. /* String preprocessing function */
  149. #ifdef CK_ANSIC /* ANSI C */
  150. #ifdef M_SYSV /* SCO Microsoft C wants no args */
  151. typedef int (*xx_strp)();
  152. #else
  153. typedef int (*xx_strp)(char *, char **, int *);
  154. #endif /* M_SYSV */
  155. #else /* Not ANSI C */
  156. typedef int (*xx_strp)();
  157. #endif /* CK_ANSIC */
  158. /* FLDDB struct */
  159. typedef struct FDB {
  160.     int fcode; /* Function code */
  161.     char * hlpmsg; /* Help message */
  162.     char * dflt; /* Default */
  163.     char * sdata; /* Additional string data */
  164.     int ndata1; /* Additional numeric data 1 */
  165.     int ndata2; /* Additional numeric data 2 */
  166.     xx_strp spf; /* String processing function */
  167.     struct keytab * kwdtbl; /* Keyword table */
  168.     struct FDB * nxtfdb; /* Pointer to next alternative */
  169. } fdb;
  170. typedef struct OFDB {
  171.     struct FDB * fdbaddr; /* Address of succeeding FDB struct */
  172.     int fcode; /* Function code */
  173.     char * sresult; /* String result */
  174.     int nresult; /* Numeric result */
  175.     int kflags; /* Keyword flags if any */
  176. } ofdb;
  177. #ifndef CKUCMD_C
  178. extern struct OFDB cmresult;
  179. #endif /* CKUCMD_C */
  180. /* Codes for primary parsing function  */
  181. #define _CMNUM 0 /* Number */
  182. #define _CMOFI 1 /* Output file */
  183. #define _CMIFI 2 /* Input file */
  184. #define _CMFLD 3 /* Arbitrary field */
  185. #define _CMTXT 4 /* Text string */
  186. #define _CMKEY 5 /* Keyword */
  187. #define _CMCFM 6 /* Confirmation */
  188. #define _CMDAT 7 /* Date/time */
  189. /* Function prototypes */
  190. _PROTOTYP( int xxesc, (char **) );
  191. _PROTOTYP( int cmrini, (int) );
  192. _PROTOTYP( VOID cmsetp, (char *) );
  193. _PROTOTYP( VOID cmsavp, (char [], int) );
  194. _PROTOTYP( VOID prompt, (xx_strp) );
  195. _PROTOTYP( VOID pushcmd, (char *) );
  196. _PROTOTYP( VOID cmres, (void) );
  197. _PROTOTYP( VOID cmini, (int) );
  198. _PROTOTYP( int cmgbrk, (void) );
  199. _PROTOTYP( int cmgkwflgs, (void) );
  200. _PROTOTYP( int cmpush, (void) );
  201. _PROTOTYP( int cmpop, (void) );
  202. _PROTOTYP( VOID untab, (char *) );
  203. _PROTOTYP( int cmnum, (char *, char *, int, int *, xx_strp ) );
  204. _PROTOTYP( int cmofi, (char *, char *, char **, xx_strp ) );
  205. _PROTOTYP( int cmifi, (char *, char *, char **, int *, xx_strp ) );
  206. _PROTOTYP( int cmiofi, (char *, char *, char **, int *, xx_strp ) );
  207. _PROTOTYP( int cmifip,(char *, char *, char **, int *, int, char *, xx_strp ));
  208. _PROTOTYP( int cmifi2,(char *,char *,char **,int *,int,char *,xx_strp,int ));
  209. _PROTOTYP( int cmdir, (char *, char *, char **, xx_strp ) );
  210. _PROTOTYP( int cmdirp, (char *, char *, char **, char *, xx_strp ) );
  211. _PROTOTYP( int cmfld, (char *, char *, char **, xx_strp ) );
  212. _PROTOTYP( int cmtxt, (char *, char *, char **, xx_strp ) );
  213. _PROTOTYP( int cmkey,  (struct keytab [], int, char *, char *, xx_strp) );
  214. _PROTOTYP( int cmkeyx, (struct keytab [], int, char *, char *, xx_strp) );
  215. _PROTOTYP( int cmkey2,(struct keytab [],int,char *,char *,char *,xx_strp,int));
  216. _PROTOTYP( int cmswi,  (struct keytab [], int, char *, char *, xx_strp) );
  217. _PROTOTYP( int cmdate,(char *, char *, char **, int, xx_strp) );
  218. _PROTOTYP( char * cmpeek, (void) );
  219. _PROTOTYP( int cmfdb, (struct FDB *) );
  220. _PROTOTYP( VOID cmfdbi, (struct FDB *,
  221. int, char *, char *, char *, int, int, xx_strp,
  222. struct keytab *, struct FDB *) );
  223. _PROTOTYP( int chktok, (char *) );
  224. _PROTOTYP( int cmcfm, (void) );
  225. _PROTOTYP( int lookup, (struct keytab [], char *, int, int *) );
  226. _PROTOTYP( VOID kwdhelp, (struct keytab[],int,char *,char *,char *,int,int) );
  227. _PROTOTYP( int ungword, (void) );
  228. _PROTOTYP( VOID unungw, (void) );
  229. _PROTOTYP( int cmdsquo, (int) );
  230. _PROTOTYP( int cmdgquo, (void) );
  231. _PROTOTYP( char * ckcvtdate, (char *, int) );
  232. _PROTOTYP( int cmdgetc, (int));
  233. #ifdef CK_RECALL
  234. _PROTOTYP( char * cmgetcmd, (char *) );
  235. _PROTOTYP( VOID addcmd, (char *) );
  236. _PROTOTYP( VOID cmaddnext, () );
  237. _PROTOTYP( int cmcvtdate, (char *, int) );
  238. _PROTOTYP( int filhelp, (int, char *, char *, int, int) );
  239. #endif /* CK_RECALL */
  240. #ifdef DCMDBUF
  241. _PROTOTYP( int cmsetup, (void) );
  242. #endif /* DCMDBUF */
  243. #endif /* CKUCMD_H */
  244. /* End of ckucmd.h */