2 * Copyright 2000, International Business Machines Corporation and others.
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
11 #define __CMD_INCL__ 1
14 #define CMD_FLAG 1 /* no parms */
15 #define CMD_SINGLE 2 /* one parm */
16 #define CMD_LIST 3 /* two parms */
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 */
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 */
26 /* parse items are here */
28 struct cmd_item *next;
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 struct cmd_item *aliases; /* optional aliases */
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
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) (struct cmd_syndesc * ts, void *arock);
57 int nParms; /* number of parms */
58 afs_int32 flags; /* random flags */
59 struct cmd_parmdesc parms[CMD_MAXPARMS]; /* parms themselves */
62 extern struct cmd_syndesc *cmd_CreateSyntax(char *namep,
63 int (*aprocp) (struct cmd_syndesc
65 void *rockp, char *helpp);
67 cmd_SetBeforeProc(int (*aproc) (struct cmd_syndesc * ts, void *beforeRock),
70 cmd_SetAfterProc(int (*aproc) (struct cmd_syndesc * ts, void *afterRock),
72 extern int cmd_CreateAlias(struct cmd_syndesc *as, char *aname);
73 extern int cmd_Seek(struct cmd_syndesc *as, int apos);
74 extern int cmd_AddParm(struct cmd_syndesc *as, char *aname, int atype,
75 afs_int32 aflags, char *ahelp);
76 extern int cmd_AddParmAtOffset(struct cmd_syndesc *as, char *name, int atype,
77 afs_int32 aflags, char *ahelp, int ref);
78 extern int cmd_AddParmAlias(struct cmd_syndesc *as, int pos, char *alias);
79 extern int cmd_Dispatch(int argc, char **argv);
80 extern int cmd_FreeArgv(char **argv);
81 extern int cmd_ParseLine(char *aline, char **argv, afs_int32 * an,
83 extern int cmd_IsAdministratorCommand(struct cmd_syndesc *as);
84 extern void cmd_DisablePositionalCommands(void);
85 extern void cmd_DisableAbbreviations(void);
86 extern void PrintSyntax(struct cmd_syndesc *as);
87 extern void PrintFlagHelp(struct cmd_syndesc *as);
89 extern int cmd_Parse(int argc, char **argv, struct cmd_syndesc **outsyntax);
90 extern void cmd_FreeOptions(struct cmd_syndesc **ts);
91 extern int cmd_OptionAsInt(struct cmd_syndesc *syn, int pos, int *value);
92 extern int cmd_OptionAsString(struct cmd_syndesc *syn, int pos, char **value);
93 extern int cmd_OptionAsList(struct cmd_syndesc *syn, int pos, struct cmd_item **);
94 extern int cmd_OptionAsFlag(struct cmd_syndesc *syn, int pos, int *value);
95 extern int cmd_OptionPresent(struct cmd_syndesc *syn, int pos);
97 #endif /* __CMD_INCL__ */