popt.h   popt.h 
/* (C) 1998 Red Hat Software, Inc. -- Licensing details are in the COPYING
file accompanying popt source distributions, available from
ftp://ftp.redhat.com/pub/code/popt */
#ifndef H_POPT #ifndef H_POPT
#define H_POPT #define H_POPT
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h> /* for FILE * */
#define POPT_OPTION_DEPTH 10 #define POPT_OPTION_DEPTH 10
#define POPT_ARG_NONE 0 #define POPT_ARG_NONE 0
#define POPT_ARG_STRING 1 #define POPT_ARG_STRING 1
#define POPT_ARG_INT 2 #define POPT_ARG_INT 2
#define POPT_ARG_LONG 3 #define POPT_ARG_LONG 3
#define POPT_ARG_INCLUDE_TABLE 4 /* arg points to table */
#define POPT_ARG_CALLBACK 5 /* table-wide callback... must be
set first in table; arg points
to callback, descrip points to
callback data to pass */
#define POPT_ARG_INTL_DOMAIN 6 /* set the translation domain
for this table and any
included tables; arg points
to the domain string */
#define POPT_ARG_VAL 7 /* arg should take value val */
#define POPT_ARG_MASK 0x0000FFFF
#define POPT_ARGFLAG_ONEDASH 0x80000000 /* allow -longoption */
#define POPT_ARGFLAG_DOC_HIDDEN 0x40000000 /* don't show in help/usage */
#define POPT_ARGFLAG_STRIP 0x20000000 /* strip this arg from argv (onl
y applies to long args) */
#define POPT_CBFLAG_PRE 0x80000000 /* call the callback bef
ore parse */
#define POPT_CBFLAG_POST 0x40000000 /* call the callback after parse
*/
#define POPT_CBFLAG_INC_DATA 0x20000000 /* use data from the include lin
e,
not the subtable */
#define POPT_ERROR_NOARG -10 #define POPT_ERROR_NOARG -10
#define POPT_ERROR_BADOPT -11 #define POPT_ERROR_BADOPT -11
#define POPT_ERROR_OPTSTOODEEP -13 #define POPT_ERROR_OPTSTOODEEP -13
#define POPT_ERROR_BADQUOTE -15 /* only from poptParseArgString() */ #define POPT_ERROR_BADQUOTE -15 /* only from poptParseArgString() */
#define POPT_ERROR_ERRNO -16 /* only from poptParseArgString() */ #define POPT_ERROR_ERRNO -16 /* only from poptParseArgString() */
#define POPT_ERROR_BADNUMBER -17 #define POPT_ERROR_BADNUMBER -17
#define POPT_ERROR_OVERFLOW -18 #define POPT_ERROR_OVERFLOW -18
/* context creation flags */ /* poptBadOption() flags */
#define POPT_BADOPTION_NOALIAS (1 << 0) /* don't go into an alias */ #define POPT_BADOPTION_NOALIAS (1 << 0) /* don't go into an alias */
#define POPT_KEEP_FIRST (1 << 1) /* pay attention to argv[0
] */ /* poptGetContext() flags */
#define POPT_CONTEXT_NO_EXEC (1 << 0) /* ignore exec expansions */
#define POPT_CONTEXT_KEEP_FIRST (1 << 1) /* pay attention to argv[0
] */
#define POPT_CONTEXT_POSIXMEHARDER (1 << 2) /* options can't follow args */
struct poptOption { struct poptOption {
const char * longName; /* may be NULL */ /*@observer@*/ /*@null@*/ const char * longName; /* may be NULL */
char shortName; /* may be '\0' */ char shortName; /* may be '\0' */
int argInfo; int argInfo;
void * arg; /* depends on argInfo */ /*@shared@*/ /*@null@*/ void * arg; /* depends on argInf o */
int val; /* 0 means don't return, just update flag */ int val; /* 0 means don't return, just update flag */
/*@shared@*/ /*@null@*/ const char * descrip; /* description for a
utohelp -- may be NULL */
/*@shared@*/ /*@null@*/ const char * argDescrip; /* argument descript
ion for autohelp */
}; };
struct poptAlias { struct poptAlias {
char * longName; /* may be NULL */ /*@owned@*/ /*@null@*/ const char * longName; /* may be NULL */
char shortName; /* may be '\0' */ char shortName; /* may be '\0' */
int argc; int argc;
char ** argv; /* must be free()able */ /*@owned@*/ const char ** argv; /* must be free()able */
}; };
extern struct poptOption poptHelpOptions[];
#define POPT_AUTOHELP { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptHelpOptions
, \
0, "Help options", NULL },
typedef struct poptContext_s * poptContext; typedef struct poptContext_s * poptContext;
#ifndef __cplusplus
typedef struct poptOption * poptOption;
#endif
poptContext poptGetContext(char * name, int argc, char ** argv, enum poptCallbackReason { POPT_CALLBACK_REASON_PRE,
const struct poptOption * options, int flags); POPT_CALLBACK_REASON_POST,
POPT_CALLBACK_REASON_OPTION };
typedef void (*poptCallbackType)(poptContext con,
enum poptCallbackReason reason,
const struct poptOption * opt,
const char * arg, const void * data);
/*@only@*/ poptContext poptGetContext(/*@keep@*/ const char * name,
int argc, /*@keep@*/ const char ** argv,
/*@keep@*/ const struct poptOption * options, int flags);
void poptResetContext(poptContext con); void poptResetContext(poptContext con);
/* returns 'val' element, -1 on last item, POPT_ERROR_* on error */ /* returns 'val' element, -1 on last item, POPT_ERROR_* on error */
int poptGetNextOpt(poptContext con); int poptGetNextOpt(poptContext con);
/* returns NULL if no argument is available */ /* returns NULL if no argument is available */
char * poptGetOptArg(poptContext con); /*@observer@*/ /*@null@*/ const char * poptGetOptArg(poptContext con);
/* returns NULL if no more options are available */ /* returns NULL if no more options are available */
char * poptGetArg(poptContext con); /*@observer@*/ /*@null@*/ const char * poptGetArg(poptContext con);
char * poptPeekArg(poptContext con); /*@observer@*/ /*@null@*/ const char * poptPeekArg(poptContext con);
char ** poptGetArgs(poptContext con); /*@observer@*/ /*@null@*/ const char ** poptGetArgs(poptContext con);
/* returns the option which caused the most recent error */ /* returns the option which caused the most recent error */
char * poptBadOption(poptContext con, int flags); /*@observer@*/ const char * poptBadOption(poptContext con, int flags);
void poptFreeContext(poptContext con); void poptFreeContext( /*@only@*/ poptContext con);
int poptStuffArgs(poptContext con, char ** argv); int poptStuffArgs(poptContext con, /*@keep@*/ const char ** argv);
int poptAddAlias(poptContext con, struct poptAlias alias, int flags); int poptAddAlias(poptContext con, struct poptAlias alias, int flags);
int poptReadConfigFile(poptContext con, char * fn); int poptReadConfigFile(poptContext con, const char * fn);
/* like above, but reads /etc/popt and $HOME/.popt along with environment /* like above, but reads /etc/popt and $HOME/.popt along with environment
vars */ vars */
int poptReadDefaultConfig(poptContext con, int useEnv); int poptReadDefaultConfig(poptContext con, int useEnv);
/* argv should be freed -- this allows ', ", and \ quoting, but ' is treate d /* argv should be freed -- this allows ', ", and \ quoting, but ' is treate d
the same as " and both may include \ quotes */ the same as " and both may include \ quotes */
int poptParseArgvString(char * s, int * argcPtr, char *** argvPtr); int poptDupArgv(int argc, const char **argv,
const char * poptStrerror(const int error); /*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr);
int poptParseArgvString(const char * s,
/*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr);
/*@observer@*/ const char *const poptStrerror(const int error);
void poptSetExecPath(poptContext con, const char * path, int allowAbsolute)
;
void poptPrintHelp(poptContext con, FILE * f, int flags);
void poptPrintUsage(poptContext con, FILE * f, int flags);
void poptSetOtherOptionHelp(poptContext con, const char * text);
/*@observer@*/ const char * poptGetInvocationName(poptContext con);
/* shuffles argv pointers to remove stripped args, returns new argc */
int poptStrippedArgv(poptContext con, int argc, char **argv);
#ifdef __cplusplus
}
#endif
#endif #endif
 End of changes. 18 change blocks. 
19 lines changed or deleted 91 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/