Sophie

Sophie

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

rpm-4.4.2.3-20mnb2.src.rpm

--- rpm-4.2.3/build/parseSpec.c.amd64	2005-01-13 05:55:04.000000000 -0500
+++ rpm-4.2.3/build/parseSpec.c	2005-01-14 08:25:05.963038183 -0500
@@ -187,6 +187,16 @@ static int copyNextLine(Spec spec, OFI_t
 }
 /*@=boundswrite@*/
 
+static const char *getAlternateArch(const char *arch)
+{
+    const char *alternate_arch = NULL;
+    if (! strncmp("x86_64", arch, sizeof("x86_64")-1))
+      alternate_arch = "amd64";
+    else if (! strncmp("amd64", arch, sizeof("amd64")-1))
+      alternate_arch = "x86_64";
+    return alternate_arch;
+}
+
 /*@-boundswrite@*/
 int readLine(Spec spec, int strip)
 {
@@ -274,13 +284,15 @@ retry:
 	match = 0;
     } else if (! strncmp("%ifarch", s, sizeof("%ifarch")-1)) {
 	const char *arch = rpmExpand("%{_target_cpu}", NULL);
+	const char *alternate_arch = getAlternateArch(arch);
 	s += 7;
-	match = matchTok(arch, s);
+	match = matchTok(arch, s) || (alternate_arch && matchTok(alternate_arch, s));
 	arch = _free(arch);
     } else if (! strncmp("%ifnarch", s, sizeof("%ifnarch")-1)) {
 	const char *arch = rpmExpand("%{_target_cpu}", NULL);
+	const char *alternate_arch = getAlternateArch(arch);
 	s += 8;
-	match = !matchTok(arch, s);
+	match = !matchTok(arch, s) && (!alternate_arch || !matchTok(alternate_arch, s));
 	arch = _free(arch);
     } else if (! strncmp("%ifos", s, sizeof("%ifos")-1)) {
 	const char *os = rpmExpand("%{_target_os}", NULL);