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: 11-Apr-2010 19:47:32 Branch: HEAD Handle: 2010041117472902 Modified files: rpm CHANGES rpm/build parseScript.c rpm/lib psm.c rpmds.c rpm/rpmio rpmsql.c rpmsql.h Log: - rpmsql: stub-in the other "%post -p <sql>" embedding. Summary: Revision Changes Path 1.3322 +1 -0 rpm/CHANGES 2.78 +7 -1 rpm/build/parseScript.c 2.395 +27 -2 rpm/lib/psm.c 2.168 +5 -0 rpm/lib/rpmds.c 2.21 +8 -0 rpm/rpmio/rpmsql.c 2.12 +6 -0 rpm/rpmio/rpmsql.h ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3321 -r1.3322 CHANGES --- rpm/CHANGES 11 Apr 2010 13:24:05 -0000 1.3321 +++ rpm/CHANGES 11 Apr 2010 17:47:29 -0000 1.3322 @@ -1,5 +1,6 @@ 5.2b1 -> 5.3a1 + - jbj: rpmsql: stub-in the other "%post -p <sql>" embedding. - jbj: rpmsql: try to read ~/.sqliterc sanely. - jbj: rpmsql: use rpmio for output, more refactoring. - jbj: rpmsql: another rafactoring pass adding doxygen/splint markup. @@ . patch -p0 <<'@@ .' Index: rpm/build/parseScript.c ============================================================================ $ cvs diff -u -r2.77 -r2.78 parseScript.c --- rpm/build/parseScript.c 14 Sep 2009 21:32:20 -0000 2.77 +++ rpm/build/parseScript.c 11 Apr 2010 17:47:31 -0000 2.78 @@ -216,7 +216,7 @@ if (prog[0] == '<') { if (prog[strlen(prog)-1] != '>') { rpmlog(RPMLOG_ERR, - _("line %d: internal script must end " + _("line %d: embedded interpreter token must end " "with \'>\': %s\n"), spec->lineNum, prog); rc = RPMRC_FAIL; goto exit; @@ -355,6 +355,12 @@ "BuiltinSpookScripts", "5.3-1"); } else #endif +#ifdef WITH_SQLITE + if (!strcmp(progArgv[0], "<sql>")) { + (void) rpmlibNeedsFeature(pkg->header, + "BuiltinSqlScripts", "5.3-1"); + } else +#endif #ifdef WITH_SQUIRREL if (!strcmp(progArgv[0], "<squirrel>")) { (void) rpmlibNeedsFeature(pkg->header, @@ . patch -p0 <<'@@ .' Index: rpm/lib/psm.c ============================================================================ $ cvs diff -u -r2.394 -r2.395 psm.c --- rpm/lib/psm.c 19 Mar 2010 23:55:54 -0000 2.394 +++ rpm/lib/psm.c 11 Apr 2010 17:47:30 -0000 2.395 @@ -21,9 +21,16 @@ #include <rpmpython.h> #include <rpmruby.h> #include <rpmsm.h> +#include <rpmsql.h> #include <rpmsquirrel.h> #include <rpmtcl.h> +#if defined(WITH_LUA) || defined(WITH_AUGEAS) || defined(WITH_FICL) || defined(WITH_JS) || defined(WITH_PERLEMBED) || defined(WITH_PYTHONEMBED) || defined(WITH_RUBYEMBED) || defined(WITH_SEMANAGE) || defined(WITH_SQLITE) || defined(WITH_SQUIRREL) || defined(WITH_TCL) +#define _WITH_EMBEDDED +#else +#undef _WITH_ENBEDDED +#endif + #include <rpmtag.h> #include <rpmtypes.h> #include <pkgio.h> @@ -515,7 +522,7 @@ } #endif /* WITH_LUA */ -#if defined(WITH_LUA) || defined(WITH_AUGEAS) || defined(WITH_FICL) || defined(WITH_JS) || defined(WITH_PERLEMBED) || defined(WITH_PYTHONEMBED) || defined(WITH_RUBYEMBED) || defined(WITH_SEMANAGE) || defined(WITH_SQUIRREL) || defined(WITH_TCL) +#if defined(_WITH_EMBEDDED) static int enterChroot(rpmpsm psm, int * fdnop) /*...@globals fileSystem, internalState @*/ /*...@modifies psm, *fdnop, fileSystem, internalState @*/ @@ -672,6 +679,22 @@ sm = rpmsmFree(sm); } else #endif +#if defined(WITH_SQLITE) + if (!strcmp(Phe->p.argv[0], "<sql>")) { + rpmsql sql; + + /* XXX HACK: lose the last $1 argument. */ + int ac = argvCount(av); + const char * _avarg = av[ac-1]; + av[ac-1] = NULL; + sql = rpmsqlNew((char **)av, 0); + av[ac-1] = _avarg; + + rc = rpmsqlRun(sql, script, NULL) == RPMRC_OK + ? RPMRC_OK : RPMRC_FAIL; + sql = rpmsqlFree(sql); + } else +#endif #if defined(WITH_SQUIRREL) if (!strcmp(Phe->p.argv[0], "<squirrel>")) { rpmsquirrel squirrel = rpmsquirrelNew((char **)av, 0); @@ -780,15 +803,17 @@ if (Phe->p.argv && Phe->p.argv[0]) if (!strcmp(Phe->p.argv[0], "<lua>") + || !strcmp(Phe->p.argv[0], "<augeas>") || !strcmp(Phe->p.argv[0], "<ficl>") || !strcmp(Phe->p.argv[0], "<js>") || !strcmp(Phe->p.argv[0], "<perl>") || !strcmp(Phe->p.argv[0], "<python>") || !strcmp(Phe->p.argv[0], "<ruby>") + || !strcmp(Phe->p.argv[0], "<sql>") || !strcmp(Phe->p.argv[0], "<squirrel>") || !strcmp(Phe->p.argv[0], "<tcl>")) { -#if defined(WITH_LUA) || defined(WITH_FICL) || defined(WITH_JS) || defined(WITH_PERLEMBED) || defined(WITH_PYTHONEMBED) || defined(WITH_RUBYEMBED) || defined(WITH_SQUIRREL) || defined(WITH_TCL) +#if defined(_WITH_EMBEDDED) rpmlog(RPMLOG_DEBUG, D_("%s: %s(%s) running %s scriptlet.\n"), psm->stepName, tag2sln(psm->scriptTag), NVRA, Phe->p.argv[0]); @@ . patch -p0 <<'@@ .' Index: rpm/lib/rpmds.c ============================================================================ $ cvs diff -u -r2.167 -r2.168 rpmds.c --- rpm/lib/rpmds.c 6 Mar 2010 15:31:29 -0000 2.167 +++ rpm/lib/rpmds.c 11 Apr 2010 17:47:30 -0000 2.168 @@ -1501,6 +1501,11 @@ (RPMSENSE_RPMLIB|RPMSENSE_EQUAL), N_("internal embedded Spook scripts.") }, #endif +#if defined(WITH_SQLITE) + { "rpmlib(BuiltinSqlScripts)", "5.3-1", + (RPMSENSE_RPMLIB|RPMSENSE_EQUAL), + N_("internal embedded sqlite3 scripts.") }, +#endif #if defined(WITH_SQUIRREL) { "rpmlib(BuiltinSquirrelScripts)", "5.2-1", (RPMSENSE_RPMLIB|RPMSENSE_EQUAL), @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmsql.c ============================================================================ $ cvs diff -u -r2.20 -r2.21 rpmsql.c --- rpm/rpmio/rpmsql.c 11 Apr 2010 13:24:06 -0000 2.20 +++ rpm/rpmio/rpmsql.c 11 Apr 2010 17:47:31 -0000 2.21 @@ -78,6 +78,9 @@ fprintf(stderr, "\t history: %s\n", sql->zHistory); fprintf(stderr, "\t prompt: %s\n", sql->zPrompt); fprintf(stderr, "\t continue: %s\n", sql->zContinue); + + fprintf(stderr, "\t buf: %p[%u]\n", sql->buf, (unsigned)sql->nbuf); + fprintf(stderr, "\t b: %p[%u]\n", sql->b, (unsigned)sql->nb); } } #endif @@ -3761,6 +3764,7 @@ FILE *in = NULL; int rc = 0; +SQLDBG((stderr, "--> %s(%p,%s)\n", __FUNCTION__, sql, sqliterc)); if (sqliterc == NULL) sqliterc = sql->zInitrc; if (sqliterc == NULL) @@ -3924,6 +3928,10 @@ fclose(sql->iotrace); sql->iotrace = NULL; + sql->buf = _free(sql->buf); + sql->buf = sql->b = NULL; + sql->nbuf = sql->nb = 0; + /* XXX INTERACTIVE cruft. */ sql->zHome = _free(sql->zHome); sql->zInitrc = _free(sql->zInitrc); @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmsql.h ============================================================================ $ cvs diff -u -r2.11 -r2.12 rpmsql.h --- rpm/rpmio/rpmsql.h 10 Apr 2010 18:14:52 -0000 2.11 +++ rpm/rpmio/rpmsql.h 11 Apr 2010 17:47:31 -0000 2.12 @@ -102,6 +102,12 @@ const char * zPrompt; /* "sql> " */ const char * zContinue; /* "...> " */ + /* Sliding window input line buffer. */ + char * buf; + size_t nbuf; +/*...@null@*/ + char * b; + size_t nb; #if defined(__LCLINT__) /*...@refs@*/ int nrefs; /*!< (unused) keep splint happy */ @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository [email protected]
