RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   19-Dec-2010 02:40:20
  Branch: HEAD                             Handle: 2010121901402000

  Added files:
    rpm/lib                 tbf.c
  Modified files:
    rpm/lib                 Makefile.am

  Log:
    - add proyvind's hdlist-bf.c test program.

  Summary:
    Revision    Changes     Path
    2.205       +4  -1      rpm/lib/Makefile.am
    2.1         +66 -0      rpm/lib/tbf.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/lib/Makefile.am
  ============================================================================
  $ cvs diff -u -r2.204 -r2.205 Makefile.am
  --- rpm/lib/Makefile.am       9 Dec 2010 20:40:10 -0000       2.204
  +++ rpm/lib/Makefile.am       19 Dec 2010 01:40:20 -0000      2.205
  @@ -46,7 +46,7 @@
   
   EXTRA_DIST = librpm.vers
   
  -EXTRA_PROGRAMS = tevr tgi tsbt
  +EXTRA_PROGRAMS = tbf tevr tgi tsbt
   
   pkglibdir = @USRLIBRPM@
   pkglib_LTLIBRARIES = libsql.la
  @@ -154,6 +154,9 @@
   #lcov-upload: lcov
   #    rsync -rvz -e ssh --delete lcov/* ???
   
  +tbf_SOURCES = tbf.c
  +tbf_LDADD = $(RPM_LDADD_COMMON)
  +
   tevr_SOURCES = tevr.c
   tevr_LDADD = $(RPMBUILD_LDADD)
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/tbf.c
  ============================================================================
  $ cvs diff -u -r0 -r2.1 tbf.c
  --- /dev/null 2010-12-19 02:36:44.000000000 +0100
  +++ tbf.c     2010-12-19 02:40:20.340039198 +0100
  @@ -0,0 +1,66 @@
  +#define _RPMGI_INTERNAL
  +#define _RPMBF_INTERNAL
  +/* avoid warning */
  +#define      xrealloc(ptr, size) realloc(ptr, size) 
  +
  +#include <stdint.h>
  +#include <rpmio.h>
  +#include <rpmtag.h>
  +#include <rpmgi.h>
  +#include <rpmbf.h>
  +
  +int main(int argc, char *argv[]) {
  +    FD_t fd;
  +    rpmts ts = NULL;
  +    rpmgi gi = NULL;
  +    rpmRC rc = RPMRC_NOTFOUND;
  +    rpmbf bf = NULL;
  +    size_t n = 0;
  +    static double e = 1.0e-6;
  +    size_t m = 0;
  +    size_t k = 0;
  +    HE_t he = (HE_t)memset(alloca(sizeof(*he)), 0, sizeof(*he));
  +
  +
  +
  +    rc = RPMRC_NOTFOUND;
  +    ts = rpmtsCreate();
  +    rpmtsSetRootDir(ts, NULL);
  +    gi = rpmgiNew(ts, RPMDBI_HDLIST, NULL, 0);
  +
  +    rpmtsSetVSFlags(ts, _RPMVSF_NOSIGNATURES | RPMVSF_NOHDRCHK | 
_RPMVSF_NOPAYLOAD | _RPMVSF_NOHEADER);
  +    gi->active = 1;
  +    gi->fd = Fopen(argv[1], "r.fdio");
  +    while ((rc = rpmgiNext(gi)) == RPMRC_OK) {
  +     int rc;
  +     
  +     he->tag = RPMTAG_FILEPATHS;
  +     if(headerGet(gi->h, he, 0)) {
  +         n += he->c;
  +     }
  +    }
  +
  +    rpmbfParams(n, e, &m, &k);
  +
  +    bf = rpmbfNew(m, k, 0);
  +    
  +    gi->active = 1;
  +    gi->fd = Fopen(argv[1], "r.fdio");
  +
  +    while ((rc = rpmgiNext(gi)) == RPMRC_OK) {
  +     int rc;
  +     
  +     he->tag = RPMTAG_FILEPATHS;
  +     if(headerGet(gi->h, he, 0)) {
  +         for(he->ix = 0; he->ix < (int) he->c; he->ix++)
  +             rpmbfAdd(bf, he->p.argv[he->ix], 0);
  +     }
  +    }
  +
  +    fd = Fopen("bloom.dump", "w.fdio");
  +    Fwrite(bf->bits, 1, bf->m/8, fd);
  +    Fclose(fd);
  +
  +    printf("n: %zu m: %zu k: %zu\nsize: %zu\n", n, m, k, bf->m/8);
  +
  +}
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to