Annotation of embedaddon/rsync/popt/poptint.h, revision 1.1.1.1

1.1       misho       1: /** \ingroup popt
                      2:  * \file popt/poptint.h
                      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_POPTINT
                     10: #define H_POPTINT
                     11: 
                     12: /**
                     13:  * Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
                     14:  * @param p            memory to free
                     15:  * @retval             NULL always
                     16:  */
                     17: /*@unused@*/ static inline /*@null@*/ void *
                     18: _free(/*@only@*/ /*@null@*/ const void * p)
                     19:        /*@modifies p @*/
                     20: {
                     21:     if (p != NULL)     free((void *)p);
                     22:     return NULL;
                     23: }
                     24: 
                     25: static inline int
                     26: isSpace(const char *ptr)
                     27: {
                     28:     return isspace(*(unsigned char *)ptr);
                     29: }
                     30: 
                     31: /* Bit mask macros. */
                     32: /*@-exporttype -redef @*/
                     33: typedef        unsigned int __pbm_bits;
                     34: /*@=exporttype =redef @*/
                     35: #define        __PBM_NBITS             (8 * sizeof (__pbm_bits))
                     36: #define        __PBM_IX(d)             ((d) / __PBM_NBITS)
                     37: #define __PBM_MASK(d)          ((__pbm_bits) 1 << (((unsigned)(d)) % __PBM_NBITS))
                     38: /*@-exporttype -redef @*/
                     39: typedef struct {
                     40:     __pbm_bits bits[1];
                     41: } pbm_set;
                     42: /*@=exporttype =redef @*/
                     43: #define        __PBM_BITS(set) ((set)->bits)
                     44: 
                     45: #define        PBM_ALLOC(d)    calloc(__PBM_IX (d) + 1, sizeof(__pbm_bits))
                     46: #define        PBM_FREE(s)     _free(s);
                     47: #define PBM_SET(d, s)   (__PBM_BITS (s)[__PBM_IX (d)] |= __PBM_MASK (d))
                     48: #define PBM_CLR(d, s)   (__PBM_BITS (s)[__PBM_IX (d)] &= ~__PBM_MASK (d))
                     49: #define PBM_ISSET(d, s) ((__PBM_BITS (s)[__PBM_IX (d)] & __PBM_MASK (d)) != 0)
                     50: 
                     51: struct optionStackEntry {
                     52:     int argc;
                     53: /*@only@*/ /*@null@*/
                     54:     const char ** argv;
                     55: /*@only@*/ /*@null@*/
                     56:     pbm_set * argb;
                     57:     int next;
                     58: /*@only@*/ /*@null@*/
                     59:     const char * nextArg;
                     60: /*@observer@*/ /*@null@*/
                     61:     const char * nextCharArg;
                     62: /*@dependent@*/ /*@null@*/
                     63:     poptItem currAlias;
                     64:     int stuffed;
                     65: };
                     66: 
                     67: struct poptContext_s {
                     68:     struct optionStackEntry optionStack[POPT_OPTION_DEPTH];
                     69: /*@dependent@*/
                     70:     struct optionStackEntry * os;
                     71: /*@owned@*/ /*@null@*/
                     72:     const char ** leftovers;
                     73:     int numLeftovers;
                     74:     int nextLeftover;
                     75: /*@keep@*/
                     76:     const struct poptOption * options;
                     77:     int restLeftover;
                     78: /*@only@*/ /*@null@*/
                     79:     const char * appName;
                     80: /*@only@*/ /*@null@*/
                     81:     poptItem aliases;
                     82:     int numAliases;
                     83:     int flags;
                     84: /*@owned@*/ /*@null@*/
                     85:     poptItem execs;
                     86:     int numExecs;
                     87: /*@only@*/ /*@null@*/
                     88:     const char ** finalArgv;
                     89:     int finalArgvCount;
                     90:     int finalArgvAlloced;
                     91: /*@dependent@*/ /*@null@*/
                     92:     poptItem doExec;
                     93: /*@only@*/
                     94:     const char * execPath;
                     95:     int execAbsolute;
                     96: /*@only@*/ /*@relnull@*/
                     97:     const char * otherHelp;
                     98: /*@null@*/
                     99:     pbm_set * arg_strip;
                    100: };
                    101: 
                    102: #ifdef HAVE_LIBINTL_H
                    103: #include <libintl.h>
                    104: #endif
                    105: 
                    106: #if defined(HAVE_GETTEXT) && !defined(__LCLINT__)
                    107: #define _(foo) gettext(foo)
                    108: #else
                    109: #define _(foo) foo
                    110: #endif
                    111: 
                    112: #if defined(HAVE_DCGETTEXT) && !defined(__LCLINT__)
                    113: #define D_(dom, str) dgettext(dom, str)
                    114: #define POPT_(foo) D_("popt", foo)
                    115: #else
                    116: #define D_(dom, str) str
                    117: #define POPT_(foo) foo
                    118: #endif
                    119: 
                    120: #define N_(foo) foo
                    121: 
                    122: #endif

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