Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

rpmdb/rpmdb.h

Go to the documentation of this file.
00001 #ifndef H_RPMDB
00002 #define H_RPMDB
00003 
00009 #include <rpmlib.h>
00010 
00011 #include "fprint.h"
00012 
00015 typedef /*@abstract@*/ struct _dbiIndexItem * dbiIndexItem;
00016 
00019 typedef /*@abstract@*/ struct _dbiIndex * dbiIndex;
00020 
00021 /* this will break if sizeof(int) != 4 */
00027 struct _dbiIndexItem {
00028     unsigned int hdrNum;                
00029     unsigned int tagNum;                
00030     unsigned int fpNum;                 
00031     unsigned int dbNum;                 
00032 };
00033 
00034 #ifdef DYING
00035 
00038 struct _dbiIR {
00039 /*@unused@*/ unsigned int recOffset;    
00040 /*@unused@*/ unsigned int fileNumber;   
00041 };
00042 /*@-typeuse@*/
00043 typedef struct _dbiIR * DBIR_t;
00044 /*@=typeuse@*/
00045 #endif  /* DYING */
00046 
00050 struct _dbiIndexSet {
00051 /*@owned@*/ struct _dbiIndexItem * recs; 
00052     int count;                          
00053 };
00054 
00055 /* XXX hack to get prototypes correct */
00056 #if !defined(DB_VERSION_MAJOR)
00057 #define DB      void
00058 #define DB_ENV  void
00059 #define DBC     void
00060 #define DBT     void
00061 #define DB_LSN  void
00062 #endif
00063 
00067 struct _dbiVec {
00068     int dbv_major;                      
00069     int dbv_minor;                      
00070     int dbv_patch;                      
00078     int (*open) (rpmdb rpmdb, int rpmtag, /*@out@*/ dbiIndex * dbip)
00079         /*@modifies *dbip @*/;
00080 
00087     int (*close) (/*@only@*/ dbiIndex dbi, unsigned int flags)
00088         /*@modifies dbi, fileSystem @*/;
00089 
00096     int (*sync) (dbiIndex dbi, unsigned int flags)
00097         /*@modifies fileSystem @*/;
00098 
00105     int (*copen) (dbiIndex dbi, /*@out@*/ DBC ** dbcp, unsigned int flags)
00106         /*@modifies dbi, *dbcp @*/;
00107 
00114     int (*cclose) (dbiIndex dbi, /*@only@*/ DBC * dbcursor, unsigned int flags)
00115         /*@modifies dbi, *dbcursor @*/;
00116 
00126     int (*cdel) (dbiIndex dbi, DBC * dbcursor,
00127                         const void * keyp, size_t keylen, unsigned int flags)
00128         /*@modifies *dbcursor, fileSystem @*/;
00129 
00141     int (*cget) (dbiIndex dbi, DBC * dbcursor,
00142                         /*@null@*/ void ** keypp, /*@null@*/ size_t * keylenp,
00143                         /*@null@*/ void ** datapp, /*@null@*/ size_t * datalenp,
00144                         unsigned int flags)
00145         /*@modifies *dbcursor, *keypp, *keylenp, *datapp, *datalenp,
00146                 fileSystem @*/;
00147 
00159     int (*cput) (dbiIndex dbi, DBC * dbcursor,
00160                         const void * keyp, size_t keylen,
00161                         const void * datap, size_t datalen,
00162                         unsigned int flags)
00163         /*@modifies *dbcursor, fileSystem @*/;
00164 
00173     int (*ccount) (dbiIndex dbi, DBC * dbcursor,
00174                         /*@out@*/ unsigned int * countp,
00175                         unsigned int flags)
00176         /*@modifies *dbcursor @*/;
00177 
00183     int (*byteswapped) (dbiIndex dbi)
00184         /*@*/;
00185 
00192     int (*stat) (dbiIndex dbi, unsigned int flags)
00193         /*@modifies dbi @*/;
00194 
00195 };
00196 
00200 struct _dbiIndex {
00201 /*@null@*/ const char * dbi_root;       
00202 /*@null@*/ const char * dbi_home;       
00203 /*@null@*/ const char * dbi_file;       
00204 /*@null@*/ const char * dbi_subfile;
00205 /*@null@*/ const char * dbi_tmpdir;     
00207     int                 dbi_ecflags;    
00208     int                 dbi_cflags;     
00209     int                 dbi_oeflags;    
00210     int                 dbi_eflags;     
00211     int                 dbi_oflags;     
00212     int                 dbi_tflags;     
00214     int                 dbi_type;       
00215     unsigned            dbi_mode;       
00216     int                 dbi_perms;      
00217     long                dbi_shmkey;     
00218     int                 dbi_api;        
00220     int                 dbi_verify_on_close;
00221     int                 dbi_tear_down;  
00222     int                 dbi_use_cursors;
00223     int                 dbi_use_dbenv;  
00224     int                 dbi_permit_dups;
00225     int                 dbi_get_rmw_cursor;
00226     int                 dbi_no_fsync;   
00227     int                 dbi_no_dbsync;  
00228     int                 dbi_lockdbfd;   
00229     int                 dbi_temporary;  
00230     int                 dbi_debug;
00231 
00232 /*@null@*/ char *       dbi_host;
00233     long                dbi_cl_timeout;
00234     long                dbi_sv_timeout;
00235 
00236         /* dbenv parameters */
00237     int                 dbi_lorder;
00238 /*@unused@*/ /*@null@*/ void            (*db_errcall) (const char *db_errpfx, char *buffer)
00239         /*@modifies fileSystem @*/;
00240 /*@unused@*/ /*@shared@*/ FILE *        dbi_errfile;
00241     const char *        dbi_errpfx;
00242     int                 dbi_verbose;
00243     int                 dbi_region_init;
00244     int                 dbi_tas_spins;
00245         /* mpool sub-system parameters */
00246     int                 dbi_mp_mmapsize;        
00247     int                 dbi_mp_size;    
00248         /* lock sub-system parameters */
00249     unsigned int        dbi_lk_max;
00250     unsigned int        dbi_lk_detect;
00251 /*@unused@*/ int        dbi_lk_nmodes;
00252 /*@unused@*/ unsigned char * dbi_lk_conflicts;
00253         /* log sub-system parameters */
00254     unsigned int        dbi_lg_max;
00255     unsigned int        dbi_lg_bsize;
00256         /* transaction sub-system parameters */
00257     unsigned int        dbi_tx_max;
00258 #if 0
00259     int                 (*dbi_tx_recover) (DB_ENV *dbenv, DBT *log_rec,
00260                                 DB_LSN *lsnp, int redo, void *info)
00261         /*@modifies fileSystem @*/;
00262 #endif
00263         /* dbinfo parameters */
00264     int                 dbi_cachesize;  
00265     int                 dbi_pagesize;   
00266 /*@unused@*/ /*@null@*/ void *  (*dbi_malloc) (size_t nbytes)
00267         /*@*/;
00268         /* hash access parameters */
00269     unsigned int        dbi_h_ffactor;  
00270 /*@null@*/ unsigned int (*dbi_h_hash_fcn) (DB *, const void *bytes, unsigned int length) /*@*/;
00271     unsigned int        dbi_h_nelem;    
00272     unsigned int        dbi_h_flags;    
00273 /*@null@*/ int          (*dbi_h_dup_compare_fcn) (DB *, const DBT *, const DBT *) /*@*/;
00274         /* btree access parameters */
00275     int                 dbi_bt_flags;
00276     int                 dbi_bt_minkey;
00277 /*@null@*/ int          (*dbi_bt_compare_fcn) (DB *, const DBT *, const DBT *) /*@*/;
00278 /*@null@*/ int          (*dbi_bt_dup_compare_fcn) (DB *, const DBT *, const DBT *) /*@*/;
00279 /*@null@*/ size_t       (*dbi_bt_prefix_fcn) (DB *, const DBT *, const DBT *) /*@*/;
00280         /* recno access parameters */
00281     int                 dbi_re_flags;
00282     int                 dbi_re_delim;
00283     unsigned int        dbi_re_len;
00284     int                 dbi_re_pad;
00285     const char *        dbi_re_source;
00286         /* queue access parameters */
00287     unsigned int        dbi_q_extentsize;
00288 
00289 /*@kept@*/ rpmdb        dbi_rpmdb;
00290     rpmTag      dbi_rpmtag;             
00291     int         dbi_jlen;               
00293     unsigned int dbi_lastoffset;        
00295 /*@only@*//*@null@*/ void * dbi_db;     
00296 /*@only@*//*@null@*/ void * dbi_dbenv;  
00297 /*@only@*//*@null@*/ void * dbi_dbinfo; 
00298 /*@only@*//*@null@*/ void * dbi_rmw;    
00299 /*@only@*//*@null@*/ void * dbi_stats;  
00301 /*@observer@*/ const struct _dbiVec * dbi_vec;  
00303 };
00304 
00308 struct rpmdb_s {
00309 /*@owned@*/ const char * db_root;
00310 /*@owned@*/ const char * db_home;
00311     int         db_flags;
00312     int         db_mode;        
00313     int         db_perms;       
00314     int         db_api;         
00315 /*@owned@*/ const char * db_errpfx;
00316     int         db_remove_env;
00317     int         db_filter_dups;
00318     int         db_chrootDone;  
00319     void (*db_errcall) (const char *db_errpfx, char *buffer)
00320         /*@*/;
00321 /*@shared@*/ FILE *     db_errfile;
00322 /*@only@*/ void * (*db_malloc) (size_t nbytes)
00323         /*@*/;
00324 /*@only@*/ void * (*db_realloc) (/*@only@*//*@null@*/ void * ptr,
00325                                                 size_t nbytes)
00326         /*@*/;
00327     void (*db_free) (/*@only@*/ void * ptr)
00328         /*@modifies *ptr @*/;
00329     int         db_ndbi;        
00330     dbiIndex *  _dbi;           
00331 };
00332 
00333 /* for RPM's internal use only */
00334 
00337 enum rpmdbFlags {
00338         RPMDB_FLAG_JUSTCHECK    = (1 << 0),
00339         RPMDB_FLAG_MINIMAL      = (1 << 1),
00340 /*@-enummemuse@*/
00341         RPMDB_FLAG_CHROOT       = (1 << 2)
00342 /*@=enummemuse@*/
00343 };
00344 
00345 #ifdef __cplusplus
00346 extern "C" {
00347 #endif
00348 
00349 /*@-exportlocal@*/
00354 /*@only@*/ /*@null@*/ dbiIndex db3New(/*@keep@*/ rpmdb rpmdb, int rpmtag)
00355         /*@*/;
00356 
00362 /*@null@*/ dbiIndex db3Free( /*@only@*/ /*@null@*/ dbiIndex dbi)
00363         /*@*/;
00364 
00371 /*@-redecl@*/
00372 /*@exposed@*/ extern const char *const prDbiOpenFlags(int dbflags,
00373                                                 int print_dbenv_flags)
00374         /*@*/;
00375 /*@=redecl@*/
00376 
00384 /*@only@*/ /*@null@*/ dbiIndex dbiOpen(/*@null@*/ rpmdb db, int rpmtag,
00385                 unsigned int flags)
00386         /*@modifies db @*/;
00387 
00392 int dbiCopen(dbiIndex dbi, /*@out@*/ DBC ** dbcp, unsigned int dbiflags)
00393         /*@modifies dbi, *dbcp @*/;
00394 
00395 #define DBI_WRITECURSOR         (1 << 0)
00396 #define DBI_ITERATOR            (1 << 1)
00397 
00402 int dbiCclose(dbiIndex dbi, /*@only@*/ DBC * dbcursor, unsigned int flags)
00403         /*@modifies dbi, *dbcursor @*/;
00404 
00413 int dbiDel(dbiIndex dbi, DBC * dbcursor, const void * keyp, size_t keylen,
00414                 unsigned int flags)
00415         /*@modifies *dbcursor, fileSystem @*/;
00416 
00427 int dbiGet(dbiIndex dbi, DBC * dbcursor, void ** keypp,
00428                 /*@null@*/ size_t * keylenp,
00429                 /*@null@*/ void ** datapp, 
00430                 /*@null@*/ size_t * datalenp,
00431                 unsigned int flags)
00432         /*@modifies *dbcursor, **keypp, *keylenp, **datapp, *datalenp,
00433                 fileSystem @*/;
00434 
00445 int dbiPut(dbiIndex dbi, DBC * dbcursor, const void * keyp, size_t keylen,
00446                 const void * datap, size_t datalen, unsigned int flags)
00447         /*@modifies *dbcursor, fileSystem @*/;
00448 
00457 /*@unused@*/
00458 int dbiCount(dbiIndex dbi, DBC * dbcursor, /*@out@*/ unsigned int * countp,
00459                 unsigned int flags)
00460         /*@modifies *dbcursor, fileSystem @*/;
00461 
00468 int dbiVerify(/*@only@*/ dbiIndex dbi, unsigned int flags)
00469         /*@modifies dbi, fileSystem @*/;
00470 
00477 int dbiClose(/*@only@*/ dbiIndex dbi, unsigned int flags)
00478         /*@modifies dbi, fileSystem @*/;
00479 
00486 int dbiSync (dbiIndex dbi, unsigned int flags)
00487         /*@modifies fileSystem @*/;
00488 
00494 int dbiByteSwapped(dbiIndex dbi)
00495         /*@*/;
00496 
00502 char * db1basename(int rpmtag)
00503         /*@*/;
00504 /*@=exportlocal@*/
00505 
00508 /*@unused@*/
00509 unsigned int rpmdbGetIteratorFileNum(rpmdbMatchIterator mi)
00510         /*@*/;
00511 
00515 int rpmdbFindFpList(/*@null@*/ rpmdb db, fingerPrint * fpList,
00516                 /*@out@*/dbiIndexSet * matchList, int numItems)
00517         /*@modifies db, *matchList @*/;
00518 
00524 /*@null@*/ dbiIndexSet dbiFreeIndexSet(/*@only@*/ /*@null@*/ dbiIndexSet set)
00525         /*@modifies set @*/;
00526 
00532 unsigned int dbiIndexSetCount(dbiIndexSet set)
00533         /*@*/;
00534 
00541 unsigned int dbiIndexRecordOffset(dbiIndexSet set, int recno)
00542         /*@*/;
00543 
00550 unsigned int dbiIndexRecordFileNumber(dbiIndexSet set, int recno)
00551         /*@*/;
00552 
00553 #ifdef __cplusplus
00554 }
00555 #endif
00556 
00557 #endif  /* H_RPMDB */

Generated at Thu Sep 6 11:25:43 2001 for rpm by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001