rpmio/rpmio.h

Go to the documentation of this file.
00001 #ifndef H_RPMIO
00002 #define H_RPMIO
00003 
00009 #include <sys/types.h>
00010 #include <sys/stat.h>
00011 #include <dirent.h>
00012 /*@-noparams@*/
00013 #include "glob.h"
00014 /*@=noparams@*/
00015 #include <stdio.h>
00016 #include <stdlib.h>
00017 #include <unistd.h>
00018 
00021 typedef /*@abstract@*/ struct pgpDig_s * pgpDig;
00022 
00025 typedef /*@abstract@*/ struct pgpDigParams_s * pgpDigParams;
00026 
00034 #if !defined(__LCLINT__) && defined(__GLIBC__) && \
00035         (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2))
00036 #define USE_COOKIE_SEEK_POINTER 1
00037 typedef _IO_off64_t     _libio_off_t;
00038 typedef _libio_off_t *  _libio_pos_t;
00039 #else
00040 typedef off_t           _libio_off_t;
00041 typedef off_t           _libio_pos_t;
00042 #endif
00043 
00047 typedef /*@abstract@*/ /*@refcounted@*/ struct _FD_s * FD_t;
00048 
00051 typedef /*@observer@*/ struct FDIO_s * FDIO_t;
00052 
00053 #ifdef __cplusplus
00054 extern "C" {
00055 #endif
00056 
00061 
00064 typedef ssize_t (*fdio_read_function_t) (void *cookie, char *buf, size_t nbytes)
00065         /*@globals errno, fileSystem @*/
00066         /*@modifies *cookie, errno, fileSystem @*/
00067         /*@requires maxSet(buf) >= (nbytes - 1) @*/
00068         /*@ensures maxRead(buf) == result @*/ ;
00069 
00072 typedef ssize_t (*fdio_write_function_t) (void *cookie, const char *buf, size_t nbytes)
00073         /*@globals errno, fileSystem @*/
00074         /*@modifies *cookie, errno, fileSystem @*/;
00075 
00078 typedef int (*fdio_seek_function_t) (void *cookie, _libio_pos_t pos, int whence)
00079         /*@globals errno, fileSystem @*/
00080         /*@modifies *cookie, errno, fileSystem @*/;
00081 
00084 typedef int (*fdio_close_function_t) (void *cookie)
00085         /*@globals errno, fileSystem, systemState @*/
00086         /*@modifies *cookie, errno, fileSystem, systemState @*/;
00087 
00088 
00091 typedef /*@only@*/ /*@null@*/ FD_t (*fdio_ref_function_t) ( /*@only@*/ void * cookie,
00092                 const char * msg, const char * file, unsigned line)
00093         /*@globals fileSystem @*/
00094         /*@modifies fileSystem @*/;
00095 
00098 typedef /*@only@*/ /*@null@*/ FD_t (*fdio_deref_function_t) ( /*@only@*/ FD_t fd,
00099                 const char * msg, const char * file, unsigned line)
00100         /*@globals fileSystem @*/
00101         /*@modifies fd, fileSystem @*/;
00102 
00103 
00106 typedef /*@only@*/ /*@null@*/ FD_t (*fdio_new_function_t) (const char * msg,
00107                 const char * file, unsigned line)
00108         /*@globals fileSystem @*/
00109         /*@modifies fileSystem @*/;
00110 
00111 
00114 typedef int (*fdio_fileno_function_t) (void * cookie)
00115         /*@globals fileSystem @*/
00116         /*@modifies *cookie, fileSystem @*/;
00117 
00118 
00121 typedef FD_t (*fdio_open_function_t) (const char * path, int flags, mode_t mode)
00122         /*@globals errno, fileSystem @*/
00123         /*@modifies errno, fileSystem @*/;
00124 
00127 typedef FD_t (*fdio_fopen_function_t) (const char * path, const char * fmode)
00128         /*@globals fileSystem @*/
00129         /*@modifies fileSystem @*/;
00130 
00133 typedef void * (*fdio_ffileno_function_t) (FD_t fd)
00134         /*@globals fileSystem @*/
00135         /*@modifies fileSystem @*/;
00136 
00139 typedef int (*fdio_fflush_function_t) (FD_t fd)
00140         /*@globals fileSystem @*/
00141         /*@modifies fileSystem @*/;
00149 
00152 typedef int (*fdio_mkdir_function_t) (const char * path, mode_t mode)
00153         /*@globals errno, fileSystem @*/
00154         /*@modifies errno, fileSystem @*/;
00155 
00158 typedef int (*fdio_chdir_function_t) (const char * path)
00159         /*@globals errno, fileSystem @*/
00160         /*@modifies errno, fileSystem @*/;
00161 
00164 typedef int (*fdio_rmdir_function_t) (const char * path)
00165         /*@globals errno, fileSystem @*/
00166         /*@modifies errno, fileSystem @*/;
00167 
00170 typedef int (*fdio_rename_function_t) (const char * oldpath, const char * newpath)
00171         /*@globals errno, fileSystem @*/
00172         /*@modifies errno, fileSystem @*/;
00173 
00176 typedef int (*fdio_unlink_function_t) (const char * path)
00177         /*@globals errno, fileSystem @*/
00178         /*@modifies errno, fileSystem @*/;
00179 /*@-typeuse@*/
00180 
00183 typedef int (*fdio_stat_function_t) (const char * path, /*@out@*/ struct stat * st)
00184         /*@globals errno, fileSystem @*/
00185         /*@modifies *st, errno, fileSystem @*/;
00186 
00189 typedef int (*fdio_lstat_function_t) (const char * path, /*@out@*/ struct stat * st)
00190         /*@globals errno, fileSystem @*/
00191         /*@modifies *st, errno, fileSystem @*/;
00192 
00195 typedef int (*fdio_access_function_t) (const char * path, int amode)
00196         /*@globals errno, fileSystem @*/
00197         /*@modifies errno, fileSystem @*/;
00198 /*@=typeuse@*/
00204 struct FDIO_s {
00205   fdio_read_function_t          read;
00206   fdio_write_function_t         write;
00207   fdio_seek_function_t          seek;
00208   fdio_close_function_t         close;
00209 
00210   fdio_ref_function_t           _fdref;
00211   fdio_deref_function_t         _fdderef;
00212   fdio_new_function_t           _fdnew;
00213   fdio_fileno_function_t        _fileno;
00214 
00215   fdio_open_function_t          _open;
00216   fdio_fopen_function_t         _fopen;
00217   fdio_ffileno_function_t       _ffileno;
00218   fdio_fflush_function_t        _fflush;
00219 
00220   fdio_mkdir_function_t         _mkdir;
00221   fdio_chdir_function_t         _chdir;
00222   fdio_rmdir_function_t         _rmdir;
00223   fdio_rename_function_t        _rename;
00224   fdio_unlink_function_t        _unlink;
00225 };
00226 
00227 
00232 
00236 /*@observer@*/ const char * Fstrerror(/*@null@*/ FD_t fd)
00237         /*@*/;
00238 
00242 /*@-incondefs@*/
00243 size_t Fread(/*@out@*/ void * buf, size_t size, size_t nmemb, FD_t fd)
00244         /*@globals fileSystem @*/
00245         /*@modifies fd, *buf, fileSystem @*/
00246         /*@requires maxSet(buf) >= (nmemb - 1) @*/
00247         /*@ensures maxRead(buf) == result @*/;
00248 /*@=incondefs@*/
00249 
00253 /*@-incondefs@*/
00254 size_t Fwrite(const void * buf, size_t size, size_t nmemb, FD_t fd)
00255         /*@globals fileSystem @*/
00256         /*@modifies fd, fileSystem @*/
00257         /*@requires maxRead(buf) >= nmemb @*/;
00258 /*@=incondefs@*/
00259 
00263 int Fseek(FD_t fd, _libio_off_t offset, int whence)
00264         /*@globals fileSystem @*/
00265         /*@modifies fileSystem @*/;
00266 
00270 int Fclose( /*@killref@*/ FD_t fd)
00271         /*@globals fileSystem, internalState @*/
00272         /*@modifies fd, fileSystem, internalState @*/;
00273 
00276 /*@null@*/ FD_t Fdopen(FD_t ofd, const char * fmode)
00277         /*@globals fileSystem, internalState @*/
00278         /*@modifies ofd, fileSystem, internalState @*/;
00279 
00283 /*@null@*/ FD_t Fopen(/*@null@*/ const char * path,
00284                         /*@null@*/ const char * fmode)
00285         /*@globals h_errno, fileSystem, internalState @*/
00286         /*@modifies fileSystem, internalState @*/;
00287 
00288 
00292 int Fflush(/*@null@*/ FD_t fd)
00293         /*@globals fileSystem @*/
00294         /*@modifies fd, fileSystem @*/;
00295 
00299 int Ferror(/*@null@*/ FD_t fd)
00300         /*@*/;
00301 
00305 int Fileno(FD_t fd)
00306         /*@globals fileSystem @*/
00307         /*@modifies fileSystem@*/;
00308 
00312 /*@unused@*/
00313 int Fcntl(FD_t fd, int op, void *lip)
00314         /*@globals errno, fileSystem @*/
00315         /*@modifies fd, *lip, errno, fileSystem @*/;
00316 
00323 
00327 int Mkdir(const char * path, mode_t mode)
00328         /*@globals errno, h_errno, fileSystem, internalState @*/
00329         /*@modifies errno, fileSystem, internalState @*/;
00330 
00334 int Chdir(const char * path)
00335         /*@globals errno, h_errno, fileSystem, internalState @*/
00336         /*@modifies errno, fileSystem, internalState @*/;
00337 
00341 int Rmdir(const char * path)
00342         /*@globals errno, h_errno, fileSystem, internalState @*/
00343         /*@modifies errno, fileSystem, internalState @*/;
00344 
00349 int Chroot(const char * path)
00350         /*@globals errno, fileSystem, internalState @*/
00351         /*@modifies errno, fileSystem, internalState @*/;
00352 
00356 int Rename(const char * oldpath, const char * newpath)
00357         /*@globals errno, h_errno, fileSystem, internalState @*/
00358         /*@modifies errno, fileSystem, internalState @*/;
00359 
00363 int Link(const char * oldpath, const char * newpath)
00364         /*@globals errno, fileSystem, internalState @*/
00365         /*@modifies errno, fileSystem, internalState @*/;
00366 
00370 int Unlink(const char * path)
00371         /*@globals errno, h_errno, fileSystem, internalState @*/
00372         /*@modifies errno, fileSystem, internalState @*/;
00373 
00377 int Stat(const char * path, /*@out@*/ struct stat * st)
00378         /*@globals errno, h_errno, fileSystem, internalState @*/
00379         /*@modifies *st, errno, fileSystem, internalState @*/;
00380 
00384 int Lstat(const char * path, /*@out@*/ struct stat * st)
00385         /*@globals errno, h_errno, fileSystem, internalState @*/
00386         /*@modifies *st, errno, fileSystem, internalState @*/;
00387 
00392 int Chown(const char * path, uid_t owner, gid_t group)
00393         /*@globals errno, fileSystem, internalState @*/
00394         /*@modifies errno, fileSystem, internalState @*/;
00395 
00400 int Lchown(const char * path, uid_t owner, gid_t group)
00401         /*@globals errno, fileSystem, internalState @*/
00402         /*@modifies errno, fileSystem, internalState @*/;
00403 
00408 int Chmod(const char * path, mode_t mode)
00409         /*@globals errno, fileSystem, internalState @*/
00410         /*@modifies errno, fileSystem, internalState @*/;
00411 
00416 int Mkfifo(const char * path, mode_t mode)
00417         /*@globals errno, fileSystem, internalState @*/
00418         /*@modifies errno, fileSystem, internalState @*/;
00419 
00424 int Mknod(const char * path, mode_t mode, dev_t dev)
00425         /*@globals errno, fileSystem, internalState @*/
00426         /*@modifies errno, fileSystem, internalState @*/;
00427 
00432 int Utime(const char * path, const struct utimbuf * buf)
00433         /*@globals errno, fileSystem, internalState @*/
00434         /*@modifies errno, fileSystem, internalState @*/;
00435 
00440 int Utimes(const char * path, const struct timeval * times)
00441         /*@globals errno, fileSystem, internalState @*/
00442         /*@modifies errno, fileSystem, internalState @*/;
00443 
00448 int Symlink(const char * oldpath, const char * newpath)
00449         /*@globals errno, fileSystem, internalState @*/
00450         /*@modifies errno, fileSystem, internalState @*/;
00451 
00456 /*@-incondefs@*/
00457 int Readlink(const char * path, /*@out@*/ char * buf, size_t bufsiz)
00458         /*@globals errno, h_errno, fileSystem, internalState @*/
00459         /*@modifies *buf, errno, fileSystem, internalState @*/
00460         /*@requires maxSet(buf) >= (bufsiz - 1) @*/
00461         /*@ensures maxRead(buf) <= bufsiz @*/;
00462 /*@=incondefs@*/
00463 
00468 int Access(const char * path, int amode)
00469         /*@globals errno, fileSystem @*/
00470         /*@modifies errno, fileSystem @*/;
00471 
00475 int Glob_pattern_p (const char *pattern, int quote)
00476         /*@*/;
00477 
00481 int Glob_error(const char * epath, int eerrno)
00482         /*@*/;
00483 
00487 int Glob(const char * pattern, int flags,
00488                 int errfunc(const char * epath, int eerrno),
00489                 /*@out@*/ glob_t * pglob)
00490         /*@globals fileSystem @*/
00491         /*@modifies *pglob, fileSystem @*/;
00492 
00496 void Globfree( /*@only@*/ glob_t * pglob)
00497         /*@globals fileSystem @*/
00498         /*@modifies *pglob, fileSystem @*/;
00499 
00500 
00504 /*@null@*/
00505 DIR * Opendir(const char * path)
00506         /*@globals errno, h_errno, fileSystem, internalState @*/
00507         /*@modifies errno, fileSystem, internalState @*/;
00508 
00512 /*@dependent@*/ /*@null@*/
00513 struct dirent * Readdir(DIR * dir)
00514         /*@globals errno, fileSystem @*/
00515         /*@modifies *dir, errno, fileSystem @*/;
00516 
00520 int Closedir(/*@only@*/ DIR * dir)
00521         /*@globals errno, fileSystem @*/
00522         /*@modifies *dir, errno, fileSystem @*/;
00523 
00528 off_t Lseek(int fdno, off_t offset, int whence)
00529         /*@globals errno, fileSystem @*/
00530         /*@modifies errno, fileSystem @*/;
00531 
00539 
00542 off_t   fdSize(FD_t fd)
00543         /*@globals fileSystem @*/
00544         /*@modifies fd, fileSystem@*/;
00545 
00548 /*@null@*/ FD_t fdDup(int fdno)
00549         /*@globals fileSystem, internalState @*/
00550         /*@modifies fileSystem, internalState @*/;
00551 
00552 #ifdef UNUSED
00553 /*@null@*/ FILE *fdFdopen( /*@only@*/ void * cookie, const char * mode);
00554 #endif
00555 
00556 /* XXX Legacy interfaces needed by gnorpm, rpmfind et al */
00557 
00558 /*@-exportlocal@*/
00561 #ifndef H_RPMIO_INTERNAL        /* XXX avoid gcc warning */
00562 /*@unused@*/ int fdFileno(void * cookie)
00563         /*@*/;
00564 #define fdFileno(_fd)           fdio->_fileno(_fd)
00565 #endif
00566 
00569 /*@null@*/ FD_t fdOpen(const char *path, int flags, mode_t mode)
00570         /*@globals errno, fileSystem, internalState @*/
00571         /*@modifies errno, fileSystem, internalState @*/;
00572 #define fdOpen(_path, _flags, _mode)    fdio->_open((_path), (_flags), (_mode))
00573 
00576 /*@-incondefs@*/
00577 ssize_t fdRead(void * cookie, /*@out@*/ char * buf, size_t count)
00578         /*@globals errno, fileSystem, internalState @*/
00579         /*@modifies *cookie, *buf, errno, fileSystem, internalState @*/
00580         /*@requires maxSet(buf) >= (count - 1) @*/
00581         /*@ensures maxRead(buf) == result @*/ ;
00582 #define fdRead(_fd, _buf, _count)       fdio->read((_fd), (_buf), (_count))
00583 /*@=incondefs@*/
00584 
00587 ssize_t fdWrite(void * cookie, const char * buf, size_t count)
00588         /*@globals errno, fileSystem, internalState @*/
00589         /*@modifies *cookie, errno, fileSystem, internalState @*/;
00590 #define fdWrite(_fd, _buf, _count)      fdio->write((_fd), (_buf), (_count))
00591 
00594 int fdClose( /*@only@*/ void * cookie)
00595         /*@globals errno, fileSystem, systemState, internalState @*/
00596         /*@modifies *cookie, errno, fileSystem, systemState, internalState @*/;
00597 #define fdClose(_fd)            fdio->close(_fd)
00598 
00601 /*@unused@*/
00602 /*@only@*/ /*@null@*/
00603 FD_t fdLink (/*@only@*/ void * cookie, const char * msg)
00604         /*@globals fileSystem @*/
00605         /*@modifies *cookie, fileSystem @*/;
00606 #define fdLink(_fd, _msg)       fdio->_fdref(_fd, _msg, __FILE__, __LINE__)
00607 
00610 /*@unused@*/
00611 /*@only@*/ /*@null@*/
00612 FD_t fdFree(/*@only@*/ FD_t fd, const char * msg)
00613         /*@globals fileSystem @*/
00614         /*@modifies fd, fileSystem @*/;
00615 #define fdFree(_fd, _msg)       fdio->_fdderef(_fd, _msg, __FILE__, __LINE__)
00616 
00619 /*@unused@*/
00620 /*@only@*/ /*@null@*/
00621 FD_t fdNew (const char * msg)
00622         /*@globals fileSystem @*/
00623         /*@modifies fileSystem @*/;
00624 #define fdNew(_msg)             fdio->_fdnew(_msg, __FILE__, __LINE__)
00625 
00628 int fdWritable(FD_t fd, int secs)
00629         /*@globals errno, fileSystem @*/
00630         /*@modifies fd, errno, fileSystem @*/;
00631 
00634 int fdReadable(FD_t fd, int secs)
00635         /*@globals errno @*/
00636         /*@modifies fd, errno @*/;
00637 /*@=exportlocal@*/
00638 
00647 int rpmioMkpath(const char * path, mode_t mode, uid_t uid, gid_t gid)
00648         /*@globals h_errno, fileSystem, internalState @*/
00649         /*@modifies fileSystem, internalState @*/;
00650 
00658 int rpmioAccess(const char *FN, /*@null@*/ const char * path, int mode)
00659         /*@globals fileSystem, internalState @*/
00660         /*@modifies fileSystem, internalState @*/;
00661 
00667 char * (*Getpass) (const char * prompt)
00668         /*@*/;
00669 char * _GetPass (const char * prompt)
00670         /*@*/;
00671 char * _RequestPass (const char * prompt)
00672         /*@*/;
00673 
00677 /*@-typeuse@*/
00678 typedef enum ftperrCode_e {
00679     FTPERR_NE_ERROR             = -1,   
00680     FTPERR_NE_LOOKUP            = -2,   
00681     FTPERR_NE_AUTH              = -3,   
00682     FTPERR_NE_PROXYAUTH         = -4,   
00683     FTPERR_NE_CONNECT           = -5,   
00684     FTPERR_NE_TIMEOUT           = -6,   
00685     FTPERR_NE_FAILED            = -7,   
00686     FTPERR_NE_RETRY             = -8,   
00687     FTPERR_NE_REDIRECT          = -9,   
00689     FTPERR_BAD_SERVER_RESPONSE  = -81,  
00690     FTPERR_SERVER_IO_ERROR      = -82,  
00691     FTPERR_SERVER_TIMEOUT       = -83,  
00692     FTPERR_BAD_HOST_ADDR        = -84,  
00693     FTPERR_BAD_HOSTNAME         = -85,  
00694     FTPERR_FAILED_CONNECT       = -86,  
00695     FTPERR_FILE_IO_ERROR        = -87,  
00696     FTPERR_PASSIVE_ERROR        = -88,  
00697     FTPERR_FAILED_DATA_CONNECT  = -89,  
00698     FTPERR_FILE_NOT_FOUND       = -90,  
00699     FTPERR_NIC_ABORT_IN_PROGRESS= -91,  
00700     FTPERR_UNKNOWN              = -100  
00701 } ftperrCode;
00702 /*@=typeuse@*/
00703 
00706 /*@-redecl@*/
00707 /*@observer@*/ const char * ftpStrerror(int errorNumber)
00708         /*@*/;
00709 /*@=redecl@*/
00710 
00713 /*@unused@*/
00714 /*@dependent@*/ /*@null@*/ void * ufdGetUrlinfo(FD_t fd)
00715         /*@modifies fd @*/;
00716 
00719 /*@-redecl@*/
00720 /*@unused@*/
00721 /*@observer@*/ const char * urlStrerror(const char * url)
00722         /*@globals h_errno, internalState @*/
00723         /*@modifies internalState @*/;
00724 /*@=redecl@*/
00725 
00728 /*@-exportlocal@*/
00729 int ufdCopy(FD_t sfd, FD_t tfd)
00730         /*@globals fileSystem @*/
00731         /*@modifies sfd, tfd, fileSystem @*/;
00732 /*@=exportlocal@*/
00733 
00736 int ufdGetFile( /*@killref@*/ FD_t sfd, FD_t tfd)
00737         /*@globals fileSystem, internalState @*/
00738         /*@modifies sfd, tfd, fileSystem, internalState @*/;
00739 
00742 /*@unused@*/ int timedRead(FD_t fd, /*@out@*/ void * bufptr, int length)
00743         /*@globals fileSystem @*/
00744         /*@modifies fd, *bufptr, fileSystem @*/;
00745 #define timedRead       (ufdio->read)
00746 
00747 /*@-exportlocal@*/
00750 /*@observer@*/ /*@unchecked@*/ extern FDIO_t fdio;
00751 
00754 /*@observer@*/ /*@unchecked@*/ extern FDIO_t fpio;
00755 
00758 /*@observer@*/ /*@unchecked@*/ extern FDIO_t ufdio;
00759 
00762 /*@observer@*/ /*@unchecked@*/ extern FDIO_t gzdio;
00763 
00766 /*@observer@*/ /*@unchecked@*/ extern FDIO_t bzdio;
00767 
00770 /*@observer@*/ /*@unchecked@*/ extern FDIO_t lzdio;
00771 
00774 /*@observer@*/ /*@unchecked@*/ extern FDIO_t fadio;
00775 /*@=exportlocal@*/
00778 /*@unused@*/ static inline int xislower(int c) /*@*/ {
00779     return (c >= 'a' && c <= 'z');
00780 }
00781 /*@unused@*/ static inline int xisupper(int c) /*@*/ {
00782     return (c >= 'A' && c <= 'Z');
00783 }
00784 /*@unused@*/ static inline int xisalpha(int c) /*@*/ {
00785     return (xislower(c) || xisupper(c));
00786 }
00787 /*@unused@*/ static inline int xisdigit(int c) /*@*/ {
00788     return (c >= '0' && c <= '9');
00789 }
00790 /*@unused@*/ static inline int xisalnum(int c) /*@*/ {
00791     return (xisalpha(c) || xisdigit(c));
00792 }
00793 /*@unused@*/ static inline int xisblank(int c) /*@*/ {
00794     return (c == ' ' || c == '\t');
00795 }
00796 /*@unused@*/ static inline int xisspace(int c) /*@*/ {
00797     return (xisblank(c) || c == '\n' || c == '\r' || c == '\f' || c == '\v');
00798 }
00799 /*@unused@*/ static inline int xiscntrl(int c) /*@*/ {
00800     return (c < ' ');
00801 }
00802 /*@unused@*/ static inline int xisascii(int c) /*@*/ {
00803     return ((c & 0x80) != 0x80);
00804 }
00805 /*@unused@*/ static inline int xisprint(int c) /*@*/ {
00806     return (c >= ' ' && xisascii(c));
00807 }
00808 /*@unused@*/ static inline int xisgraph(int c) /*@*/ {
00809     return (c > ' ' && xisascii(c));
00810 }
00811 /*@unused@*/ static inline int xispunct(int c) /*@*/ {
00812     return (xisgraph(c) && !xisalnum(c));
00813 }
00814 
00815 /*@unused@*/ static inline int xtolower(int c) /*@*/ {
00816     return ((xisupper(c)) ? (c | ('a' - 'A')) : c);
00817 }
00818 /*@unused@*/ static inline int xtoupper(int c) /*@*/ {
00819     return ((xislower(c)) ? (c & ~('a' - 'A')) : c);
00820 }
00821 
00825 int xstrcasecmp(const char * s1, const char * s2)               /*@*/;
00826 
00830 int xstrncasecmp(const char *s1, const char * s2, size_t n)     /*@*/;
00831 
00835 /*@only@*/ /*@null@*/
00836 const char * xstrtolocale(/*@only@*/ const char *str)
00837         /*@modifies *str @*/;
00838 
00839 #if !defined(SWIG)
00840 
00845 /*@unused@*/ static inline /*@null@*/
00846 void * _free(/*@only@*/ /*@null@*/ /*@out@*/ const void * p)
00847         /*@modifies p @*/
00848 {
00849     if (p != NULL)      free((void *)p);
00850     return NULL;
00851 }
00852 #endif
00853 
00854 #ifdef __cplusplus
00855 }
00856 #endif
00857 
00858 #endif  /* H_RPMIO */

Generated on Fri Sep 7 01:27:58 2007 for rpm by  doxygen 1.5.1