unit-tests: Fix "using integer constants in boolean context" warning
[strongswan.git] / src / pki / command.h
index 852a84d..449252e 100644 (file)
 #ifndef COMMAND_H_
 #define COMMAND_H_
 
-#define _GNU_SOURCE
-#include <getopt.h>
+/**
+ * Maximum number of commands (+1).
+ */
+#define MAX_COMMANDS 14
 
 /**
- * Maximum number of options in a command (+1)
+ * Maximum number of options in a command (+3)
  */
-#define MAX_OPTIONS 14
+#define MAX_OPTIONS 36
 
 /**
  * Maximum number of usage summary lines (+1)
  */
-#define MAX_LINES 8
+#define MAX_LINES 11
 
 typedef struct command_t command_t;
+typedef struct command_option_t command_option_t;
 typedef enum command_type_t command_type_t;
 
 /**
+ * Option specification
+ */
+struct command_option_t {
+       /** long option string of the option */
+       char *name;
+       /** short option character of the option */
+       char op;
+       /** expected argument to option, no/req/opt_argument */
+       int arg;
+       /** description of the option */
+       char *desc;
+};
+
+/**
  * Command specification.
  */
 struct command_t {
        /** Function implementing the command */
-       int (*call)(int, char*[]);
+       int (*call)();
        /** short option character */
        char op;
        /** long option string */
@@ -52,41 +69,18 @@ struct command_t {
        /** usage summary of the command */
        char *line[MAX_LINES];
        /** list of options the command accepts */
-       struct {
-               /** long option string of the option */
-               char *name;
-               /** short option character of the option */
-               char op;
-               /** expected argument to option, no/req/opt_argument */
-               int arg;
-               /** description of the option */
-               char *desc;
-       } options[MAX_OPTIONS];
-};
-
-/**
- * Type of available commands
- */
-enum command_type_t {
-       CMD_HELP = 0,
-       CMD_GEN,
-       CMD_PUB,
-       CMD_KEYID,
-       CMD_SELF,
-       CMD_ISSUE,
-       CMD_VERIFY,
-       CMD_MAX
+       command_option_t options[MAX_OPTIONS];
 };
 
 /**
- * Options of the currently processing command.
+ * Get the next option, as with getopt.
  */
-extern struct option command_opts[];
+int command_getopt(char **arg);
 
 /**
  * Register a command.
  */
-void command_register(command_type_t type, command_t command);
+void command_register(command_t command);
 
 /**
  * Dispatch commands.
@@ -96,6 +90,6 @@ int command_dispatch(int argc, char *argv[]);
 /**
  * Show usage information of active command.
  */
-int command_usage(command_type_t cmd, char *error);
+int command_usage(char *error);
 
-#endif /* COMMAND_H_ @}*/
+#endif /** COMMAND_H_ @}*/