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