Annotation of embedaddon/rsync/popt/popt.h, revision 1.1

1.1     ! misho       1: /** \file popt/popt.h
        !             2:  * \ingroup popt
        !             3:  */
        !             4: 
        !             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: 
        !            16: /** \ingroup popt
        !            17:  * \name Arg type identifiers
        !            18:  */
        !            19: /*@{*/
        !            20: #define POPT_ARG_NONE          0       /*!< no arg */
        !            21: #define POPT_ARG_STRING                1       /*!< arg will be saved as string */
        !            22: #define POPT_ARG_INT           2       /*!< arg will be converted to int */
        !            23: #define POPT_ARG_LONG          3       /*!< arg will be converted to long */
        !            24: #define POPT_ARG_INCLUDE_TABLE 4       /*!< arg points to table */
        !            25: #define POPT_ARG_CALLBACK      5       /*!< table-wide callback... must be
        !            26:                                           set first in table; arg points 
        !            27:                                           to callback, descrip points to 
        !            28:                                           callback data to pass */
        !            29: #define POPT_ARG_INTL_DOMAIN    6       /*!< set the translation domain
        !            30:                                           for this table and any
        !            31:                                           included tables; arg points
        !            32:                                           to the domain string */
        !            33: #define POPT_ARG_VAL           7       /*!< arg should take value val */
        !            34: #define        POPT_ARG_FLOAT          8       /*!< arg will be converted to float */
        !            35: #define        POPT_ARG_DOUBLE         9       /*!< arg will be converted to double */
        !            36: 
        !            37: #define POPT_ARG_MASK          0x0000FFFF
        !            38: /*@}*/
        !            39: 
        !            40: /** \ingroup popt
        !            41:  * \name Arg modifiers
        !            42:  */
        !            43: /*@{*/
        !            44: #define POPT_ARGFLAG_ONEDASH   0x80000000  /*!< allow -longoption */
        !            45: #define POPT_ARGFLAG_DOC_HIDDEN 0x40000000  /*!< don't show in help/usage */
        !            46: #define POPT_ARGFLAG_STRIP     0x20000000  /*!< strip this arg from argv(only applies to long args) */
        !            47: #define        POPT_ARGFLAG_OPTIONAL   0x10000000  /*!< arg may be missing */
        !            48: 
        !            49: #define        POPT_ARGFLAG_OR         0x08000000  /*!< arg will be or'ed */
        !            50: #define        POPT_ARGFLAG_NOR        0x09000000  /*!< arg will be nor'ed */
        !            51: #define        POPT_ARGFLAG_AND        0x04000000  /*!< arg will be and'ed */
        !            52: #define        POPT_ARGFLAG_NAND       0x05000000  /*!< arg will be nand'ed */
        !            53: #define        POPT_ARGFLAG_XOR        0x02000000  /*!< arg will be xor'ed */
        !            54: #define        POPT_ARGFLAG_NOT        0x01000000  /*!< arg will be negated */
        !            55: #define POPT_ARGFLAG_LOGICALOPS \
        !            56:         (POPT_ARGFLAG_OR|POPT_ARGFLAG_AND|POPT_ARGFLAG_XOR)
        !            57: 
        !            58: #define        POPT_BIT_SET    (POPT_ARG_VAL|POPT_ARGFLAG_OR)
        !            59:                                        /*!< set arg bit(s) */
        !            60: #define        POPT_BIT_CLR    (POPT_ARG_VAL|POPT_ARGFLAG_NAND)
        !            61:                                        /*!< clear arg bit(s) */
        !            62: 
        !            63: #define        POPT_ARGFLAG_SHOW_DEFAULT 0x00800000 /*!< show default value in --help */
        !            64: 
        !            65: /*@}*/
        !            66: 
        !            67: /** \ingroup popt
        !            68:  * \name Callback modifiers
        !            69:  */
        !            70: /*@{*/
        !            71: #define POPT_CBFLAG_PRE                0x80000000  /*!< call the callback before parse */
        !            72: #define POPT_CBFLAG_POST       0x40000000  /*!< call the callback after parse */
        !            73: #define POPT_CBFLAG_INC_DATA   0x20000000  /*!< use data from the include line,
        !            74:                                               not the subtable */
        !            75: #define POPT_CBFLAG_SKIPOPTION 0x10000000  /*!< don't callback with option */
        !            76: #define POPT_CBFLAG_CONTINUE   0x08000000  /*!< continue callbacks with option */
        !            77: /*@}*/
        !            78: 
        !            79: /** \ingroup popt
        !            80:  * \name Error return values
        !            81:  */
        !            82: /*@{*/
        !            83: #define POPT_ERROR_NOARG       -10     /*!< missing argument */
        !            84: #define POPT_ERROR_BADOPT      -11     /*!< unknown option */
        !            85: #define POPT_ERROR_UNWANTEDARG -12     /*!< option does not take an argument */
        !            86: #define POPT_ERROR_OPTSTOODEEP -13     /*!< aliases nested too deeply */
        !            87: #define POPT_ERROR_BADQUOTE    -15     /*!< error in paramter quoting */
        !            88: #define POPT_ERROR_ERRNO       -16     /*!< errno set, use strerror(errno) */
        !            89: #define POPT_ERROR_BADNUMBER   -17     /*!< invalid numeric value */
        !            90: #define POPT_ERROR_OVERFLOW    -18     /*!< number too large or too small */
        !            91: #define        POPT_ERROR_BADOPERATION -19     /*!< mutually exclusive logical operations requested */
        !            92: #define        POPT_ERROR_NULLARG      -20     /*!< opt->arg should not be NULL */
        !            93: #define        POPT_ERROR_MALLOC       -21     /*!< memory allocation failed */
        !            94: /*@}*/
        !            95: 
        !            96: /** \ingroup popt
        !            97:  * \name poptBadOption() flags
        !            98:  */
        !            99: /*@{*/
        !           100: #define POPT_BADOPTION_NOALIAS  (1 << 0)  /*!< don't go into an alias */
        !           101: /*@}*/
        !           102: 
        !           103: /** \ingroup popt
        !           104:  * \name poptGetContext() flags
        !           105:  */
        !           106: /*@{*/
        !           107: #define POPT_CONTEXT_NO_EXEC   (1 << 0)  /*!< ignore exec expansions */
        !           108: #define POPT_CONTEXT_KEEP_FIRST        (1 << 1)  /*!< pay attention to argv[0] */
        !           109: #define POPT_CONTEXT_POSIXMEHARDER (1 << 2) /*!< options can't follow args */
        !           110: #define POPT_CONTEXT_ARG_OPTS  (1 << 4) /*!< return args as options with value 0 */
        !           111: /*@}*/
        !           112: 
        !           113: /** \ingroup popt
        !           114:  */
        !           115: struct poptOption {
        !           116: /*@observer@*/ /*@null@*/
        !           117:     const char * longName;     /*!< may be NULL */
        !           118:     char shortName;            /*!< may be NUL */
        !           119:     int argInfo;
        !           120: /*@shared@*/ /*@null@*/
        !           121:     void * arg;                        /*!< depends on argInfo */
        !           122:     int val;                   /*!< 0 means don't return, just update flag */
        !           123: /*@observer@*/ /*@null@*/
        !           124:     const char * descrip;      /*!< description for autohelp -- may be NULL */
        !           125: /*@observer@*/ /*@null@*/
        !           126:     const char * argDescrip;   /*!< argument description for autohelp */
        !           127: };
        !           128: 
        !           129: /** \ingroup popt
        !           130:  * A popt alias argument for poptAddAlias().
        !           131:  */
        !           132: struct poptAlias {
        !           133: /*@owned@*/ /*@null@*/
        !           134:     const char * longName;     /*!< may be NULL */
        !           135:     char shortName;            /*!< may be NUL */
        !           136:     int argc;
        !           137: /*@owned@*/
        !           138:     const char ** argv;                /*!< must be free()able */
        !           139: };
        !           140: 
        !           141: /** \ingroup popt
        !           142:  * A popt alias or exec argument for poptAddItem().
        !           143:  */
        !           144: /*@-exporttype@*/
        !           145: typedef struct poptItem_s {
        !           146:     struct poptOption option;  /*!< alias/exec name(s) and description. */
        !           147:     int argc;                  /*!< (alias) no. of args. */
        !           148: /*@owned@*/
        !           149:     const char ** argv;                /*!< (alias) args, must be free()able. */
        !           150: } * poptItem;
        !           151: /*@=exporttype@*/
        !           152: 
        !           153: /** \ingroup popt
        !           154:  * \name Auto-generated help/usage
        !           155:  */
        !           156: /*@{*/
        !           157: 
        !           158: /**
        !           159:  * Empty table marker to enable displaying popt alias/exec options.
        !           160:  */
        !           161: /*@-exportvar@*/
        !           162: /*@unchecked@*/ /*@observer@*/
        !           163: extern struct poptOption poptAliasOptions[];
        !           164: /*@=exportvar@*/
        !           165: #define POPT_AUTOALIAS { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptAliasOptions, \
        !           166:                        0, "Options implemented via popt alias/exec:", NULL },
        !           167: 
        !           168: /**
        !           169:  * Auto help table options.
        !           170:  */
        !           171: /*@-exportvar@*/
        !           172: /*@unchecked@*/ /*@observer@*/
        !           173: extern struct poptOption poptHelpOptions[];
        !           174: /*@=exportvar@*/
        !           175: 
        !           176: /*@-exportvar@*/
        !           177: /*@unchecked@*/ /*@observer@*/
        !           178: extern struct poptOption * poptHelpOptionsI18N;
        !           179: /*@=exportvar@*/
        !           180: 
        !           181: #define POPT_AUTOHELP { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptHelpOptions, \
        !           182:                        0, "Help options:", NULL },
        !           183: 
        !           184: #define POPT_TABLEEND { NULL, '\0', 0, 0, 0, NULL, NULL }
        !           185: /*@}*/
        !           186: 
        !           187: /** \ingroup popt
        !           188:  */
        !           189: /*@-exporttype@*/
        !           190: typedef /*@abstract@*/ struct poptContext_s * poptContext;
        !           191: /*@=exporttype@*/
        !           192: 
        !           193: /** \ingroup popt
        !           194:  */
        !           195: #ifndef __cplusplus
        !           196: /*@-exporttype -typeuse@*/
        !           197: typedef struct poptOption * poptOption;
        !           198: /*@=exporttype =typeuse@*/
        !           199: #endif
        !           200: 
        !           201: /*@-exportconst@*/
        !           202: enum poptCallbackReason {
        !           203:     POPT_CALLBACK_REASON_PRE   = 0, 
        !           204:     POPT_CALLBACK_REASON_POST  = 1,
        !           205:     POPT_CALLBACK_REASON_OPTION = 2
        !           206: };
        !           207: /*@=exportconst@*/
        !           208: 
        !           209: #ifdef __cplusplus
        !           210: extern "C" {
        !           211: #endif
        !           212: /*@-type@*/
        !           213: 
        !           214: /** \ingroup popt
        !           215:  * Table callback prototype.
        !           216:  * @param con          context
        !           217:  * @param reason       reason for callback
        !           218:  * @param opt          option that triggered callback
        !           219:  * @param arg          @todo Document.
        !           220:  * @param data         @todo Document.
        !           221:  */
        !           222: typedef void (*poptCallbackType) (poptContext con, 
        !           223:                enum poptCallbackReason reason,
        !           224:                /*@null@*/ const struct poptOption * opt,
        !           225:                /*@null@*/ const char * arg,
        !           226:                /*@null@*/ const void * data)
        !           227:        /*@globals internalState @*/
        !           228:        /*@modifies internalState @*/;
        !           229: 
        !           230: /** \ingroup popt
        !           231:  * Initialize popt context.
        !           232:  * @param name         context name (usually argv[0] program name)
        !           233:  * @param argc         no. of arguments
        !           234:  * @param argv         argument array
        !           235:  * @param options      address of popt option table
        !           236:  * @param flags                or'd POPT_CONTEXT_* bits
        !           237:  * @return             initialized popt context
        !           238:  */
        !           239: /*@only@*/ /*@null@*/
        !           240: poptContext poptGetContext(
        !           241:                /*@dependent@*/ /*@keep@*/ const char * name,
        !           242:                int argc, /*@dependent@*/ /*@keep@*/ const char ** argv,
        !           243:                /*@dependent@*/ /*@keep@*/ const struct poptOption * options,
        !           244:                int flags)
        !           245:        /*@*/;
        !           246: 
        !           247: /** \ingroup popt
        !           248:  * Reinitialize popt context.
        !           249:  * @param con          context
        !           250:  */
        !           251: /*@unused@*/
        !           252: void poptResetContext(/*@null@*/poptContext con)
        !           253:        /*@modifies con @*/;
        !           254: 
        !           255: /** \ingroup popt
        !           256:  * Return value of next option found.
        !           257:  * @param con          context
        !           258:  * @return             next option val, -1 on last item, POPT_ERROR_* on error
        !           259:  */
        !           260: int poptGetNextOpt(/*@null@*/poptContext con)
        !           261:        /*@globals fileSystem, internalState @*/
        !           262:        /*@modifies con, fileSystem, internalState @*/;
        !           263: 
        !           264: /** \ingroup popt
        !           265:  * Return next option argument (if any).
        !           266:  * @param con          context
        !           267:  * @return             option argument, NULL if no argument is available
        !           268:  */
        !           269: /*@observer@*/ /*@null@*/ /*@unused@*/
        !           270: const char * poptGetOptArg(/*@null@*/poptContext con)
        !           271:        /*@modifies con @*/;
        !           272: 
        !           273: /** \ingroup popt
        !           274:  * Return next argument.
        !           275:  * @param con          context
        !           276:  * @return             next argument, NULL if no argument is available
        !           277:  */
        !           278: /*@observer@*/ /*@null@*/ /*@unused@*/
        !           279: const char * poptGetArg(/*@null@*/poptContext con)
        !           280:        /*@modifies con @*/;
        !           281: 
        !           282: /** \ingroup popt
        !           283:  * Peek at current argument.
        !           284:  * @param con          context
        !           285:  * @return             current argument, NULL if no argument is available
        !           286:  */
        !           287: /*@observer@*/ /*@null@*/ /*@unused@*/
        !           288: const char * poptPeekArg(/*@null@*/poptContext con)
        !           289:        /*@*/;
        !           290: 
        !           291: /** \ingroup popt
        !           292:  * Return remaining arguments.
        !           293:  * @param con          context
        !           294:  * @return             argument array, NULL terminated
        !           295:  */
        !           296: /*@observer@*/ /*@null@*/
        !           297: const char ** poptGetArgs(/*@null@*/poptContext con)
        !           298:        /*@modifies con @*/;
        !           299: 
        !           300: /** \ingroup popt
        !           301:  * Return the option which caused the most recent error.
        !           302:  * @param con          context
        !           303:  * @param flags
        !           304:  * @return             offending option
        !           305:  */
        !           306: /*@observer@*/
        !           307: const char * poptBadOption(/*@null@*/poptContext con, int flags)
        !           308:        /*@*/;
        !           309: 
        !           310: /** \ingroup popt
        !           311:  * Destroy context.
        !           312:  * @param con          context
        !           313:  * @return             NULL always
        !           314:  */
        !           315: /*@null@*/
        !           316: poptContext poptFreeContext( /*@only@*/ /*@null@*/ poptContext con)
        !           317:        /*@modifies con @*/;
        !           318: 
        !           319: /** \ingroup popt
        !           320:  * Add arguments to context.
        !           321:  * @param con          context
        !           322:  * @param argv         argument array, NULL terminated
        !           323:  * @return             0 on success, POPT_ERROR_OPTSTOODEEP on failure
        !           324:  */
        !           325: /*@unused@*/
        !           326: int poptStuffArgs(poptContext con, /*@keep@*/ const char ** argv)
        !           327:        /*@modifies con @*/;
        !           328: 
        !           329: /** \ingroup popt
        !           330:  * Add alias to context.
        !           331:  * @todo Pass alias by reference, not value.
        !           332:  * @deprecated Use poptAddItem instead.
        !           333:  * @param con          context
        !           334:  * @param alias                alias to add
        !           335:  * @param flags                (unused)
        !           336:  * @return             0 on success
        !           337:  */
        !           338: /*@unused@*/
        !           339: int poptAddAlias(poptContext con, struct poptAlias alias, int flags)
        !           340:        /*@modifies con @*/;
        !           341: 
        !           342: /** \ingroup popt
        !           343:  * Add alias/exec item to context.
        !           344:  * @param con          context
        !           345:  * @param newItem      alias/exec item to add
        !           346:  * @param flags                0 for alias, 1 for exec
        !           347:  * @return             0 on success
        !           348:  */
        !           349: int poptAddItem(poptContext con, poptItem newItem, int flags)
        !           350:        /*@modifies con @*/;
        !           351: 
        !           352: /** \ingroup popt
        !           353:  * Read configuration file.
        !           354:  * @param con          context
        !           355:  * @param fn           file name to read
        !           356:  * @return             0 on success, POPT_ERROR_ERRNO on failure
        !           357:  */
        !           358: int poptReadConfigFile(poptContext con, const char * fn)
        !           359:        /*@globals errno, fileSystem, internalState @*/
        !           360:        /*@modifies con->execs, con->numExecs,
        !           361:                errno, fileSystem, internalState @*/;
        !           362: 
        !           363: /** \ingroup popt
        !           364:  * Read default configuration from /etc/popt and $HOME/.popt.
        !           365:  * @param con          context
        !           366:  * @param useEnv       (unused)
        !           367:  * @return             0 on success, POPT_ERROR_ERRNO on failure
        !           368:  */
        !           369: /*@unused@*/
        !           370: int poptReadDefaultConfig(poptContext con, /*@unused@*/ int useEnv)
        !           371:        /*@globals fileSystem, internalState @*/
        !           372:        /*@modifies con->execs, con->numExecs,
        !           373:                fileSystem, internalState @*/;
        !           374: 
        !           375: /** \ingroup popt
        !           376:  * Duplicate an argument array.
        !           377:  * @note: The argument array is malloc'd as a single area, so only argv must
        !           378:  * be free'd.
        !           379:  *
        !           380:  * @param argc         no. of arguments
        !           381:  * @param argv         argument array
        !           382:  * @retval argcPtr     address of returned no. of arguments
        !           383:  * @retval argvPtr     address of returned argument array
        !           384:  * @return             0 on success, POPT_ERROR_NOARG on failure
        !           385:  */
        !           386: int poptDupArgv(int argc, /*@null@*/ const char **argv,
        !           387:                /*@null@*/ /*@out@*/ int * argcPtr,
        !           388:                /*@null@*/ /*@out@*/ const char *** argvPtr)
        !           389:        /*@modifies *argcPtr, *argvPtr @*/;
        !           390: 
        !           391: /** \ingroup popt
        !           392:  * Parse a string into an argument array.
        !           393:  * The parse allows ', ", and \ quoting, but ' is treated the same as " and
        !           394:  * both may include \ quotes.
        !           395:  * @note: The argument array is malloc'd as a single area, so only argv must
        !           396:  * be free'd.
        !           397:  *
        !           398:  * @param s            string to parse
        !           399:  * @retval argcPtr     address of returned no. of arguments
        !           400:  * @retval argvPtr     address of returned argument array
        !           401:  */
        !           402: int poptParseArgvString(const char * s,
        !           403:                /*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr)
        !           404:        /*@modifies *argcPtr, *argvPtr @*/;
        !           405: 
        !           406: /** \ingroup popt
        !           407:  * Parses an input configuration file and returns an string that is a 
        !           408:  * command line.  For use with popt.  You must free the return value when done.
        !           409:  *
        !           410:  * Given the file:
        !           411: \verbatim
        !           412: # this line is ignored
        !           413:     #   this one too
        !           414: aaa
        !           415:   bbb
        !           416:     ccc   
        !           417: bla=bla
        !           418: 
        !           419: this_is   =   fdsafdas
        !           420:      bad_line=        
        !           421:   reall bad line  
        !           422:   reall bad line  = again
        !           423: 5555=   55555   
        !           424:   test = with lots of spaces
        !           425: \endverbatim
        !           426: *
        !           427: * The result is:
        !           428: \verbatim
        !           429: --aaa --bbb --ccc --bla="bla" --this_is="fdsafdas" --5555="55555" --test="with lots of spaces"
        !           430: \endverbatim
        !           431: *
        !           432: * Passing this to poptParseArgvString() yields an argv of:
        !           433: \verbatim
        !           434: '--aaa'
        !           435: '--bbb' 
        !           436: '--ccc' 
        !           437: '--bla=bla' 
        !           438: '--this_is=fdsafdas' 
        !           439: '--5555=55555' 
        !           440: '--test=with lots of spaces' 
        !           441: \endverbatim
        !           442:  *
        !           443:  * @bug NULL is returned if file line is too long.
        !           444:  * @bug Silently ignores invalid lines.
        !           445:  *
        !           446:  * @param fp           file handle to read
        !           447:  * @param *argstrp     return string of options (malloc'd)
        !           448:  * @param flags                unused
        !           449:  * @return             0 on success
        !           450:  * @see                        poptParseArgvString
        !           451:  */
        !           452: /*@-fcnuse@*/
        !           453: int poptConfigFileToString(FILE *fp, /*@out@*/ char ** argstrp, int flags)
        !           454:        /*@globals fileSystem @*/
        !           455:        /*@modifies *fp, *argstrp, fileSystem @*/;
        !           456: /*@=fcnuse@*/
        !           457: 
        !           458: /** \ingroup popt
        !           459:  * Return formatted error string for popt failure.
        !           460:  * @param error                popt error
        !           461:  * @return             error string
        !           462:  */
        !           463: /*@observer@*/
        !           464: const char * poptStrerror(const int error)
        !           465:        /*@*/;
        !           466: 
        !           467: /** \ingroup popt
        !           468:  * Limit search for executables.
        !           469:  * @param con          context
        !           470:  * @param path         single path to search for executables
        !           471:  * @param allowAbsolute        absolute paths only?
        !           472:  */
        !           473: /*@unused@*/
        !           474: void poptSetExecPath(poptContext con, const char * path, int allowAbsolute)
        !           475:        /*@modifies con @*/;
        !           476: 
        !           477: /** \ingroup popt
        !           478:  * Print detailed description of options.
        !           479:  * @param con          context
        !           480:  * @param fp           ouput file handle
        !           481:  * @param flags                (unused)
        !           482:  */
        !           483: void poptPrintHelp(poptContext con, FILE * fp, /*@unused@*/ int flags)
        !           484:        /*@globals fileSystem @*/
        !           485:        /*@modifies *fp, fileSystem @*/;
        !           486: 
        !           487: /** \ingroup popt
        !           488:  * Print terse description of options.
        !           489:  * @param con          context
        !           490:  * @param fp           ouput file handle
        !           491:  * @param flags                (unused)
        !           492:  */
        !           493: void poptPrintUsage(poptContext con, FILE * fp, /*@unused@*/ int flags)
        !           494:        /*@globals fileSystem @*/
        !           495:        /*@modifies *fp, fileSystem @*/;
        !           496: 
        !           497: /** \ingroup popt
        !           498:  * Provide text to replace default "[OPTION...]" in help/usage output.
        !           499:  * @param con          context
        !           500:  * @param text         replacement text
        !           501:  */
        !           502: /*@-fcnuse@*/
        !           503: void poptSetOtherOptionHelp(poptContext con, const char * text)
        !           504:        /*@modifies con @*/;
        !           505: /*@=fcnuse@*/
        !           506: 
        !           507: /** \ingroup popt
        !           508:  * Return argv[0] from context.
        !           509:  * @param con          context
        !           510:  * @return             argv[0]
        !           511:  */
        !           512: /*@-fcnuse@*/
        !           513: /*@observer@*/
        !           514: const char * poptGetInvocationName(poptContext con)
        !           515:        /*@*/;
        !           516: /*@=fcnuse@*/
        !           517: 
        !           518: /** \ingroup popt
        !           519:  * Shuffle argv pointers to remove stripped args, returns new argc.
        !           520:  * @param con          context
        !           521:  * @param argc         no. of args
        !           522:  * @param argv         arg vector
        !           523:  * @return             new argc
        !           524:  */
        !           525: /*@-fcnuse@*/
        !           526: int poptStrippedArgv(poptContext con, int argc, char ** argv)
        !           527:        /*@modifies *argv @*/;
        !           528: /*@=fcnuse@*/
        !           529: 
        !           530: /**
        !           531:  * Save a long, performing logical operation with value.
        !           532:  * @warning Alignment check may be too strict on certain platorms.
        !           533:  * @param arg          integer pointer, aligned on int boundary.
        !           534:  * @param argInfo      logical operation (see POPT_ARGFLAG_*)
        !           535:  * @param aLong                value to use
        !           536:  * @return             0 on success, POPT_ERROR_NULLARG/POPT_ERROR_BADOPERATION
        !           537:  */
        !           538: /*@-incondefs@*/
        !           539: /*@unused@*/
        !           540: int poptSaveLong(/*@null@*/ long * arg, int argInfo, long aLong)
        !           541:        /*@modifies *arg @*/
        !           542:        /*@requires maxSet(arg) >= 0 /\ maxRead(arg) == 0 @*/;
        !           543: /*@=incondefs@*/
        !           544: 
        !           545: /**
        !           546:  * Save an integer, performing logical operation with value.
        !           547:  * @warning Alignment check may be too strict on certain platorms.
        !           548:  * @param arg          integer pointer, aligned on int boundary.
        !           549:  * @param argInfo      logical operation (see POPT_ARGFLAG_*)
        !           550:  * @param aLong                value to use
        !           551:  * @return             0 on success, POPT_ERROR_NULLARG/POPT_ERROR_BADOPERATION
        !           552:  */
        !           553: /*@-incondefs@*/
        !           554: /*@unused@*/
        !           555: int poptSaveInt(/*@null@*/ int * arg, int argInfo, long aLong)
        !           556:        /*@modifies *arg @*/
        !           557:        /*@requires maxSet(arg) >= 0 /\ maxRead(arg) == 0 @*/;
        !           558: /*@=incondefs@*/
        !           559: 
        !           560: /*@=type@*/
        !           561: #ifdef  __cplusplus
        !           562: }
        !           563: #endif
        !           564: 
        !           565: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>