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