RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/build/ files.c

From: Bernhard Rosenkraenzer <bero@rpm5.org>
Date: Fri 12 Oct 2007 - 20:15:11 CEST
Message-Id: <20071012181511.3088A348451@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Bernhard Rosenkraenzer
  Root:   /v/rpm/cvs                       Email:  bero@rpm5.org
  Module: rpm                              Date:   12-Oct-2007 20:15:11
  Branch: HEAD                             Handle: 2007101219151001

  Modified files:
    rpm                     CHANGES
    rpm/build               files.c

  Log:
    Support multiple %files files
    
    Submitted by: bero

  Summary:
    Revision    Changes     Path
    1.1674      +1  -0      rpm/CHANGES
    1.266       +41 -33     rpm/build/files.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1673 -r1.1674 CHANGES
  --- rpm/CHANGES	12 Oct 2007 17:58:07 -0000	1.1673
  +++ rpm/CHANGES	12 Oct 2007 18:15:10 -0000	1.1674
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - bero: Support multiple %files files per package (%files -f f1,f2,...)
       - bero: Detect Ark Linux as RPMCANONVENDOR
       - rpm.org: have selinux disabled imply RPMTRANS_FLAG_NOCONTEXTS.
       - jbj: plug --rebuilddb memory leaks. headerGetExtension() est arrive!
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/files.c
  ============================================================================
  $ cvs diff -u -r1.265 -r1.266 files.c
  --- rpm/build/files.c	11 Oct 2007 19:44:21 -0000	1.265
  +++ rpm/build/files.c	12 Oct 2007 18:15:11 -0000	1.266
  @@ -2142,40 +2142,48 @@
       pkg->cpioList = NULL;
   
       if (pkg->fileFile) {
  -	const char *ffn;
  -	FILE * f;
  -	FD_t fd;
  -
  -	/* XXX W2DO? urlPath might be useful here. */
  -	if (*pkg->fileFile == '/') {
  -	    ffn = rpmGetPath(pkg->fileFile, NULL);
  -	} else {
  -	    /* XXX FIXME: add %{buildsubdir} */
  -	    ffn = rpmGetPath("%{_builddir}/",
  -		(spec->buildSubdir ? spec->buildSubdir : "") ,
  -		"/", pkg->fileFile, NULL);
  -	}
  -	fd = Fopen(ffn, "r.fpio");
  -
  -	if (fd == NULL || Ferror(fd)) {
  -	    rpmlog(RPMLOG_ERR,
  -		_("Could not open %%files file %s: %s\n"),
  -		ffn, Fstrerror(fd));
  -	    return RPMRC_FAIL;
  -	}
  -	ffn = _free(ffn);
  -
  -	/*@+voidabstract@*/ f = fdGetFp(fd); /*@=voidabstract@*/
  -	if (f != NULL)
  -	while (fgets(buf, sizeof(buf), f)) {
  -	    handleComments(buf);
  -	    if (expandMacros(spec, spec->macros, buf, sizeof(buf))) {
  -		rpmlog(RPMLOG_ERR, _("line: %s\n"), buf);
  -		return RPMRC_FAIL;
  +	char *saveptr;
  +	char *filesFiles=strdup(pkg->fileFile);
  +	char *token=strtok_r(filesFiles, ",", &saveptr);
  +	do {
  +	    const char *ffn;
  +	    FILE * f;
  +	    FD_t fd;
  +
  +	    /* XXX W2DO? urlPath might be useful here. */
  +	    if (*token == '/') {
  +		ffn = rpmGetPath(token, NULL);
  +	    } else {
  +		/* XXX FIXME: add %{buildsubdir} */
  +		ffn = rpmGetPath("%{_builddir}/",
  +		    (spec->buildSubdir ? spec->buildSubdir : "") ,
  +		    "/", token, NULL);
   	    }
  -	    appendStringBuf(pkg->fileList, buf);
  -	}
  -	(void) Fclose(fd);
  +
  +	    fd = Fopen(ffn, "r.fpio");
  +
  +	    if (fd == NULL || Ferror(fd)) {
  +		rpmlog(RPMLOG_ERR,
  +		    _("Could not open %%files file %s: %s\n"),
  +		    ffn, Fstrerror(fd));
  +	        return RPMRC_FAIL;
  +	    }
  +	    ffn = _free(ffn);
  +
  +	    /*@+voidabstract@*/ f = fdGetFp(fd); /*@=voidabstract@*/
  +	    if (f != NULL) {
  +		while (fgets(buf, sizeof(buf), f)) {
  +		    handleComments(buf);
  +		    if (expandMacros(spec, spec->macros, buf, sizeof(buf))) {
  +			rpmlog(RPMLOG_ERR, _("line: %s\n"), buf);
  +			return RPMRC_FAIL;
  +	    	    }
  +	    	    appendStringBuf(token, buf);
  +		}
  +	    }
  +	    (void) Fclose(fd);
  +	} while(token=strtok_r(NULL, ",", &saveptr));
  +	free(filesFiles);
       }
       
       /* Init the file list structure */
  @@ .
Received on Fri Oct 12 20:15:11 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.