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

Reply via email to