RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ psm.c

From: Jeff Johnson <jbj@rpm5.org>
Date: Sun 14 Oct 2007 - 19:06:54 CEST
Message-Id: <20071014170654.B96F4348466@rpm5.org>
  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
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.