Initial IBM OpenAFS 1.0 tree
[openafs.git] / src / cmd / cmd.p.h
1
2 /*
3  * (C) COPYRIGHT IBM CORPORATION 1988, 1989
4  * LICENSED MATERIALS - PROPERTY OF IBM
5  */
6
7 #ifndef __CMD_INCL__
8 #define __CMD_INCL__        1
9 #include <afs/param.h>
10
11 /* parmdesc types */
12 #define CMD_FLAG        1       /* no parms */
13 #define CMD_SINGLE      2       /* one parm */
14 #define CMD_LIST        3       /* two parms */
15
16 /* syndesc flags */
17 #define CMD_ALIAS       1       /* this is an alias */
18 #define CMD_HIDDEN      4       /* A hidden command - similar to CMD_HIDE */
19
20 #define CMD_HELPPARM    (CMD_MAXPARMS-1)/* last one is used by -help switch */
21 #define CMD_MAXPARMS    64      /* max number of parm types to a cmd line */
22
23 /* parse items are here */
24 struct cmd_item {
25     struct cmd_item *next;
26     char *data;
27 };
28
29 struct cmd_parmdesc {
30     char *name;                 /* switch name */
31     int type;                   /* flag, single or list */
32     struct cmd_item *items;     /* list of cmd items */
33     afs_int32 flags;                    /* flags */
34     char *help;                 /* optional help descr */
35 };
36
37 /* cmd_parmdesc flags */
38 #define CMD_REQUIRED        0
39 #define CMD_OPTIONAL        1
40 #define CMD_EXPANDS         2   /* if list, try to eat tokens through eoline, instead of just 1 */
41 #define CMD_HIDE            4   /* A hidden option */
42 #define CMD_PROCESSED       8
43
44 struct cmd_syndesc {
45     struct cmd_syndesc *next;   /* next one in system list */
46     struct cmd_syndesc *nextAlias;  /* next in alias chain */
47     struct cmd_syndesc *aliasOf;    /* back ptr for aliases */
48     char *name;             /* subcommand name */
49     char *a0name;           /* command name from argv[0] */
50     char *help;             /* help description */
51     int (*proc)();
52     char *rock;
53     int nParms;             /* number of parms */
54     afs_int32 flags;                /* random flags */
55     struct cmd_parmdesc parms[CMD_MAXPARMS];    /* parms themselves */
56 };
57
58 extern struct cmd_syndesc *cmd_CreateSyntax(
59   char *namep,
60   int (*aprocp)(),
61   char *rockp,
62   char *helpp
63 );
64
65 extern cmd_SetBeforeProc(
66   int (*aproc)(),
67   char *arock
68 );
69
70 extern cmd_SetAfterProc(
71   int (*aproc)(),
72   char *arock
73 );
74
75 extern int cmd_CreateAlias(
76   struct cmd_syndesc *as,
77   char *aname
78 );
79
80 extern int cmd_Seek(
81   struct cmd_syndesc *as,
82   int apos
83 );
84
85 extern int cmd_AddParm(
86   struct cmd_syndesc *as,
87   char *aname,
88   int atype,
89   afs_int32 aflags,
90   char *ahelp
91 );
92
93 extern cmd_Dispatch(
94   int argc,
95   char **argv
96 );
97
98 extern cmd_FreeArgv(
99   char **argv
100 );
101
102 extern cmd_ParseLine(
103   char *aline,
104   char **argv,
105   afs_int32 *an,
106   afs_int32 amaxn
107 );
108
109 #endif /* __CMD_INCL__ */