Logo Search packages:      
Sourcecode: samba-doc-ja version File versions

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
#define H_POPT

#ifdef __cplusplus
extern "C" {
#endif

#include <stdio.h>                  /* for FILE * */

#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     /* 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 (only applies to long args) */
#define POPT_CBFLAG_PRE       0x80000000  /* call the callback before parse */
#define POPT_CBFLAG_POST      0x40000000  /* call the callback after parse */
#define POPT_CBFLAG_INC_DATA  0x20000000  /* use data from the include line,
                                     not the subtable */

#define POPT_ERROR_NOARG      -10
#define POPT_ERROR_BADOPT     -11
#define POPT_ERROR_OPTSTOODEEP      -13
#define POPT_ERROR_BADQUOTE   -15   /* only from poptParseArgString() */
#define POPT_ERROR_ERRNO      -16   /* only from poptParseArgString() */
#define POPT_ERROR_BADNUMBER  -17
#define POPT_ERROR_OVERFLOW   -18

/* poptBadOption() flags */
#define POPT_BADOPTION_NOALIAS  (1 << 0)  /* don't go into an alias */

/* 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 {
    /*@observer@*/ /*@null@*/ const char * longName;  /* may be NULL */
    char shortName;           /* may be '\0' */
    int argInfo;
    /*@shared@*/ /*@null@*/ void * arg;         /* depends on argInfo */
    int val;                  /* 0 means don't return, just update flag */
    /*@shared@*/ /*@null@*/ const char * descrip;     /* description for autohelp -- may be NULL */
    /*@shared@*/ /*@null@*/ const char * argDescrip;  /* argument description for autohelp */
};

struct poptAlias {
    /*@owned@*/ /*@null@*/ const char * longName;     /* may be NULL */
    char shortName;           /* may be '\0' */
    int argc;
    /*@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;
#ifndef __cplusplus
typedef struct poptOption * poptOption;
#endif

enum poptCallbackReason { POPT_CALLBACK_REASON_PRE, 
                    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);

/* returns 'val' element, -1 on last item, POPT_ERROR_* on error */
int poptGetNextOpt(poptContext con);
/* returns NULL if no argument is available */
/*@observer@*/ /*@null@*/ const char * poptGetOptArg(poptContext con);
/* returns NULL if no more options are available */
/*@observer@*/ /*@null@*/ const char * poptGetArg(poptContext con);
/*@observer@*/ /*@null@*/ const char * poptPeekArg(poptContext con);
/*@observer@*/ /*@null@*/ const char ** poptGetArgs(poptContext con);
/* returns the option which caused the most recent error */
/*@observer@*/ const char * poptBadOption(poptContext con, int flags);
void poptFreeContext( /*@only@*/ poptContext con);
int poptStuffArgs(poptContext con, /*@keep@*/ const char ** argv);
int poptAddAlias(poptContext con, struct poptAlias alias, int flags);
int poptReadConfigFile(poptContext con, const char * fn);
/* like above, but reads /etc/popt and $HOME/.popt along with environment 
   vars */
int poptReadDefaultConfig(poptContext con, int useEnv);
/* argv should be freed -- this allows ', ", and \ quoting, but ' is treated
   the same as " and both may include \ quotes */
int poptDupArgv(int argc, const char **argv,
            /*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr);
int poptParseArgvString(const char * s,
            /*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr);
/*@observer@*/ const char *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

Generated by  Doxygen 1.6.0   Back to index