RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: jbj@rpm5.org
Module: rpm Date: 14-Oct-2007 19:06:54
Branch: HEAD Handle: 2007101418065400
Modified files:
rpm CHANGES
rpm/lib psm.c
Log:
- psm.c: eliminate a warning, simplify hge usage.
Summary:
Revision Changes Path
1.1697 +1 -0 rpm/CHANGES
2.240 +17 -16 rpm/lib/psm.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1696 -r1.1697 CHANGES
--- rpm/CHANGES 14 Oct 2007 16:07:14 -0000 1.1696
+++ rpm/CHANGES 14 Oct 2007 17:06:54 -0000 1.1697
@@ -1,4 +1,5 @@
4.5 -> 5.0:
+ - jbj: psm.c: eliminate a warning, simplify hge usage.
- jbj: package.c: use headerGetExtension everywhere (fix double free).
- jbj: fix: grr, headerGetEntry return code is backwards.
- jbj: clean up some warnings.
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/psm.c
============================================================================
$ cvs diff -u -r2.239 -r2.240 psm.c
--- rpm/lib/psm.c 13 Oct 2007 23:57:36 -0000 2.239
+++ rpm/lib/psm.c 14 Oct 2007 17:06:54 -0000 2.240
@@ -973,10 +973,7 @@
HE_s he_s = { .tag = 0, .t = &he_t, .p = &he_p, .c = &he_c, .freeData = 0 };
HE_t he = &he_s;
rpmfi fi = psm->fi;
- void ** progArgv = NULL;
- int progArgc;
const char * argv0 = NULL;
- const char ** argv;
const char * script;
rpmRC rc = RPMRC_OK;
int xx;
@@ -985,30 +982,34 @@
he->tag = psm->scriptTag;
xx = hge(fi->h, he->tag, he->t, he->p, he->c);
script = he_p.str;
+ if (script == NULL)
+ goto exit;
he->tag = psm->progTag;
xx = hge(fi->h, he->tag, he->t, he->p, he->c);
- progArgv = he_p.argv;
- progArgc = he_c;
- if (progArgv == NULL && script == NULL)
+ if (he_p.ptr == NULL)
goto exit;
- if (progArgv && he_t == RPM_STRING_TYPE) {
- argv = alloca(sizeof(*argv));
- *argv = (const char *) progArgv;
- } else {
- argv = (const char **) progArgv;
+ /* Coerce strings into header argv return. */
+ if (he_t == RPM_STRING_TYPE) {
+ const char * s = he_p.str;
+ char * t;
+ he_p.argv = xmalloc(sizeof(*he_p.argv)+strlen(s)+1);
+ he_p.argv[0] = t = (char *) &he_p.argv[1];
+ t = stpcpy(t, s);
+ *t = '\0';
+ s = _free(s);
}
- if (argv[0][0] == '%')
- argv[0] = argv0 = rpmExpand(argv[0], NULL);
+ /* Expand "%script -p %%{interpreter}" macros. */
+ if (he_p.argv[0][0] == '%')
+ he_p.argv[0] = argv0 = rpmExpand(he_p.argv[0], NULL);
- if (fi->h != NULL) /* XXX can't happen */
- rc = runScript(psm, fi->h, tag2sln(psm->scriptTag), progArgc, argv,
+ rc = runScript(psm, fi->h, tag2sln(psm->scriptTag), he_c, he_p.argv,
script, psm->scriptArg, -1);
exit:
argv0 = _free(argv0);
- progArgv = _free(progArgv);
+ he_p.ptr = _free(he_p.ptr);
script = _free(script);
return rc;
}
@@ .
Received on Sun Oct 14 19:06:54 2007