afsconfig-and-rcsid-all-around-20010705
[openafs.git] / src / cmd / cmd.p.h
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #ifndef __CMD_INCL__
11 #define __CMD_INCL__        1
12
13 /* parmdesc types */
14 #define CMD_FLAG        1       /* no parms */
15 #define CMD_SINGLE      2       /* one parm */
16 #define CMD_LIST        3       /* two parms */
17
18 /* syndesc flags */
19 #define CMD_ALIAS       1       /* this is an alias */
20 #define CMD_ADMIN       2       /* admin. command, show only with -admin */
21 #define CMD_HIDDEN      4       /* A hidden command - similar to CMD_HIDE */
22
23 #define CMD_HELPPARM    (CMD_MAXPARMS-1)/* last one is used by -help switch */
24 #define CMD_MAXPARMS    64      /* max number of parm types to a cmd line */
25
26 /* parse items are here */
27 struct cmd_item {
28     struct cmd_item *next;
29     char *data;
30 };
31
32 struct cmd_parmdesc {
33     char *name;                 /* switch name */
34     int type;                   /* flag, single or list */
35     struct cmd_item *items;     /* list of cmd items */
36     afs_int32 flags;                    /* flags */
37     char *help;                 /* optional help descr */
38 };
39
40 /* cmd_parmdesc flags */
41 #define CMD_REQUIRED        0
42 #define CMD_OPTIONAL        1
43 #define CMD_EXPANDS         2   /* if list, try to eat tokens through eoline, instead of just 1 */
44 #define CMD_HIDE            4   /* A hidden option */
45 #define CMD_PROCESSED       8
46
47 struct cmd_syndesc {
48     struct cmd_syndesc *next;   /* next one in system list */
49     struct cmd_syndesc *nextAlias;  /* next in alias chain */
50     struct cmd_syndesc *aliasOf;    /* back ptr for aliases */
51     char *name;             /* subcommand name */
52     char *a0name;           /* command name from argv[0] */
53     char *help;             /* help description */
54     int (*proc)();
55     char *rock;
56     int nParms;             /* number of parms */
57     afs_int32 flags;                /* random flags */
58     struct cmd_parmdesc parms[CMD_MAXPARMS];    /* parms themselves */
59 };
60
61 extern struct cmd_syndesc *cmd_CreateSyntax(
62   char *namep,
63   int (*aprocp)(),
64   char *rockp,
65   char *helpp
66 );
67
68 extern int cmd_SetBeforeProc(
69   int (*aproc)(),
70   char *arock
71 );
72
73 extern int cmd_SetAfterProc(
74   int (*aproc)(),
75   char *arock
76 );
77
78 extern int cmd_CreateAlias(
79   struct cmd_syndesc *as,
80   char *aname
81 );
82
83 extern int cmd_Seek(
84   struct cmd_syndesc *as,
85   int apos
86 );
87
88 extern int cmd_AddParm(
89   struct cmd_syndesc *as,
90   char *aname,
91   int atype,
92   afs_int32 aflags,
93   char *ahelp
94 );
95
96 extern int cmd_Dispatch(
97   int argc,
98   char **argv
99 );
100
101 extern int cmd_FreeArgv(
102   char **argv
103 );
104
105 extern int cmd_ParseLine(
106   char *aline,
107   char **argv,
108   afs_int32 *an,
109   afs_int32 amaxn
110 );
111
112 #endif /* __CMD_INCL__ */