Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

popt/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           0       
00021 #define POPT_ARG_STRING         1       
00022 #define POPT_ARG_INT            2       
00023 #define POPT_ARG_LONG           3       
00024 #define POPT_ARG_INCLUDE_TABLE  4       
00025 #define POPT_ARG_CALLBACK       5       
00029 #define POPT_ARG_INTL_DOMAIN    6       
00033 #define POPT_ARG_VAL            7       
00034 #define POPT_ARG_FLOAT          8       
00035 #define POPT_ARG_DOUBLE         9       
00037 #define POPT_ARG_MASK           0x0000FFFF
00038 
00044 #define POPT_ARGFLAG_ONEDASH    0x80000000  
00045 #define POPT_ARGFLAG_DOC_HIDDEN 0x40000000  
00046 #define POPT_ARGFLAG_STRIP      0x20000000  
00047 #define POPT_ARGFLAG_OPTIONAL   0x10000000  
00049 #define POPT_ARGFLAG_OR         0x08000000  
00050 #define POPT_ARGFLAG_NOR        0x09000000  
00051 #define POPT_ARGFLAG_AND        0x04000000  
00052 #define POPT_ARGFLAG_NAND       0x05000000  
00053 #define POPT_ARGFLAG_XOR        0x02000000  
00054 #define POPT_ARGFLAG_NOT        0x01000000  
00055 #define POPT_ARGFLAG_LOGICALOPS \
00056         (POPT_ARGFLAG_OR|POPT_ARGFLAG_AND|POPT_ARGFLAG_XOR)
00057 
00058 #define POPT_BIT_SET    (POPT_ARG_VAL|POPT_ARGFLAG_OR)
00059 
00060 #define POPT_BIT_CLR    (POPT_ARG_VAL|POPT_ARGFLAG_NAND)
00061 
00063 #define POPT_ARGFLAG_SHOW_DEFAULT 0x00800000 
00066 
00067 
00071 #define POPT_CBFLAG_PRE         0x80000000  
00072 #define POPT_CBFLAG_POST        0x40000000  
00073 #define POPT_CBFLAG_INC_DATA    0x20000000  
00075 #define POPT_CBFLAG_SKIPOPTION  0x10000000  
00076 #define POPT_CBFLAG_CONTINUE    0x08000000  
00078 
00079 
00083 #define POPT_ERROR_NOARG        -10     
00084 #define POPT_ERROR_BADOPT       -11     
00085 #define POPT_ERROR_OPTSTOODEEP  -13     
00086 #define POPT_ERROR_BADQUOTE     -15     
00087 #define POPT_ERROR_ERRNO        -16     
00088 #define POPT_ERROR_BADNUMBER    -17     
00089 #define POPT_ERROR_OVERFLOW     -18     
00090 #define POPT_ERROR_BADOPERATION -19     
00091 #define POPT_ERROR_NULLARG      -20     
00092 #define POPT_ERROR_MALLOC       -21     
00094 
00095 
00099 #define POPT_BADOPTION_NOALIAS  (1 << 0)  
00101 
00102 
00106 #define POPT_CONTEXT_NO_EXEC    (1 << 0)  
00107 #define POPT_CONTEXT_KEEP_FIRST (1 << 1)  
00108 #define POPT_CONTEXT_POSIXMEHARDER (1 << 2) 
00109 #define POPT_CONTEXT_ARG_OPTS   (1 << 4) 
00111 
00112 
00114 struct poptOption {
00115 /*@observer@*/ /*@null@*/
00116     const char * longName;      
00117     char shortName;             
00118     int argInfo;
00119 /*@shared@*/ /*@null@*/
00120     void * arg;                 
00121     int val;                    
00122 /*@observer@*/ /*@null@*/
00123     const char * descrip;       
00124 /*@observer@*/ /*@null@*/
00125     const char * argDescrip;    
00126 };
00127 
00131 struct poptAlias {
00132 /*@owned@*/ /*@null@*/
00133     const char * longName;      
00134     char shortName;             
00135     int argc;
00136 /*@owned@*/
00137     const char ** argv;         
00138 };
00139 
00143 /*@-exporttype@*/
00144 typedef struct poptItem_s {
00145     struct poptOption option;   
00146     int argc;                   
00147 /*@owned@*/
00148     const char ** argv;         
00149 } * poptItem;
00150 /*@=exporttype@*/
00151 
00156 
00160 /*@-exportvar@*/
00161 /*@unchecked@*/ /*@observer@*/
00162 extern struct poptOption poptAliasOptions[];
00163 /*@=exportvar@*/
00164 #define POPT_AUTOALIAS { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptAliasOptions, \
00165                         0, "Options implemented via popt alias/exec:", NULL },
00166 
00170 /*@-exportvar@*/
00171 /*@unchecked@*/ /*@observer@*/
00172 extern struct poptOption poptHelpOptions[];
00173 /*@=exportvar@*/
00174 #define POPT_AUTOHELP { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptHelpOptions, \
00175                         0, "Help options:", NULL },
00176 
00177 #define POPT_TABLEEND { NULL, '\0', 0, 0, 0, NULL, NULL }
00178 
00182 /*@-exporttype@*/
00183 typedef /*@abstract@*/ struct poptContext_s * poptContext;
00184 /*@=exporttype@*/
00185 
00188 #ifndef __cplusplus
00189 /*@-exporttype -typeuse@*/
00190 typedef struct poptOption * poptOption;
00191 /*@=exporttype =typeuse@*/
00192 #endif
00193 
00194 /*@-exportconst@*/
00195 enum poptCallbackReason {
00196     POPT_CALLBACK_REASON_PRE    = 0, 
00197     POPT_CALLBACK_REASON_POST   = 1,
00198     POPT_CALLBACK_REASON_OPTION = 2
00199 };
00200 /*@=exportconst@*/
00201 
00202 #ifdef __cplusplus
00203 extern "C" {
00204 #endif
00205 /*@-type@*/
00206 
00215 typedef void (*poptCallbackType) (poptContext con, 
00216                 enum poptCallbackReason reason,
00217                 /*@null@*/ const struct poptOption * opt,
00218                 /*@null@*/ const char * arg,
00219                 /*@null@*/ const void * data)
00220         /*@*/;
00221 
00231 /*@only@*/ /*@null@*/ poptContext poptGetContext(
00232                 /*@dependent@*/ /*@keep@*/ const char * name,
00233                 int argc, /*@dependent@*/ /*@keep@*/ const char ** argv,
00234                 /*@dependent@*/ /*@keep@*/ const struct poptOption * options,
00235                 int flags)
00236         /*@*/;
00237 
00242 /*@unused@*/
00243 void poptResetContext(/*@null@*/poptContext con)
00244         /*@modifies con @*/;
00245 
00251 int poptGetNextOpt(/*@null@*/poptContext con)
00252         /*@globals fileSystem, internalState @*/
00253         /*@modifies con, fileSystem, internalState @*/;
00254 
00260 /*@observer@*/ /*@null@*/ const char * poptGetOptArg(/*@null@*/poptContext con)
00261         /*@modifies con @*/;
00262 
00268 /*@observer@*/ /*@null@*/ const char * poptGetArg(/*@null@*/poptContext con)
00269         /*@modifies con @*/;
00270 
00276 /*@observer@*/ /*@null@*/ const char * poptPeekArg(/*@null@*/poptContext con)
00277         /*@*/;
00278 
00284 /*@observer@*/ /*@null@*/ const char ** poptGetArgs(/*@null@*/poptContext con)
00285         /*@modifies con @*/;
00286 
00293 /*@observer@*/ const char * poptBadOption(/*@null@*/poptContext con, int flags)
00294         /*@*/;
00295 
00301 /*@null@*/ poptContext poptFreeContext( /*@only@*/ /*@null@*/ poptContext con)
00302         /*@modifies con @*/;
00303 
00310 int poptStuffArgs(poptContext con, /*@keep@*/ const char ** argv)
00311         /*@modifies con @*/;
00312 
00322 /*@unused@*/
00323 int poptAddAlias(poptContext con, struct poptAlias alias, int flags)
00324         /*@modifies con @*/;
00325 
00333 int poptAddItem(poptContext con, poptItem newItem, int flags)
00334         /*@modifies con @*/;
00335 
00342 int poptReadConfigFile(poptContext con, const char * fn)
00343         /*@globals fileSystem, internalState @*/
00344         /*@modifies con->execs, con->numExecs,
00345                 fileSystem, internalState @*/;
00346 
00353 int poptReadDefaultConfig(poptContext con, /*@unused@*/ int useEnv)
00354         /*@globals fileSystem, internalState @*/
00355         /*@modifies con->execs, con->numExecs,
00356                 fileSystem, internalState @*/;
00357 
00369 int poptDupArgv(int argc, /*@null@*/ const char **argv,
00370                 /*@null@*/ /*@out@*/ int * argcPtr,
00371                 /*@null@*/ /*@out@*/ const char *** argvPtr)
00372         /*@modifies *argcPtr, *argvPtr @*/;
00373 
00385 int poptParseArgvString(const char * s,
00386                 /*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr)
00387         /*@modifies *argcPtr, *argvPtr @*/;
00388 
00435 /*@-fcnuse@*/
00436 int poptConfigFileToString(FILE *fp, /*@out@*/ char ** argstrp, int flags)
00437         /*@globals fileSystem @*/
00438         /*@modifies *fp, *argstrp, fileSystem @*/;
00439 /*@=fcnuse@*/
00440 
00446 /*@observer@*/ const char *const poptStrerror(const int error)
00447         /*@*/;
00448 
00455 void poptSetExecPath(poptContext con, const char * path, int allowAbsolute)
00456         /*@modifies con @*/;
00457 
00464 void poptPrintHelp(poptContext con, FILE * fp, /*@unused@*/ int flags)
00465         /*@globals fileSystem @*/
00466         /*@modifies *fp, fileSystem @*/;
00467 
00474 void poptPrintUsage(poptContext con, FILE * fp, /*@unused@*/ int flags)
00475         /*@globals fileSystem @*/
00476         /*@modifies *fp, fileSystem @*/;
00477 
00483 /*@-fcnuse@*/
00484 void poptSetOtherOptionHelp(poptContext con, const char * text)
00485         /*@modifies con @*/;
00486 /*@=fcnuse@*/
00487 
00493 /*@-fcnuse@*/
00494 /*@observer@*/ const char * poptGetInvocationName(poptContext con)
00495         /*@*/;
00496 /*@=fcnuse@*/
00497 
00505 /*@-fcnuse@*/
00506 int poptStrippedArgv(poptContext con, int argc, char ** argv)
00507         /*@modifies *argv @*/;
00508 /*@=fcnuse@*/
00509 
00518 /*@-incondefs@*/
00519 /*@unused@*/
00520 int poptSaveLong(/*@null@*/ long * arg, int argInfo, long aLong)
00521         /*@modifies *arg @*/
00522         /*@requires maxSet(arg) >= 0 /\ maxRead(arg) == 0 @*/;
00523 /*@=incondefs@*/
00524 
00533 /*@-incondefs@*/
00534 /*@unused@*/
00535 int poptSaveInt(/*@null@*/ int * arg, int argInfo, long aLong)
00536         /*@modifies *arg @*/
00537         /*@requires maxSet(arg) >= 0 /\ maxRead(arg) == 0 @*/;
00538 /*@=incondefs@*/
00539 
00540 /*@=type@*/
00541 #ifdef  __cplusplus
00542 }
00543 #endif
00544 
00545 #endif

Generated on Sun Oct 26 13:02:01 2003 for rpm by doxygen1.2.18