2 * Copyright (C) 2009 Martin Willi
3 * Hochschule fuer Technik Rapperswil
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17 * @defgroup command command
28 * Maximum number of options in a command (+1)
30 #define MAX_OPTIONS 14
33 * Maximum number of usage summary lines (+1)
37 typedef struct command_t command_t
;
38 typedef enum command_type_t command_type_t
;
41 * Command specification.
44 /** Function implementing the command */
45 int (*call
)(int, char*[]);
46 /** short option character */
48 /** long option string */
50 /** description of the command */
52 /** usage summary of the command */
53 char *line
[MAX_LINES
];
54 /** list of options the command accepts */
56 /** long option string of the option */
58 /** short option character of the option */
60 /** expected argument to option, no/req/opt_argument */
62 /** description of the option */
64 } options
[MAX_OPTIONS
];
68 * Type of available commands
82 * Options of the currently processing command.
84 extern struct option command_opts
[];
89 void command_register(command_type_t type
, command_t command
);
94 int command_dispatch(int argc
, char *argv
[]);
97 * Show usage information of active command.
99 int command_usage(command_type_t cmd
, char *error
);
101 #endif /* COMMAND_H_ @}*/