00001
00005
00006
00007
00008
00009 #ifndef H_POPT
00010 #define H_POPT
00011
00012 #include <stdio.h>
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
00116 const char * longName;
00117 char shortName;
00118 int argInfo;
00119
00120 void * arg;
00121 int val;
00122
00123 const char * descrip;
00124
00125 const char * argDescrip;
00126 };
00127
00131 struct poptAlias {
00132
00133 const char * longName;
00134 char shortName;
00135 int argc;
00136
00137 const char ** argv;
00138 };
00139
00143
00144 typedef struct poptItem_s {
00145 struct poptOption option;
00146 int argc;
00147
00148 const char ** argv;
00149 } * poptItem;
00150
00151
00156
00160
00161
00162 extern struct poptOption poptAliasOptions[];
00163
00164 #define POPT_AUTOALIAS { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptAliasOptions, \
00165 0, "Options implemented via popt alias/exec:", NULL },
00166
00170
00171
00172 extern struct poptOption poptHelpOptions[];
00173
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
00183 typedef struct poptContext_s * poptContext;
00184
00185
00188 #ifndef __cplusplus
00189
00190 typedef struct poptOption * poptOption;
00191
00192 #endif
00193
00194
00195 enum poptCallbackReason {
00196 POPT_CALLBACK_REASON_PRE = 0,
00197 POPT_CALLBACK_REASON_POST = 1,
00198 POPT_CALLBACK_REASON_OPTION = 2
00199 };
00200
00201
00202 #ifdef __cplusplus
00203 extern "C" {
00204 #endif
00205
00206
00215 typedef void (*poptCallbackType) (poptContext con,
00216 enum poptCallbackReason reason,
00217 const struct poptOption * opt,
00218 const char * arg,
00219 const void * data)
00220 ;
00221
00231 poptContext poptGetContext(
00232 const char * name,
00233 int argc, const char ** argv,
00234 const struct poptOption * options,
00235 int flags)
00236 ;
00237
00242
00243 void poptResetContext(poptContext con)
00244 ;
00245
00251 int poptGetNextOpt(poptContext con)
00252
00253 ;
00254
00260 const char * poptGetOptArg(poptContext con)
00261 ;
00262
00268 const char * poptGetArg(poptContext con)
00269 ;
00270
00276 const char * poptPeekArg(poptContext con)
00277 ;
00278
00284 const char ** poptGetArgs(poptContext con)
00285 ;
00286
00293 const char * poptBadOption(poptContext con, int flags)
00294 ;
00295
00301 poptContext poptFreeContext( poptContext con)
00302 ;
00303
00310 int poptStuffArgs(poptContext con, const char ** argv)
00311 ;
00312
00322
00323 int poptAddAlias(poptContext con, struct poptAlias alias, int flags)
00324 ;
00325
00333 int poptAddItem(poptContext con, poptItem newItem, int flags)
00334 ;
00335
00342 int poptReadConfigFile(poptContext con, const char * fn)
00343
00344
00345 ;
00346
00353 int poptReadDefaultConfig(poptContext con, int useEnv)
00354
00355
00356 ;
00357
00369 int poptDupArgv(int argc, const char **argv,
00370 int * argcPtr,
00371 const char *** argvPtr)
00372 ;
00373
00385 int poptParseArgvString(const char * s,
00386 int * argcPtr, const char *** argvPtr)
00387 ;
00388
00435
00436 int poptConfigFileToString(FILE *fp, char ** argstrp, int flags)
00437
00438 ;
00439
00440
00446 const char *const poptStrerror(const int error)
00447 ;
00448
00455 void poptSetExecPath(poptContext con, const char * path, int allowAbsolute)
00456 ;
00457
00464 void poptPrintHelp(poptContext con, FILE * fp, int flags)
00465
00466 ;
00467
00474 void poptPrintUsage(poptContext con, FILE * fp, int flags)
00475
00476 ;
00477
00483
00484 void poptSetOtherOptionHelp(poptContext con, const char * text)
00485 ;
00486
00487
00493
00494 const char * poptGetInvocationName(poptContext con)
00495 ;
00496
00497
00505
00506 int poptStrippedArgv(poptContext con, int argc, char ** argv)
00507 ;
00508
00509
00518
00519
00520 int poptSaveLong( long * arg, int argInfo, long aLong)
00521
00522 ;
00523
00524
00533
00534
00535 int poptSaveInt( int * arg, int argInfo, long aLong)
00536
00537 ;
00538
00539
00540
00541 #ifdef __cplusplus
00542 }
00543 #endif
00544
00545 #endif