rpm  5.4.15
libsqldb.c
Go to the documentation of this file.
1 #include "system.h"
2 
3 #define _RPMSQL_INTERNAL
4 #define _RPMVT_INTERNAL
5 #define _RPMVC_INTERNAL
6 #include <rpmsql.h>
7 
8 #include <sqlite3.h>
9 
10 #include "debug.h"
11 
12 /*==============================================================*/
13 
14 static struct rpmvd_s _hdrVD = {
15  /* XXX where to map the default? */
16  .prefix = "%{?_repodb}%{!?_repodb:http://rpm5.org/files/popt/}",
17  .split = "/-.",
18  .parse = "dir/file-NVRA-N-V-R.A",
19  .regex = "^(.+/)(((.*)-([^-]+)-([^-]+)\\.([^.]+))\\.rpm)$",
20  .idx = 2,
21 };
22 
23 static int hdrCreateConnect(void * _db, void * pAux,
24  int argc, const char *const * argv,
25  rpmvt * vtp, char ** pzErr)
26 {
27 fprintf(stderr, "--> %s\n", __FUNCTION__);
28  return rpmvtLoadArgv(rpmvtNew(_db, pAux, argv, &_hdrVD), vtp);
29 }
30 
31 struct sqlite3_module hdrModule = {
32  .iVersion = 0,
33  .xCreate = (void *) hdrCreateConnect,
34  .xConnect = (void *) hdrCreateConnect,
35 };
36 
37 /*==============================================================*/
38 
39 static struct rpmsqlVMT_s __VMT[] = {
40  { "Hdr", &hdrModule, NULL },
41  { NULL, NULL, NULL }
42 };
43 
44 extern int sqlite3_extension_init(void * _db);
45 int sqlite3_extension_init(void * _db)
46 {
47  int rc = 0; /* SQLITE_OK */
48 fprintf(stderr, "--> %s(%p)\n", __FUNCTION__, _db);
49  rc = _rpmsqlLoadVMT(_db, __VMT);
50 fprintf(stderr, "<-- %s(%p) rc %d\n", __FUNCTION__, _db, rc);
51  return rc;
52 }
struct sqlite3_module hdrModule
Definition: libsqldb.c:31
static struct rpmsqlVMT_s __VMT[]
Definition: libsqldb.c:39
struct rpmvt_s * rpmvt
Definition: rpmsql.h:19
rpmvt rpmvtNew(void *db, void *pModule, const char *const *argv, rpmvd vd)
Definition: rpmsql.c:108
static struct rpmvd_s _hdrVD
Definition: libsqldb.c:14
int sqlite3_extension_init(void *_db)
Definition: libsqldb.c:45
static int hdrCreateConnect(void *_db, void *pAux, int argc, const char *const *argv, rpmvt *vtp, char **pzErr)
Definition: libsqldb.c:23