popt  1.16
popt.h
Go to the documentation of this file.
1 
5 /* (C) 1998-2000 Red Hat, Inc. -- Licensing details are in the COPYING
6  file accompanying popt source distributions, available from
7  ftp://ftp.rpm.org/pub/rpm/dist. */
8 
9 #ifndef H_POPT
10 #define H_POPT
11 
12 #include <stdio.h> /* for FILE * */
13 
14 #define POPT_OPTION_DEPTH 10
15 
20 #define POPT_ARG_NONE 0U
21 #define POPT_ARG_STRING 1U
22 #define POPT_ARG_INT 2U
23 #define POPT_ARG_LONG 3U
24 #define POPT_ARG_INCLUDE_TABLE 4U
25 #define POPT_ARG_CALLBACK 5U
29 #define POPT_ARG_INTL_DOMAIN 6U
33 #define POPT_ARG_VAL 7U
34 #define POPT_ARG_FLOAT 8U
35 #define POPT_ARG_DOUBLE 9U
36 #define POPT_ARG_LONGLONG 10U
38 #define POPT_ARG_MAINCALL 16U+11U
39 #define POPT_ARG_ARGV 12U
40 #define POPT_ARG_SHORT 13U
41 #define POPT_ARG_BITSET 16U+14U
43 #define POPT_ARG_MASK 0x000000FFU
44 #define POPT_GROUP_MASK 0x0000FF00U
45 
52 #define POPT_ARGFLAG_ONEDASH 0x80000000U
53 #define POPT_ARGFLAG_DOC_HIDDEN 0x40000000U
54 #define POPT_ARGFLAG_STRIP 0x20000000U
55 #define POPT_ARGFLAG_OPTIONAL 0x10000000U
57 #define POPT_ARGFLAG_OR 0x08000000U
58 #define POPT_ARGFLAG_NOR 0x09000000U
59 #define POPT_ARGFLAG_AND 0x04000000U
60 #define POPT_ARGFLAG_NAND 0x05000000U
61 #define POPT_ARGFLAG_XOR 0x02000000U
62 #define POPT_ARGFLAG_NOT 0x01000000U
63 #define POPT_ARGFLAG_LOGICALOPS \
64  (POPT_ARGFLAG_OR|POPT_ARGFLAG_AND|POPT_ARGFLAG_XOR)
65 
66 #define POPT_BIT_SET (POPT_ARG_VAL|POPT_ARGFLAG_OR)
67 
68 #define POPT_BIT_CLR (POPT_ARG_VAL|POPT_ARGFLAG_NAND)
69 
71 #define POPT_ARGFLAG_SHOW_DEFAULT 0x00800000U
72 #define POPT_ARGFLAG_RANDOM 0x00400000U
73 #define POPT_ARGFLAG_TOGGLE 0x00200000U
76 
77 
81 #define POPT_CBFLAG_PRE 0x80000000U
82 #define POPT_CBFLAG_POST 0x40000000U
83 #define POPT_CBFLAG_INC_DATA 0x20000000U
85 #define POPT_CBFLAG_SKIPOPTION 0x10000000U
86 #define POPT_CBFLAG_CONTINUE 0x08000000U
88 
89 
93 #define POPT_ERROR_NOARG -10
94 #define POPT_ERROR_BADOPT -11
95 #define POPT_ERROR_OPTSTOODEEP -13
96 #define POPT_ERROR_BADQUOTE -15
97 #define POPT_ERROR_ERRNO -16
98 #define POPT_ERROR_BADNUMBER -17
99 #define POPT_ERROR_OVERFLOW -18
100 #define POPT_ERROR_BADOPERATION -19
101 #define POPT_ERROR_NULLARG -20
102 #define POPT_ERROR_MALLOC -21
103 #define POPT_ERROR_NOCONTEXT -22
104 #define POPT_ERROR_BADCONFIG -23
107 
108 
112 #define POPT_BADOPTION_NOALIAS (1U << 0)
114 
115 
119 #define POPT_CONTEXT_NO_EXEC (1U << 0)
120 #define POPT_CONTEXT_KEEP_FIRST (1U << 1)
121 #define POPT_CONTEXT_POSIXMEHARDER (1U << 2)
122 #define POPT_CONTEXT_ARG_OPTS (1U << 4)
124 
125 
127 struct poptOption {
128 /*@observer@*/ /*@null@*/
129  const char * longName;
130  char shortName;
131  unsigned int argInfo;
132 /*@shared@*/ /*@null@*/
133  void * arg;
134  int val;
135 /*@observer@*/ /*@null@*/
136  const char * descrip;
137 /*@observer@*/ /*@null@*/
138  const char * argDescrip;
139 };
140 
144 struct poptAlias {
145 /*@owned@*/ /*@null@*/
146  const char * longName;
147  char shortName;
148  int argc;
149 /*@owned@*/
150  const char ** argv;
151 };
152 
156 /*@-exporttype@*/
157 typedef struct poptItem_s {
159  int argc;
160 /*@owned@*/
161  const char ** argv;
162 } * poptItem;
163 /*@=exporttype@*/
164 
169 
173 /*@-exportvar@*/
174 /*@unchecked@*/ /*@observer@*/
175 extern struct poptOption poptAliasOptions[];
176 /*@=exportvar@*/
177 #define POPT_AUTOALIAS { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptAliasOptions, \
178  0, "Options implemented via popt alias/exec:", NULL },
179 
183 /*@-exportvar@*/
184 /*@unchecked@*/ /*@observer@*/
185 extern struct poptOption poptHelpOptions[];
186 /*@=exportvar@*/
187 
188 /*@-exportvar@*/
189 /*@unchecked@*/ /*@observer@*/
190 extern struct poptOption * poptHelpOptionsI18N;
191 /*@=exportvar@*/
192 
193 #define POPT_AUTOHELP { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptHelpOptions, \
194  0, "Help options:", NULL },
195 
196 #define POPT_TABLEEND { NULL, '\0', 0, NULL, 0, NULL, NULL }
197 
201 /*@-exporttype@*/
202 typedef /*@abstract@*/ struct poptContext_s * poptContext;
203 /*@=exporttype@*/
204 
207 #ifndef __cplusplus
208 /*@-exporttype -typeuse@*/
209 typedef struct poptOption * poptOption;
210 /*@=exporttype =typeuse@*/
211 #endif
212 
215 /*@-exportconst@*/
220 };
221 /*@=exportconst@*/
222 
223 #ifdef __cplusplus
224 extern "C" {
225 #endif
226 /*@-type@*/
227 
236 typedef void (*poptCallbackType) (poptContext con,
237  enum poptCallbackReason reason,
238  /*@null@*/ const struct poptOption * opt,
239  /*@null@*/ const char * arg,
240  /*@null@*/ const void * data)
241  /*@globals internalState @*/
242  /*@modifies internalState @*/;
243 
249 /*@null@*/
250 poptContext poptFreeContext( /*@only@*/ /*@null@*/ poptContext con)
251  /*@modifies con @*/;
252 
262 /*@only@*/ /*@null@*/
264  /*@dependent@*/ /*@keep@*/ const char * name,
265  int argc, /*@dependent@*/ /*@keep@*/ const char ** argv,
266  /*@dependent@*/ /*@keep@*/ const struct poptOption * options,
267  unsigned int flags)
268  /*@globals internalState @*/
269  /*@modifies internalState @*/;
270 
276 /*@null@*/
277 poptContext poptFini( /*@only@*/ /*@null@*/ poptContext con)
278  /*@modifies con @*/;
279 
289 /*@only@*/ /*@null@*/ /*@unused@*/
290 poptContext poptInit(int argc, /*@dependent@*/ /*@keep@*/ const char ** argv,
291  /*@dependent@*/ /*@keep@*/ const struct poptOption * options,
292  /*@null@*/ const char * configPaths)
293  /*@globals fileSystem, internalState @*/
294  /*@modifies fileSystem, internalState @*/;
295 
300 /*@unused@*/
301 void poptResetContext(/*@null@*/poptContext con)
302  /*@modifies con @*/;
303 
309 int poptGetNextOpt(/*@null@*/poptContext con)
310  /*@globals fileSystem, internalState @*/
311  /*@modifies con, fileSystem, internalState @*/;
312 
318 /*@observer@*/ /*@null@*/ /*@unused@*/
319 char * poptGetOptArg(/*@null@*/poptContext con)
320  /*@modifies con @*/;
321 
327 /*@observer@*/ /*@null@*/ /*@unused@*/
328 const char * poptGetArg(/*@null@*/poptContext con)
329  /*@modifies con @*/;
330 
336 /*@observer@*/ /*@null@*/ /*@unused@*/
337 const char * poptPeekArg(/*@null@*/poptContext con)
338  /*@*/;
339 
345 /*@observer@*/ /*@null@*/
346 const char ** poptGetArgs(/*@null@*/poptContext con)
347  /*@modifies con @*/;
348 
355 /*@observer@*/
356 const char * poptBadOption(/*@null@*/poptContext con, unsigned int flags)
357  /*@*/;
358 
365 /*@unused@*/
366 int poptStuffArgs(poptContext con, /*@keep@*/ const char ** argv)
367  /*@modifies con @*/;
368 
378 /*@unused@*/
379 int poptAddAlias(poptContext con, struct poptAlias alias, int flags)
380  /*@modifies con @*/;
381 
389 int poptAddItem(poptContext con, poptItem newItem, int flags)
390  /*@modifies con @*/;
391 
397 int poptSaneFile(const char * fn)
398  /*@globals errno, internalState @*/
399  /*@modifies errno, internalState @*/;
400 
409 int poptReadFile(const char * fn, /*@null@*/ /*@out@*/ char ** bp,
410  /*@null@*/ /*@out@*/ size_t * nbp, int flags)
411  /*@globals errno, fileSystem, internalState @*/
412  /*@modifies *bp, *nbp, errno, fileSystem, internalState @*/;
413 #define POPT_READFILE_TRIMNEWLINES 1
414 
421 int poptReadConfigFile(poptContext con, const char * fn)
422  /*@globals errno, fileSystem, internalState @*/
423  /*@modifies con->execs, con->numExecs,
424  errno, fileSystem, internalState @*/;
425 
435 int poptReadConfigFiles(poptContext con, /*@null@*/ const char * paths)
436  /*@globals errno, fileSystem, internalState @*/
437  /*@modifies con->execs, con->numExecs,
438  errno, fileSystem, internalState @*/;
439 
446 /*@unused@*/
447 int poptReadDefaultConfig(poptContext con, /*@unused@*/ int useEnv)
448  /*@globals fileSystem, internalState @*/
449  /*@modifies con->execs, con->numExecs,
450  fileSystem, internalState @*/;
451 
463 int poptDupArgv(int argc, /*@null@*/ const char **argv,
464  /*@null@*/ /*@out@*/ int * argcPtr,
465  /*@null@*/ /*@out@*/ const char *** argvPtr)
466  /*@modifies *argcPtr, *argvPtr @*/;
467 
479 int poptParseArgvString(const char * s,
480  /*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr)
481  /*@modifies *argcPtr, *argvPtr @*/;
482 
529 /*@-fcnuse@*/
530 int poptConfigFileToString(FILE *fp, /*@out@*/ char ** argstrp, int flags)
531  /*@globals fileSystem @*/
532  /*@modifies *fp, *argstrp, fileSystem @*/;
533 /*@=fcnuse@*/
534 
540 /*@observer@*/
541 const char * poptStrerror(const int error)
542  /*@*/;
543 
550 /*@unused@*/
551 void poptSetExecPath(poptContext con, const char * path, int allowAbsolute)
552  /*@modifies con @*/;
553 
560 void poptPrintHelp(poptContext con, FILE * fp, /*@unused@*/ int flags)
561  /*@globals fileSystem @*/
562  /*@modifies fp, fileSystem @*/;
563 
570 void poptPrintUsage(poptContext con, FILE * fp, /*@unused@*/ int flags)
571  /*@globals fileSystem @*/
572  /*@modifies fp, fileSystem @*/;
573 
579 /*@-fcnuse@*/
580 void poptSetOtherOptionHelp(poptContext con, const char * text)
581  /*@modifies con @*/;
582 /*@=fcnuse@*/
583 
589 /*@-fcnuse@*/
590 /*@observer@*/
591 const char * poptGetInvocationName(poptContext con)
592  /*@*/;
593 /*@=fcnuse@*/
594 
602 /*@-fcnuse@*/
603 int poptStrippedArgv(poptContext con, int argc, char ** argv)
604  /*@modifies *argv @*/;
605 /*@=fcnuse@*/
606 
614 /*@unused@*/
615 int poptSaveString(/*@null@*/ const char *** argvp, unsigned int argInfo,
616  /*@null@*/const char * val)
617  /*@modifies *argvp @*/;
618 
627 /*@-incondefs@*/
628 /*@unused@*/
629 int poptSaveLongLong(/*@null@*/ long long * arg, unsigned int argInfo,
630  long long aLongLong)
631  /*@globals internalState @*/
632  /*@modifies *arg, internalState @*/
633  /*@requires maxSet(arg) >= 0 /\ maxRead(arg) == 0 @*/;
634 /*@=incondefs@*/
635 
644 /*@-incondefs@*/
645 /*@unused@*/
646 int poptSaveLong(/*@null@*/ long * arg, unsigned int argInfo, long aLong)
647  /*@globals internalState @*/
648  /*@modifies *arg, internalState @*/
649  /*@requires maxSet(arg) >= 0 /\ maxRead(arg) == 0 @*/;
650 /*@=incondefs@*/
651 
660 /*@-incondefs@*/
661 /*@unused@*/
662 int poptSaveShort(/*@null@*/ short * arg, unsigned int argInfo, long aLong)
663  /*@globals internalState @*/
664  /*@modifies *arg, internalState @*/
665  /*@requires maxSet(arg) >= 0 /\ maxRead(arg) == 0 @*/;
666 /*@=incondefs@*/
667 
676 /*@-incondefs@*/
677 /*@unused@*/
678 int poptSaveInt(/*@null@*/ int * arg, unsigned int argInfo, long aLong)
679  /*@globals internalState @*/
680  /*@modifies *arg, internalState @*/
681  /*@requires maxSet(arg) >= 0 /\ maxRead(arg) == 0 @*/;
682 /*@=incondefs@*/
683 
684 /* The bit set typedef. */
685 /*@-exporttype@*/
686 typedef struct poptBits_s {
687  unsigned int bits[1];
688 } * poptBits;
689 /*@=exporttype@*/
690 
691 #define _POPT_BITS_N 1024U /* estimated population */
692 #define _POPT_BITS_M ((3U * _POPT_BITS_N) / 2U)
693 #define _POPT_BITS_K 16U /* no. of linear hash combinations */
694 
695 /*@-exportlocal -exportvar -globuse @*/
696 /*@unchecked@*/
697 extern unsigned int _poptBitsN;
698 /*@unchecked@*/
699 extern unsigned int _poptBitsM;
700 /*@unchecked@*/
701 extern unsigned int _poptBitsK;
702 /*@=exportlocal =exportvar =globuse @*/
703 
704 /*@-exportlocal@*/
705 int poptBitsAdd(/*@null@*/poptBits bits, /*@null@*/const char * s)
706  /*@modifies bits @*/;
707 /*@=exportlocal@*/
708 int poptBitsChk(/*@null@*/poptBits bits, /*@null@*/const char * s)
709  /*@*/;
710 int poptBitsClr(/*@null@*/poptBits bits)
711  /*@modifies bits @*/;
712 /*@-exportlocal@*/
713 int poptBitsDel(/*@null@*/poptBits bits, /*@null@*/const char * s)
714  /*@modifies bits @*/;
715 /*@-fcnuse@*/
716 int poptBitsIntersect(/*@null@*/ poptBits * ap, /*@null@*/ const poptBits b)
717  /*@modifies *ap @*/;
718 int poptBitsUnion(/*@null@*/ poptBits * ap, /*@null@*/ const poptBits b)
719  /*@modifies *ap @*/;
720 int poptBitsArgs(/*@null@*/ poptContext con, /*@null@*/ poptBits * ap)
721  /*@modifies con, *ap @*/;
722 /*@=fcnuse@*/
723 /*@=exportlocal@*/
724 
732 /*@-incondefs@*/
733 /*@unused@*/
734 int poptSaveBits(/*@null@*/ poptBits * bitsp, unsigned int argInfo,
735  /*@null@*/ const char * s)
736  /*@globals _poptBitsN, _poptBitsM, _poptBitsK, internalState @*/
737  /*@modifies *bitsp, _poptBitsN, _poptBitsM, _poptBitsK, internalState @*/;
738 /*@=incondefs@*/
739 
740 /*@=type@*/
741 
742 #ifdef __cplusplus
743 }
744 #endif
745 
746 #endif
poptCallbackReason
poptCallbackReason
Definition: popt.h:216
poptBadOption
const char * poptBadOption(poptContext con, unsigned int flags)
Definition: popt.c:1713
poptReadConfigFiles
int poptReadConfigFiles(poptContext con, const char *paths)
Definition: poptconfig.c:447
poptBitsClr
int poptBitsClr(poptBits bits)
Definition: popt.c:837
poptBits_s
Definition: popt.h:686
poptBitsIntersect
int poptBitsIntersect(poptBits *ap, const poptBits b)
Definition: popt.c:867
poptAlias
Definition: popt.h:144
poptInit
poptContext poptInit(int argc, const char **argv, const struct poptOption *options, const char *configPaths)
Definition: poptconfig.c:567
poptGetInvocationName
const char * poptGetInvocationName(poptContext con)
Definition: popt.c:1788
poptGetArgs
const char ** poptGetArgs(poptContext con)
Definition: popt.c:1590
POPT_CALLBACK_REASON_PRE
@ POPT_CALLBACK_REASON_PRE
Definition: popt.h:217
poptAlias::longName
const char * longName
Definition: popt.h:146
poptOption::argDescrip
const char * argDescrip
Definition: popt.h:138
poptAddAlias
int poptAddAlias(poptContext con, struct poptAlias alias, int flags)
Definition: popt.c:1647
poptPrintHelp
void poptPrintHelp(poptContext con, FILE *fp, int flags)
Definition: popthelp.c:665
poptStrippedArgv
int poptStrippedArgv(poptContext con, int argc, char **argv)
Definition: popt.c:1793
_poptBitsM
unsigned int _poptBitsM
Definition: popt.c:768
poptContext_s
Definition: poptint.h:115
poptOption
struct poptOption * poptOption
Definition: popt.h:209
poptFreeContext
poptContext poptFreeContext(poptContext con)
Definition: popt.c:1624
poptGetContext
poptContext poptGetContext(const char *name, int argc, const char **argv, const struct poptOption *options, unsigned int flags)
Definition: popt.c:169
poptPrintUsage
void poptPrintUsage(poptContext con, FILE *fp, int flags)
Definition: popthelp.c:888
poptCallbackType
void(* poptCallbackType)(poptContext con, enum poptCallbackReason reason, const struct poptOption *opt, const char *arg, const void *data)
Definition: popt.h:236
poptReadFile
int poptReadFile(const char *fn, char **bp, size_t *nbp, int flags)
Read a file into a buffer.
Definition: poptconfig.c:159
poptBitsUnion
int poptBitsUnion(poptBits *ap, const poptBits b)
Definition: popt.c:887
poptDupArgv
int poptDupArgv(int argc, const char **argv, int *argcPtr, const char ***argvPtr)
Definition: poptparse.c:13
poptGetOptArg
char * poptGetOptArg(poptContext con)
Definition: popt.c:1564
POPT_CALLBACK_REASON_OPTION
@ POPT_CALLBACK_REASON_OPTION
Definition: popt.h:219
poptOption::argInfo
unsigned int argInfo
Definition: popt.h:131
_poptBitsK
unsigned int _poptBitsK
Definition: popt.c:770
poptBits_s::bits
unsigned int bits[1]
Definition: popt.h:687
poptReadConfigFile
int poptReadConfigFile(poptContext con, const char *fn)
Definition: poptconfig.c:392
poptAlias::argv
const char ** argv
Definition: popt.h:150
poptGetNextOpt
int poptGetNextOpt(poptContext con)
Definition: popt.c:1309
poptOption::longName
const char * longName
Definition: popt.h:129
POPT_CALLBACK_REASON_POST
@ POPT_CALLBACK_REASON_POST
Definition: popt.h:218
poptPeekArg
const char * poptPeekArg(poptContext con)
Definition: popt.c:1582
poptSetExecPath
void poptSetExecPath(poptContext con, const char *path, int allowAbsolute)
Definition: popt.c:66
poptBitsAdd
int poptBitsAdd(poptBits bits, const char *s)
Definition: popt.c:795
poptSetOtherOptionHelp
void poptSetOtherOptionHelp(poptContext con, const char *text)
Definition: popthelp.c:927
poptOption::arg
void * arg
Definition: popt.h:133
poptItem_s::argc
int argc
Definition: popt.h:159
poptHelpOptions
struct poptOption poptHelpOptions[]
Auto help table options.
Definition: popthelp.c:73
poptAlias::argc
int argc
Definition: popt.h:148
poptFini
poptContext poptFini(poptContext con)
Definition: poptconfig.c:561
poptSaveLongLong
int poptSaveLongLong(long long *arg, unsigned int argInfo, long long aLongLong)
Save a long long, performing logical operation with value.
Definition: popt.c:988
poptOption::shortName
char shortName
Definition: popt.h:130
_poptBitsN
unsigned int _poptBitsN
Definition: popt.c:766
poptBitsDel
int poptBitsDel(poptBits bits, const char *s)
Definition: popt.c:848
poptBits
struct poptBits_s * poptBits
poptSaveBits
int poptSaveBits(poptBits *bitsp, unsigned int argInfo, const char *s)
Save a string into a bit set (experimental).
Definition: popt.c:928
poptSaveInt
int poptSaveInt(int *arg, unsigned int argInfo, long aLong)
Save an integer, performing logical operation with value.
Definition: popt.c:1066
poptStuffArgs
int poptStuffArgs(poptContext con, const char **argv)
Definition: popt.c:1762
poptHelpOptionsI18N
struct poptOption * poptHelpOptionsI18N
Definition: popthelp.c:97
poptOption::val
int val
Definition: popt.h:134
poptAliasOptions
struct poptOption poptAliasOptions[]
Empty table marker to enable displaying popt alias/exec options.
Definition: popthelp.c:64
poptBitsArgs
int poptBitsArgs(poptContext con, poptBits *ap)
Definition: popt.c:907
poptParseArgvString
int poptParseArgvString(const char *s, int *argcPtr, const char ***argvPtr)
Definition: poptparse.c:54
poptContext
struct poptContext_s * poptContext
Definition: popt.h:202
poptItem
struct poptItem_s * poptItem
poptConfigFileToString
int poptConfigFileToString(FILE *fp, char **argstrp, int flags)
Definition: poptparse.c:131
poptItem_s
Definition: popt.h:157
poptOption::descrip
const char * descrip
Definition: popt.h:136
poptItem_s::argv
const char ** argv
Definition: popt.h:161
poptAddItem
int poptAddItem(poptContext con, poptItem newItem, int flags)
Definition: popt.c:1668
poptSaveShort
int poptSaveShort(short *arg, unsigned int argInfo, long aLong)
Save a short integer, performing logical operation with value.
Definition: popt.c:1099
poptStrerror
const char * poptStrerror(const int error)
Definition: popt.c:1730
poptSaveLong
int poptSaveLong(long *arg, unsigned int argInfo, long aLong)
Save a long, performing logical operation with value.
Definition: popt.c:1033
poptSaveString
int poptSaveString(const char ***argvp, unsigned int argInfo, const char *val)
Add a string to an argv array.
Definition: popt.c:963
poptGetArg
const char * poptGetArg(poptContext con)
Definition: popt.c:1574
poptSaneFile
int poptSaneFile(const char *fn)
Definition: poptconfig.c:141
poptItem_s::option
struct poptOption option
Definition: popt.h:158
poptResetContext
void poptResetContext(poptContext con)
Definition: popt.c:226
poptOption
Definition: popt.h:127
poptAlias::shortName
char shortName
Definition: popt.h:147
poptReadDefaultConfig
int poptReadDefaultConfig(poptContext con, int useEnv)
Definition: poptconfig.c:501
poptBitsChk
int poptBitsChk(poptBits bits, const char *s)
Definition: popt.c:814

Generated for popt by  doxygen 1.8.17