popt  1.14
popt.h
Go to the documentation of this file.
00001 
00005 /* (C) 1998-2000 Red Hat, Inc. -- Licensing details are in the COPYING
00006    file accompanying popt source distributions, available from 
00007    ftp://ftp.rpm.org/pub/rpm/dist. */
00008 
00009 #ifndef H_POPT
00010 #define H_POPT
00011 
00012 #include <stdio.h>                      /* for FILE * */
00013 
00014 #define POPT_OPTION_DEPTH       10
00015 
00020 #define POPT_ARG_NONE            0U     
00021 #define POPT_ARG_STRING          1U     
00022 #define POPT_ARG_INT             2U     
00023 #define POPT_ARG_LONG            3U     
00024 #define POPT_ARG_INCLUDE_TABLE   4U     
00025 #define POPT_ARG_CALLBACK        5U     
00029 #define POPT_ARG_INTL_DOMAIN     6U     
00033 #define POPT_ARG_VAL             7U     
00034 #define POPT_ARG_FLOAT           8U     
00035 #define POPT_ARG_DOUBLE          9U     
00036 #define POPT_ARG_LONGLONG        10U    
00038 #define POPT_ARG_MAINCALL       16U+11U 
00039 #define POPT_ARG_ARGV           12U     
00041 #define POPT_ARG_MASK           0x0000FFFFU
00042 
00048 #define POPT_ARGFLAG_ONEDASH    0x80000000U  
00049 #define POPT_ARGFLAG_DOC_HIDDEN 0x40000000U  
00050 #define POPT_ARGFLAG_STRIP      0x20000000U  
00051 #define POPT_ARGFLAG_OPTIONAL   0x10000000U  
00053 #define POPT_ARGFLAG_OR         0x08000000U  
00054 #define POPT_ARGFLAG_NOR        0x09000000U  
00055 #define POPT_ARGFLAG_AND        0x04000000U  
00056 #define POPT_ARGFLAG_NAND       0x05000000U  
00057 #define POPT_ARGFLAG_XOR        0x02000000U  
00058 #define POPT_ARGFLAG_NOT        0x01000000U  
00059 #define POPT_ARGFLAG_LOGICALOPS \
00060         (POPT_ARGFLAG_OR|POPT_ARGFLAG_AND|POPT_ARGFLAG_XOR)
00061 
00062 #define POPT_BIT_SET    (POPT_ARG_VAL|POPT_ARGFLAG_OR)
00063 
00064 #define POPT_BIT_CLR    (POPT_ARG_VAL|POPT_ARGFLAG_NAND)
00065 
00067 #define POPT_ARGFLAG_SHOW_DEFAULT 0x00800000U 
00068 #define POPT_ARGFLAG_RANDOM     0x00400000U  /*<! random value in [1,arg] */
00069 
00076 #define POPT_CBFLAG_PRE         0x80000000U  
00077 #define POPT_CBFLAG_POST        0x40000000U  
00078 #define POPT_CBFLAG_INC_DATA    0x20000000U  
00080 #define POPT_CBFLAG_SKIPOPTION  0x10000000U  
00081 #define POPT_CBFLAG_CONTINUE    0x08000000U  
00083 
00084 
00088 #define POPT_ERROR_NOARG        -10     
00089 #define POPT_ERROR_BADOPT       -11     
00090 #define POPT_ERROR_OPTSTOODEEP  -13     
00091 #define POPT_ERROR_BADQUOTE     -15     
00092 #define POPT_ERROR_ERRNO        -16     
00093 #define POPT_ERROR_BADNUMBER    -17     
00094 #define POPT_ERROR_OVERFLOW     -18     
00095 #define POPT_ERROR_BADOPERATION -19     
00096 #define POPT_ERROR_NULLARG      -20     
00097 #define POPT_ERROR_MALLOC       -21     
00098 #define POPT_ERROR_NOCONTEXT    -22     
00100 
00101 
00105 #define POPT_BADOPTION_NOALIAS  (1U << 0)  
00107 
00108 
00112 #define POPT_CONTEXT_NO_EXEC    (1U << 0)  
00113 #define POPT_CONTEXT_KEEP_FIRST (1U << 1)  
00114 #define POPT_CONTEXT_POSIXMEHARDER (1U << 2) 
00115 #define POPT_CONTEXT_ARG_OPTS   (1U << 4) 
00117 
00118 
00120 struct poptOption {
00121 /*@observer@*/ /*@null@*/
00122     const char * longName;      
00123     char shortName;             
00124     unsigned int argInfo;
00125 /*@shared@*/ /*@null@*/
00126     void * arg;                 
00127     int val;                    
00128 /*@observer@*/ /*@null@*/
00129     const char * descrip;       
00130 /*@observer@*/ /*@null@*/
00131     const char * argDescrip;    
00132 };
00133 
00137 struct poptAlias {
00138 /*@owned@*/ /*@null@*/
00139     const char * longName;      
00140     char shortName;             
00141     int argc;
00142 /*@owned@*/
00143     const char ** argv;         
00144 };
00145 
00149 /*@-exporttype@*/
00150 typedef struct poptItem_s {
00151     struct poptOption option;   
00152     int argc;                   
00153 /*@owned@*/
00154     const char ** argv;         
00155 } * poptItem;
00156 /*@=exporttype@*/
00157 
00162 
00166 /*@-exportvar@*/
00167 /*@unchecked@*/ /*@observer@*/
00168 extern struct poptOption poptAliasOptions[];
00169 /*@=exportvar@*/
00170 #define POPT_AUTOALIAS { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptAliasOptions, \
00171                         0, "Options implemented via popt alias/exec:", NULL },
00172 
00176 /*@-exportvar@*/
00177 /*@unchecked@*/ /*@observer@*/
00178 extern struct poptOption poptHelpOptions[];
00179 /*@=exportvar@*/
00180 
00181 /*@-exportvar@*/
00182 /*@unchecked@*/ /*@observer@*/
00183 extern struct poptOption * poptHelpOptionsI18N;
00184 /*@=exportvar@*/
00185 
00186 #define POPT_AUTOHELP { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptHelpOptions, \
00187                         0, "Help options:", NULL },
00188 
00189 #define POPT_TABLEEND { NULL, '\0', 0, NULL, 0, NULL, NULL }
00190 
00194 /*@-exporttype@*/
00195 typedef /*@abstract@*/ struct poptContext_s * poptContext;
00196 /*@=exporttype@*/
00197 
00200 #ifndef __cplusplus
00201 /*@-exporttype -typeuse@*/
00202 typedef struct poptOption * poptOption;
00203 /*@=exporttype =typeuse@*/
00204 #endif
00205 
00208 /*@-exportconst@*/
00209 enum poptCallbackReason {
00210     POPT_CALLBACK_REASON_PRE    = 0, 
00211     POPT_CALLBACK_REASON_POST   = 1,
00212     POPT_CALLBACK_REASON_OPTION = 2
00213 };
00214 /*@=exportconst@*/
00215 
00216 #ifdef __cplusplus
00217 extern "C" {
00218 #endif
00219 /*@-type@*/
00220 
00229 typedef void (*poptCallbackType) (poptContext con, 
00230                 enum poptCallbackReason reason,
00231                 /*@null@*/ const struct poptOption * opt,
00232                 /*@null@*/ const char * arg,
00233                 /*@null@*/ const void * data)
00234         /*@globals internalState @*/
00235         /*@modifies internalState @*/;
00236 
00246 /*@only@*/ /*@null@*/
00247 poptContext poptGetContext(
00248                 /*@dependent@*/ /*@keep@*/ const char * name,
00249                 int argc, /*@dependent@*/ /*@keep@*/ const char ** argv,
00250                 /*@dependent@*/ /*@keep@*/ const struct poptOption * options,
00251                 unsigned int flags)
00252         /*@globals internalState @*/
00253         /*@modifies internalState @*/;
00254 
00259 /*@unused@*/
00260 void poptResetContext(/*@null@*/poptContext con)
00261         /*@modifies con @*/;
00262 
00268 int poptGetNextOpt(/*@null@*/poptContext con)
00269         /*@globals fileSystem, internalState @*/
00270         /*@modifies con, fileSystem, internalState @*/;
00271 
00277 /*@observer@*/ /*@null@*/ /*@unused@*/
00278 char * poptGetOptArg(/*@null@*/poptContext con)
00279         /*@modifies con @*/;
00280 
00286 /*@observer@*/ /*@null@*/ /*@unused@*/
00287 const char * poptGetArg(/*@null@*/poptContext con)
00288         /*@modifies con @*/;
00289 
00295 /*@observer@*/ /*@null@*/ /*@unused@*/
00296 const char * poptPeekArg(/*@null@*/poptContext con)
00297         /*@*/;
00298 
00304 /*@observer@*/ /*@null@*/
00305 const char ** poptGetArgs(/*@null@*/poptContext con)
00306         /*@modifies con @*/;
00307 
00314 /*@observer@*/
00315 const char * poptBadOption(/*@null@*/poptContext con, unsigned int flags)
00316         /*@*/;
00317 
00323 /*@null@*/
00324 poptContext poptFreeContext( /*@only@*/ /*@null@*/ poptContext con)
00325         /*@modifies con @*/;
00326 
00333 /*@unused@*/
00334 int poptStuffArgs(poptContext con, /*@keep@*/ const char ** argv)
00335         /*@modifies con @*/;
00336 
00346 /*@unused@*/
00347 int poptAddAlias(poptContext con, struct poptAlias alias, int flags)
00348         /*@modifies con @*/;
00349 
00357 int poptAddItem(poptContext con, poptItem newItem, int flags)
00358         /*@modifies con @*/;
00359 
00366 int poptReadConfigFile(poptContext con, const char * fn)
00367         /*@globals errno, fileSystem, internalState @*/
00368         /*@modifies con->execs, con->numExecs,
00369                 errno, fileSystem, internalState @*/;
00370 
00377 /*@unused@*/
00378 int poptReadDefaultConfig(poptContext con, /*@unused@*/ int useEnv)
00379         /*@globals fileSystem, internalState @*/
00380         /*@modifies con->execs, con->numExecs,
00381                 fileSystem, internalState @*/;
00382 
00394 int poptDupArgv(int argc, /*@null@*/ const char **argv,
00395                 /*@null@*/ /*@out@*/ int * argcPtr,
00396                 /*@null@*/ /*@out@*/ const char *** argvPtr)
00397         /*@modifies *argcPtr, *argvPtr @*/;
00398 
00410 int poptParseArgvString(const char * s,
00411                 /*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr)
00412         /*@modifies *argcPtr, *argvPtr @*/;
00413 
00460 /*@-fcnuse@*/
00461 int poptConfigFileToString(FILE *fp, /*@out@*/ char ** argstrp, int flags)
00462         /*@globals fileSystem @*/
00463         /*@modifies *fp, *argstrp, fileSystem @*/;
00464 /*@=fcnuse@*/
00465 
00471 /*@observer@*/
00472 const char * poptStrerror(const int error)
00473         /*@*/;
00474 
00481 /*@unused@*/
00482 void poptSetExecPath(poptContext con, const char * path, int allowAbsolute)
00483         /*@modifies con @*/;
00484 
00491 void poptPrintHelp(poptContext con, FILE * fp, /*@unused@*/ int flags)
00492         /*@globals fileSystem @*/
00493         /*@modifies fp, fileSystem @*/;
00494 
00501 void poptPrintUsage(poptContext con, FILE * fp, /*@unused@*/ int flags)
00502         /*@globals fileSystem @*/
00503         /*@modifies fp, fileSystem @*/;
00504 
00510 /*@-fcnuse@*/
00511 void poptSetOtherOptionHelp(poptContext con, const char * text)
00512         /*@modifies con @*/;
00513 /*@=fcnuse@*/
00514 
00520 /*@-fcnuse@*/
00521 /*@observer@*/
00522 const char * poptGetInvocationName(poptContext con)
00523         /*@*/;
00524 /*@=fcnuse@*/
00525 
00533 /*@-fcnuse@*/
00534 int poptStrippedArgv(poptContext con, int argc, char ** argv)
00535         /*@modifies *argv @*/;
00536 /*@=fcnuse@*/
00537 
00545 /*@unused@*/
00546 int poptSaveString(/*@null@*/ const char *** argvp, unsigned int argInfo,
00547                 const char * val)
00548         /*@modifies *argvp @*/;
00549 
00558 /*@-incondefs@*/
00559 /*@unused@*/
00560 int poptSaveLongLong(/*@null@*/ long long * arg, unsigned int argInfo,
00561                 long long aLongLong)
00562         /*@globals internalState @*/
00563         /*@modifies *arg, internalState @*/
00564         /*@requires maxSet(arg) >= 0 /\ maxRead(arg) == 0 @*/;
00565 /*@=incondefs@*/
00566 
00575 /*@-incondefs@*/
00576 /*@unused@*/
00577 int poptSaveLong(/*@null@*/ long * arg, unsigned int argInfo, long aLong)
00578         /*@globals internalState @*/
00579         /*@modifies *arg, internalState @*/
00580         /*@requires maxSet(arg) >= 0 /\ maxRead(arg) == 0 @*/;
00581 /*@=incondefs@*/
00582 
00591 /*@-incondefs@*/
00592 /*@unused@*/
00593 int poptSaveInt(/*@null@*/ int * arg, unsigned int argInfo, long aLong)
00594         /*@globals internalState @*/
00595         /*@modifies *arg, internalState @*/
00596         /*@requires maxSet(arg) >= 0 /\ maxRead(arg) == 0 @*/;
00597 /*@=incondefs@*/
00598 
00599 /*@=type@*/
00600 #ifdef  __cplusplus
00601 }
00602 #endif
00603 
00604 #endif

Generated for popt by  doxygen 1.7.6.1