RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Ralf S. Engelschall Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 21-Jun-2007 14:25:45 Branch: HEAD Handle: 2007062113254301 Modified files: rpm CHANGES rpm/rpmdb librpmdb.vers merge.c rpmdb.c rpmdb.h Log: Resolve a portability issue related to the double definition of mergesort(3) on some non-Linux. Instead of applying the same workaround as was present for Apple Mac OS X, I decided to just resolve the issue by simply prefixing RPM's own mergesort(3) with an "rpm_" prefix (similar to what is used for other RPM internal functions which technically have to be exported but are not part of the public API). This way the issue is resolved without requiring lots of platform specific checks. Summary: Revision Changes Path 1.1385 +1 -0 rpm/CHANGES 1.4 +1 -1 rpm/rpmdb/librpmdb.vers 1.6 +1 -5 rpm/rpmdb/merge.c 1.133 +1 -1 rpm/rpmdb/rpmdb.c 1.58 +1 -5 rpm/rpmdb/rpmdb.h ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.1384 -r1.1385 CHANGES --- rpm/CHANGES 21 Jun 2007 12:13:28 -0000 1.1384 +++ rpm/CHANGES 21 Jun 2007 12:25:43 -0000 1.1385 @@ -1,4 +1,5 @@ 4.5 -> 5.0: + - rse: resolve portability issue related to double definition of mergesort(3) - rse: fix building under UnixWare (blind port) - rse: fix building under FreeBSD 7-CURRENT - rse: fix building under NetBSD 3.1 @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/librpmdb.vers ============================================================================ $ cvs diff -u -r1.3 -r1.4 librpmdb.vers --- rpm/rpmdb/librpmdb.vers 25 May 2007 17:36:33 -0000 1.3 +++ rpm/rpmdb/librpmdb.vers 21 Jun 2007 12:25:44 -0000 1.4 @@ -36,7 +36,7 @@ hGetNEVR; hGetNEVRA; _init; - mergesort; + rpm_mergesort; prDbiOpenFlags; rdbOptions; rpmDatabasePoptTable; @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/merge.c ============================================================================ $ cvs diff -u -r1.5 -r1.6 merge.c --- rpm/rpmdb/merge.c 4 Jan 2005 19:25:24 -0000 1.5 +++ rpm/rpmdb/merge.c 21 Jun 2007 12:25:44 -0000 1.6 @@ -1,5 +1,4 @@ /[EMAIL PROTECTED] -mustmod -sizeoftype @*/ -#ifndef __APPLE__ /*- * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. @@ -205,7 +204,7 @@ * Arguments are as for qsort. */ int -mergesort(void *base, size_t nmemb, size_t size, +rpm_mergesort(void *base, size_t nmemb, size_t size, int (*cmp) (const void *, const void *)) { register int i, sense; @@ -354,7 +353,4 @@ /[EMAIL PROTECTED]@*/ return (0); } -#else -/* mergesort is implemented in System on Mac OS X */ -#endif /* __APPLE__ */ /[EMAIL PROTECTED] =mustmod =sizeoftype @*/ @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/rpmdb.c ============================================================================ $ cvs diff -u -r1.132 -r1.133 rpmdb.c --- rpm/rpmdb/rpmdb.c 20 Jun 2007 21:10:21 -0000 1.132 +++ rpm/rpmdb/rpmdb.c 21 Jun 2007 12:25:44 -0000 1.133 @@ -2473,7 +2473,7 @@ sizeof(*mi->mi_set->recs), hdrNumCmp); /[EMAIL PROTECTED]@*/ #else - mergesort(mi->mi_set->recs, mi->mi_set->count, + rpm_mergesort(mi->mi_set->recs, mi->mi_set->count, sizeof(*mi->mi_set->recs), hdrNumCmp); #endif mi->mi_sorted = 1; @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/rpmdb.h ============================================================================ $ cvs diff -u -r1.57 -r1.58 rpmdb.h --- rpm/rpmdb/rpmdb.h 25 May 2007 17:36:33 -0000 1.57 +++ rpm/rpmdb/rpmdb.h 21 Jun 2007 12:25:44 -0000 1.58 @@ -1175,18 +1175,14 @@ /[EMAIL PROTECTED] rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /[EMAIL PROTECTED] rpmGlobalMacroContext, fileSystem, internalState @*/; -#ifndef __APPLE__ /** * Mergesort, same arguments as qsort(2). */ /[EMAIL PROTECTED]@*/ -int mergesort(void *base, size_t nmemb, size_t size, +int rpm_mergesort(void *base, size_t nmemb, size_t size, int (*cmp) (const void *, const void *)) /[EMAIL PROTECTED] errno @*/ /[EMAIL PROTECTED] base, errno @*/; -#else -/* mergesort is defined in stdlib.h on Mac OS X */ -#endif /* __APPLE__ */ #ifdef __cplusplus } @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org