1 --- rpm-4.0.2/lib/rpmlib.h~ Sun May 26 07:47:04 2002
2 +++ rpm-4.0.2/lib/rpmlib.h Sun May 26 07:55:51 2002
4 RPMFILE_GHOST = (1 << 6), /*!< from %%ghost */
5 RPMFILE_LICENSE = (1 << 7), /*!< from %%license */
6 - RPMFILE_README = (1 << 8) /*!< from %%readme */
7 + RPMFILE_README = (1 << 8), /*!< from %%readme */
8 + RPMFILE_EXCLUDE = (1 << 9) /*!< from %%exclude */
10 #define RPMFILE_MULTILIB_SHIFT 9
11 #define RPMFILE_MULTILIB(N) ((N) << RPMFILE_MULTILIB_SHIFT)
12 --- rpm-4.0.2/build/files.c~ Sun May 26 07:47:04 2002
13 +++ rpm-4.0.2/build/files.c Sun May 26 08:19:18 2002
15 { "%dir", 0 }, /* XXX why not RPMFILE_DIR? */
16 { "%doc", RPMFILE_DOC },
17 { "%ghost", RPMFILE_GHOST },
18 + { "%exclude", RPMFILE_EXCLUDE },
19 { "%readme", RPMFILE_README },
20 { "%license", RPMFILE_LICENSE },
23 clp = *cpioList = xmalloc(sizeof(**cpioList) * fl->fileListRecsUsed);
25 for (flp = fl->fileList, count = fl->fileListRecsUsed; count > 0; flp++, count--) {
26 - if ((count > 1) && !strcmp(flp->fileURL, flp[1].fileURL)) {
27 - rpmError(RPMERR_BADSPEC, _("File listed twice: %s\n"),
29 - fl->processingFailed = 1;
31 + if ((count > 1) && !strcmp(flp->fileURL, flp[1].fileURL)) {
32 + if (!((flp->flags | flp[1].flags) & RPMFILE_EXCLUDE)) {
33 + rpmError(RPMERR_BADSPEC, _("File listed twice: %s\n"),
35 + fl->processingFailed = 1;
37 + flp->flags |= RPMFILE_EXCLUDE;
38 + flp[1].flags |= RPMFILE_EXCLUDE;
42 + /* Skip files that were marked with %exclude. */
43 + if (flp->flags & RPMFILE_EXCLUDE) continue;
45 if (flp->flags & RPMFILE_MULTILIB_MASK)
47 (1 << ((flp->flags & RPMFILE_MULTILIB_MASK))