Annotation of embedaddon/strongswan/src/pki/command.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2009 Martin Willi
                      3:  * HSR Hochschule fuer Technik Rapperswil
                      4:  *
                      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>.
                      9:  *
                     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
                     13:  * for more details.
                     14:  */
                     15: 
                     16: /**
                     17:  * @defgroup command command
                     18:  * @{ @ingroup pki
                     19:  */
                     20: 
                     21: #ifndef COMMAND_H_
                     22: #define COMMAND_H_
                     23: 
                     24: /**
                     25:  * Maximum number of commands (+1).
                     26:  */
                     27: #define MAX_COMMANDS 14
                     28: 
                     29: /**
                     30:  * Maximum number of options in a command (+3)
                     31:  */
                     32: #define MAX_OPTIONS 36
                     33: 
                     34: /**
                     35:  * Maximum number of usage summary lines (+1)
                     36:  */
                     37: #define MAX_LINES 13
                     38: 
                     39: typedef struct command_t command_t;
                     40: typedef struct command_option_t command_option_t;
                     41: typedef enum command_type_t command_type_t;
                     42: 
                     43: /**
                     44:  * Option specification
                     45:  */
                     46: struct command_option_t {
                     47:        /** long option string of the option */
                     48:        char *name;
                     49:        /** short option character of the option */
                     50:        char op;
                     51:        /** expected argument to option, no/req/opt_argument */
                     52:        int arg;
                     53:        /** description of the option */
                     54:        char *desc;
                     55: };
                     56: 
                     57: /**
                     58:  * Command specification.
                     59:  */
                     60: struct command_t {
                     61:        /** Function implementing the command */
                     62:        int (*call)();
                     63:        /** short option character */
                     64:        char op;
                     65:        /** long option string */
                     66:        char *cmd;
                     67:        /** description of the command */
                     68:        char *description;
                     69:        /** usage summary of the command */
                     70:        char *line[MAX_LINES];
                     71:        /** list of options the command accepts */
                     72:        command_option_t options[MAX_OPTIONS];
                     73: };
                     74: 
                     75: /**
                     76:  * Get the next option, as with getopt.
                     77:  */
                     78: int command_getopt(char **arg);
                     79: 
                     80: /**
                     81:  * Register a command.
                     82:  */
                     83: void command_register(command_t command);
                     84: 
                     85: /**
                     86:  * Dispatch commands.
                     87:  */
                     88: int command_dispatch(int argc, char *argv[]);
                     89: 
                     90: /**
                     91:  * Show usage information of active command.
                     92:  */
                     93: int command_usage(char *error);
                     94: 
                     95: #endif /** COMMAND_H_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>