RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [email protected] Module: rpm Date: 18-Apr-2010 21:21:27 Branch: HEAD Handle: 2010041819212600 Modified files: rpm/rpmio rpmsql.c Log: - rpmsql: WIP. Summary: Revision Changes Path 2.48 +35 -52 rpm/rpmio/rpmsql.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/rpmio/rpmsql.c ============================================================================ $ cvs diff -u -r2.47 -r2.48 rpmsql.c --- rpm/rpmio/rpmsql.c 18 Apr 2010 17:51:13 -0000 2.47 +++ rpm/rpmio/rpmsql.c 18 Apr 2010 19:21:26 -0000 2.48 @@ -245,12 +245,12 @@ _rpmio_debug = -1; if (fn[0] == '/') { fprintf(stderr, "*** uri %s fn %s\n", uri, fn); - if (Glob_pattern_p(fn, 0)) { /* XXX uri */ + if (Glob_pattern_p(uri, 0)) { /* XXX uri */ const char ** av = NULL; int ac = 0; - xx = rpmGlob(fn, &ac, &av); /* XXX uri */ -fprintf(stderr, "GLOB: %d = Glob(%s) av %p[%d]\n", xx, fn, av, ac); + xx = rpmGlob(uri, &ac, &av); /* XXX uri */ +fprintf(stderr, "GLOB: %d = Glob(%s) av %p[%d]\n", xx, uri, av, ac); if (xx) rc = SQLITE_NOTFOUND; /* XXX */ else @@ -2484,7 +2484,7 @@ static struct rpmvd_s _grdbVD = { .prefix = "%{?_etc_group}%{!?_etc_group:/etc/group}", .split = ":", - .parse = "group:pw:gid:groups", + .parse = "group:passwd:gid:groups", .nrows = -1 }; @@ -2527,11 +2527,12 @@ /*==============================================================*/ -static int _procdb_debug = 0; - static struct rpmvd_s _procdbVD = { .prefix = "%{?_procdb}%{!?_procdb:/proc/[0-9]}", - .parse = "id", + .split = "/-", + .parse = "dir/pid/*", + .regex = "^(.+/)([0-9]+)$", + .idx = 2, .nrows = -1 }; @@ -2542,54 +2543,10 @@ return rpmvtLoadArgv(rpmvtNew(_db, pAux, argv, &_procdbVD), vtp); } -static int procdbColumn(rpmvc vc, void * _pContext, int colx) -{ - sqlite3_context * pContext = (sqlite3_context *) _pContext; - rpmvt vt = vc->vt; - const char * path = vt->av[vc->ix]; - const char * col = vt->cols[colx]; - const char * t; - const char * te; - int rc = SQLITE_OK; - -if (_procdb_debug < 0) -fprintf(stderr, "--> %s(%p,%p,%d)\n", __FUNCTION__, vc, pContext, colx); - - /* Split out {id,name} pointers. */ - if ((t = strrchr(path, '/')) == NULL) - t = path; - else - t++; - te = t + strlen(t); - - if (!strcmp(col, "path")) - sqlite3_result_text(pContext, path, -1, SQLITE_STATIC); - else if (!strcmp(col, "id")) - sqlite3_result_text(pContext, t, (te-t), SQLITE_STATIC); - else if (!strcmp(col, "pid")) - sqlite3_result_text(pContext, t, (te-t), SQLITE_STATIC); - else { - const char * fn = rpmGetPath(path, "/", col, NULL); - if (!Access(fn, R_OK)) { - rpmiob iob = NULL; - int xx = rpmiobSlurp(fn, &iob); - sqlite3_result_text(pContext, rpmiobStr(iob), rpmiobLen(iob), SQLITE_TRANSIENT); - iob = rpmiobFree(iob); - } else - sqlite3_result_null(pContext); - fn = _free(fn); - } - -if (_procdb_debug < 0) -fprintf(stderr, "<-- %s(%p,%p,%d) rc %d\n", __FUNCTION__, vc, pContext, colx, rc); - - return rc; -} - struct sqlite3_module procdbModule = { .xCreate = (void *) procdbCreateConnect, .xConnect = (void *) procdbCreateConnect, - .xColumn = (void *) procdbColumn, + .xColumn = (void *) npydbColumn, }; /*==============================================================*/ @@ -2615,6 +2572,31 @@ /*==============================================================*/ +static struct rpmvd_s _repodbVD = { + /* XXX where to map the default? */ + .prefix = "%{?_repodb}%{!?_repodb:http://rpm5.org/files/popt/}", + .split = "/-.", + .parse = "dir/file-NVRA-N-V-R.A", + .regex = "^(.+/)(((.*)-([^-]+)-([^-]+)\\.([^.]+))\\.rpm)$", + .idx = 2, + .nrows = -1 +}; + +static int repodbCreateConnect(void * _db, void * pAux, + int argc, const char *const * argv, + rpmvt * vtp, char ** pzErr) +{ + return rpmvtLoadArgv(rpmvtNew(_db, pAux, argv, &_repodbVD), vtp); +} + +struct sqlite3_module repodbModule = { + .xCreate = (void *) repodbCreateConnect, + .xConnect = (void *) repodbCreateConnect, + .xColumn = (void *) npydbColumn, +}; + +/*==============================================================*/ + static int _stat_debug = 0; static struct rpmvd_s _statVD = { @@ -2743,6 +2725,7 @@ { "Nixdb", &nixdbModule, NULL }, { "Procdb", &procdbModule, NULL }, { "Pwdb", &pwdbModule, NULL }, + { "Repodb", &repodbModule, NULL }, { "Stat", &statModule, NULL }, { "Yumdb", &yumdbModule, NULL }, { NULL, NULL, NULL } @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository [email protected]
