ossp-pkg/popt/popt.h
/*
* Option Parsing Library (POPT)
* Copyright (c) 1998-2002 Red Hat, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Except as contained in this notice, the name of the X Consortium shall not be
* used in advertising or otherwise to promote the sale, use or other dealings
* in this Software without prior written authorization from the X Consortium.
*
* NOTICE:
* This is an automatically generated, stripped down version of the
* POPT 1.7 library from Red Hat, Inc. This version is still
* distributed under above Open Source license, but Red Hat is no longer
* responsible for this version. Contact The OSSP Project instead.
*/
#ifndef __POPT_H__
#define __POPT_H__
#include <stdio.h>
#define POPT_OPTION_DEPTH 10
#define POPT_ARG_NONE 0
#define POPT_ARG_STRING 1
#define POPT_ARG_INT 2
#define POPT_ARG_LONG 3
#define POPT_ARG_INCLUDE_TABLE 4
#define POPT_ARG_CALLBACK 5
#define POPT_ARG_INTL_DOMAIN 6
#define POPT_ARG_VAL 7
#define POPT_ARG_FLOAT 8
#define POPT_ARG_DOUBLE 9
#define POPT_ARG_MASK 0x0000FFFF
#define POPT_ARGFLAG_ONEDASH 0x80000000
#define POPT_ARGFLAG_DOC_HIDDEN 0x40000000
#define POPT_ARGFLAG_STRIP 0x20000000
#define POPT_ARGFLAG_OPTIONAL 0x10000000
#define POPT_ARGFLAG_OR 0x08000000
#define POPT_ARGFLAG_NOR 0x09000000
#define POPT_ARGFLAG_AND 0x04000000
#define POPT_ARGFLAG_NAND 0x05000000
#define POPT_ARGFLAG_XOR 0x02000000
#define POPT_ARGFLAG_NOT 0x01000000
#define POPT_ARGFLAG_LOGICALOPS \
(POPT_ARGFLAG_OR|POPT_ARGFLAG_AND|POPT_ARGFLAG_XOR)
#define POPT_BIT_SET (POPT_ARG_VAL|POPT_ARGFLAG_OR)
#define POPT_BIT_CLR (POPT_ARG_VAL|POPT_ARGFLAG_NAND)
#define POPT_ARGFLAG_SHOW_DEFAULT 0x00800000
#define POPT_CBFLAG_PRE 0x80000000
#define POPT_CBFLAG_POST 0x40000000
#define POPT_CBFLAG_INC_DATA 0x20000000
#define POPT_CBFLAG_SKIPOPTION 0x10000000
#define POPT_CBFLAG_CONTINUE 0x08000000
#define POPT_ERROR_NOARG -10
#define POPT_ERROR_BADOPT -11
#define POPT_ERROR_OPTSTOODEEP -13
#define POPT_ERROR_BADQUOTE -15
#define POPT_ERROR_ERRNO -16
#define POPT_ERROR_BADNUMBER -17
#define POPT_ERROR_OVERFLOW -18
#define POPT_ERROR_BADOPERATION -19
#define POPT_ERROR_NULLARG -20
#define POPT_ERROR_MALLOC -21
#define POPT_BADOPTION_NOALIAS (1 << 0)
#define POPT_CONTEXT_NO_EXEC (1 << 0)
#define POPT_CONTEXT_KEEP_FIRST (1 << 1)
#define POPT_CONTEXT_POSIXMEHARDER (1 << 2)
#define POPT_CONTEXT_ARG_OPTS (1 << 4)
struct popt_option {
const char *longName;
char shortName;
int argInfo;
void *arg;
int val;
const char *descrip;
const char *argDescrip;
};
struct popt_alias {
const char *longName;
char shortName;
int argc;
const char **argv;
};
typedef struct popt_item_s {
struct popt_option option;
int argc;
const char **argv;
} *popt_item;
extern struct popt_option popt_aliasOptions[];
#define POPT_AUTOALIAS { NULL, '\0', POPT_ARG_INCLUDE_TABLE, popt_aliasOptions, \
0, "Options implemented via popt alias/exec:", NULL },
extern struct popt_option popt_helpoptions[];
#define POPT_AUTOHELP { NULL, '\0', POPT_ARG_INCLUDE_TABLE, popt_helpoptions, \
0, "Help options:", NULL },
#define POPT_TABLEEND { NULL, '\0', 0, 0, 0, NULL, NULL }
typedef struct popt_context_s *popt_context;
#ifndef __cplusplus
typedef struct popt_option *popt_option;
#endif
enum popt_callbackreason {
POPT_CALLBACK_REASON_PRE = 0,
POPT_CALLBACK_REASON_POST = 1,
POPT_CALLBACK_REASON_OPTION = 2
};
#ifdef __cplusplus
extern "C" {
#endif
typedef void (*popt_callbacktype) (popt_context con,
enum popt_callbackreason reason,
const struct popt_option * opt,
const char *arg, const void *data);
popt_context popt_getcontext(const char *name,
int argc, const char **argv,
const struct popt_option *options,
int flags);
void popt_resetcontext(popt_context con);
int popt_getnextopt(popt_context con)
;
const char *popt_getoptarg(popt_context con);
const char *popt_getarg(popt_context con);
const char *popt_peekarg(popt_context con);
const char **popt_getargs(popt_context con);
const char *popt_badoption(popt_context con, int flags);
popt_context popt_freecontext(popt_context con);
int popt_stuffargs(popt_context con, const char **argv);
int popt_addalias(popt_context con, struct popt_alias alias, int flags);
int popt_additem(popt_context con, popt_item newItem, int flags);
int popt_readconfigfile(popt_context con, const char *fn)
;
int popt_readdefaultconfig(popt_context con, int useEnv)
;
int popt_dupargv(int argc, const char **argv,
int *argcPtr, const char ***argvPtr);
int popt_parseargvstring(const char *s,
int *argcPtr, const char ***argvPtr);
int poptConfigFileToString(FILE * fp, char **argstrp, int flags)
;
const char *const popt_strerror(const int error);
void popt_setexecpath(popt_context con, const char *path,
int allowAbsolute);
void popt_printhelp(popt_context con, FILE * fp, int flags)
;
void popt_printusage(popt_context con, FILE * fp, int flags)
;
void popt_setotheroptionhelp(popt_context con, const char *text);
const char *popt_getinvocationname(popt_context con);
int popt_strippedargv(popt_context con, int argc, char **argv);
int poptSaveLong(long *arg, int argInfo, long aLong)
;
int poptSaveInt(int *arg, int argInfo, long aLong)
;
#ifdef __cplusplus
}
#endif
#endif