Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 07e56ec36f5b6db53acae40086fcf8ad > files > 17

rpm-4.4.2.3-20mnb2.src.rpm

diff -p -up rpm-4.4.2.2/lib/transaction.c.pix rpm-4.4.2.2/lib/transaction.c
--- rpm-4.4.2.2/lib/transaction.c.pix	2007-09-11 06:28:15.000000000 +0000
+++ rpm-4.4.2.2/lib/transaction.c	2008-01-22 15:41:21.000000000 +0000
@@ -104,6 +104,22 @@ static int sharedCmp(const void * one, c
     return 0;
 }
 
+static int is_a_doc_conflict(rpmfi fi)
+{
+    const char *ignorelist[] = {
+	"/usr/share/man/",
+	"/usr/share/gtk-doc/html/",
+	"/usr/share/gnome/html/",
+	NULL
+    };
+    const char *fn = rpmfiFN(fi);
+    const char **dnp;
+    for (dnp = ignorelist; *dnp != NULL; dnp++)
+	if (strstr(fn, *dnp) == fn) return 1;
+
+    return 0;
+}
+
 /**
  * @param ts		transaction set
  * @param p
@@ -212,6 +228,13 @@ static int handleInstInstalledFiles(cons
 		}
 	    }
 
+	    /* HACK: always install latest (arch-independent) man
+	       pages and gtk/gnome html doc files. */
+	    if (rConflicts && is_a_doc_conflict(fi)) {
+	        fi->actions[fileNum] = FA_CREATE;
+		rConflicts = 0;
+	    }
+
 	    if (rConflicts) {
 		rpmpsAppend(ps, RPMPROB_FILE_CONFLICT,
 			rpmteNEVR(p), rpmteKey(p),
@@ -601,6 +624,13 @@ assert(otherFi != NULL);
 		    done = 1;
 		}
 
+		/* HACK: always install latest (arch-independent) man
+		   pages and gtk/gnome html doc files. */
+		if (rConflicts && is_a_doc_conflict(fi)) {
+		    fi->actions[i] = FA_CREATE;
+		    rConflicts = 0;
+		}
+
 		if (rConflicts) {
 		    rpmpsAppend(ps, RPMPROB_NEW_FILE_CONFLICT,
 			rpmteNEVR(p), rpmteKey(p),