rpm 5.3.12
rpmio/rpmxar.h
Go to the documentation of this file.
00001 #ifndef H_RPMXAR
00002 #define H_RPMXAR
00003 
00009 #include <rpmiotypes.h>
00010 
00011 /*@unchecked@*/
00012 extern int _xar_debug;
00013 
00014 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmxar_s * rpmxar;
00015 
00016 #ifdef  _RPMXAR_INTERNAL
00017 #include "yarn.h"
00018 struct rpmxar_s {
00019     struct rpmioItem_s _item;   
00020 /*@relnull@*/
00021     const void * x;             
00022 /*@relnull@*/
00023     const void * f;             
00024 /*@relnull@*/
00025     const void * i;             
00026 /*@null@*/
00027     const char * member;        
00028 /*@null@*/
00029     unsigned char * b;          
00030     size_t bsize;               
00031     size_t bx;                  
00032     int first;
00033 #if defined(__LCLINT__)
00034 /*@refs@*/
00035     int nrefs;                  
00036 #endif
00037 };
00038 #endif
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00050 /*@unused@*/ /*@null@*/
00051 rpmxar rpmxarUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmxar xar,
00052                 /*@null@*/ const char * msg)
00053         /*@modifies xar @*/;
00054 #define rpmxarUnlink(_xar, _msg)        \
00055     ((rpmxar)rpmioUnlinkPoolItem((rpmioItem)(_xar), _msg, __FILE__, __LINE__))
00056 
00063 /*@unused@*/ /*@newref@*/ /*@null@*/
00064 rpmxar rpmxarLink (/*@null@*/ rpmxar xar, /*@null@*/ const char * msg)
00065         /*@modifies xar @*/;
00066 #define rpmxarLink(_xar, _msg)  \
00067     ((rpmxar)rpmioLinkPoolItem((rpmioItem)(_xar), _msg, __FILE__, __LINE__))
00068 
00075 /*@unused@*/ /*@null@*/
00076 rpmxar rpmxarFree(/*@killref@*/ /*@only@*/ rpmxar xar,
00077                 /*@null@*/ const char * msg)
00078         /*@modifies xar @*/;
00079 #define rpmxarFree(_xar, _msg)  \
00080     ((rpmxar)rpmioFreePoolItem((rpmioItem)(_xar), _msg, __FILE__, __LINE__))
00081 
00088 /*@-globuse@*/
00089 /*@relnull@*/
00090 rpmxar rpmxarNew(const char * fn, const char * fmode)
00091         /*@globals fileSystem @*/
00092         /*@modifies fileSystem @*/;
00093 /*@=globuse@*/
00094 
00100 int rpmxarNext(rpmxar xar)
00101         /*@globals fileSystem @*/
00102         /*@modifies xar, fileSystem @*/;
00103 
00104 int rpmxarPush(rpmxar xar, const char * fn, unsigned char * b, size_t bsize)
00105         /*@globals fileSystem @*/
00106         /*@modifies xar, fileSystem @*/;
00107 
00108 int rpmxarPull(rpmxar xar, /*@null@*/ const char * fn)
00109         /*@globals fileSystem @*/
00110         /*@modifies xar, fileSystem @*/;
00111 
00112 int rpmxarSwapBuf(rpmxar xar, /*@null@*/ unsigned char * b, size_t bsize,
00113                 /*@null@*/ unsigned char ** obp, /*@null@*/ size_t * obsizep)
00114         /*@globals fileSystem @*/
00115         /*@modifies xar, *obp, *obsizep, fileSystem @*/;
00116 
00117 /*@-incondefs@*/
00118 ssize_t xarRead(void * cookie, /*@out@*/ char * buf, size_t count)
00119         /*@globals fileSystem, internalState @*/
00120         /*@modifies buf, fileSystem, internalState @*/
00121         /*@requires maxSet(buf) >= (count - 1) @*/;
00122 /*@=incondefs@*/
00123 
00129 /*@null@*/
00130 const char * rpmxarPath(rpmxar xar)
00131         /*@globals fileSystem @*/
00132         /*@modifies xar, fileSystem @*/;
00133 
00140 int rpmxarStat(rpmxar xar, struct stat * st)
00141         /*@globals fileSystem @*/
00142         /*@modifies xar, *st, fileSystem @*/;
00143 
00144 #ifdef __cplusplus
00145 }
00146 #endif
00147 
00148 #endif  /* H_RPMXAR */