+++ /dev/null
-/*
-
- silcgetopt.h
-
- Author: Pekka Riikonen <priikone@silcnet.org>
-
- Copyright (C) 2007 Pekka Riikonen
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 of the License.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
-*/
-
-#ifndef SILCGETOPT_H
-#define SILCGETOPT_H
-
-/****s* silcutil/SilcGetOptAPI/SilcGetOpt
- *
- * NAME
- *
- * typedef struct SilcGetOptObject { ... } *SilcGetOpt, SilcGetOptStruct;
- *
- * DESCRIPTION
- *
- * Command line option parsers structure given to silc_getopt as argument.
- * It contains the current parsed command line option data.
- *
- * SOURCE
- */
-typedef struct SilcGetOptObject {
- int opt_index; /* Current option index in argv[] array */
- int opt_option; /* Current option character */
- char *opt_arg; /* Current parsed option argument */
- SilcBool opt_error; /* Set this to TRUE to make silc_getopt print
- errors or FALSE to suppress them. */
-
- SilcUInt16 opt_sp; /* Internal parser index */
-} *SilcGetOpt, SilcGetOptStruct;
-/***/
-
-/****d* silcutil/SilcGetOptAPI/SILC_GETOPT_INIT
- *
- * NAME
- *
- * #define SILC_GETOPT_INIT ...
- *
- * DESCRIPTION
- *
- * Macro used to initialize SilcGetOptStruct before calling silc_getopt.
- *
- * EXAMPLE
- *
- * SilcGetOptStruct op = SILC_GETOPT_INIT;
- *
- ***/
-#define SILC_GETOPT_INIT { 1, 0, NULL, TRUE, 1 }
-
-/****f* silcutil/SilcGetOptAPI/silc_getopt
- *
- * SYNOPSIS
- *
- * int silc_getopt(int argc, char **argv, const char *optstring,
- * SilcGetOpt op)
- *
- * DESCRIPTION
- *
- * Parses comand line options. This function is equivalent to getopt(3).
- * Returns the current parsed option, '?' if option was unknown, ':' if
- * required argument was missing or -1 after all options have been parsed.
- * If options require arguments they are available from the `op' structure,
- * to where the options are parsed. The parsing is stopped immediately
- * when first non-option character, which is not an argument for an option,
- * is encountered.
- *
- * The `optstring' contains the supported option characters. One character
- * per option is required. If colon (':') follows option character the
- * option requires an argument. If two colons ('::') follows option
- * character the argument is optional. In that case the argument must
- * follow the option in command line, for example -oarg, instead of -o arg.
- *
- * EXAMPLE
- *
- * int main(int argc, char **argv)
- * {
- * SilcGetOptStruct op = SILC_GETOPT_INIT;
- *
- * while ((option = silc_getopt(argc, argv, "ab:t::", &op)) != -1) {
- * switch (option) {
- * case 'a':
- * ...
- * break;
- * case 'b':
- * argument = silc_strdup(op.opt_arg);
- * break;
- * case 't':
- * if (op.opt_arg)
- * optional_argument = silc_strdup(op.opt_arg);
- * break;
- * default:
- * exit(1);
- * break;
- * }
- * }
- * }
- *
- ***/
-int silc_getopt(int argc, char **argv, const char *optstring, SilcGetOpt op);
-
-#endif /* SILCGETOPT_H */