]> git.pld-linux.org Git - packages/rpm.git/commitdiff
rpm-lfind patch replaced by rpm-alAddPackage.patch rpm-4_0_2-18
authorpawelk <pawelk@pld-linux.org>
Sat, 16 Jun 2001 12:57:56 +0000 (12:57 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
It speed up wuch even more then lfind-ptach, and lave API 100% compatybile
with orginal rpm api.

Changed files:
    rpm-fast-alAddPackage.patch -> 1.1
    rpm.spec -> 1.207

rpm-fast-alAddPackage.patch [new file with mode: 0644]
rpm.spec

diff --git a/rpm-fast-alAddPackage.patch b/rpm-fast-alAddPackage.patch
new file mode 100644 (file)
index 0000000..041df8b
--- /dev/null
@@ -0,0 +1,97 @@
+--- ./lib/depends.c.org        Sat Jun 16 14:14:11 2001
++++ ./lib/depends.c    Sat Jun 16 14:19:12 2001
+@@ -335,18 +335,19 @@
+       for (dirNum = 0; dirNum < numDirs; dirNum++) {
+           dirNeedle.dirName = (char *) dirNames[dirNum];
+           dirNeedle.dirNameLen = strlen(dirNames[dirNum]);
+-          dirMatch = bsearch(&dirNeedle, al->dirs, origNumDirs,
++          dirMatch = bsearchnl(&dirNeedle, al->dirs, origNumDirs,
+                              sizeof(dirNeedle), dirInfoCompare);
+-          if (dirMatch) {
+-              dirMapping[dirNum] = dirMatch - al->dirs;
+-          } else {
+-              dirMapping[dirNum] = al->numDirs;
+-              al->dirs[al->numDirs].dirName = xstrdup(dirNames[dirNum]);
+-              al->dirs[al->numDirs].dirNameLen = strlen(dirNames[dirNum]);
+-              al->dirs[al->numDirs].files = NULL;
+-              al->dirs[al->numDirs].numFiles = 0;
++          if (dirInfoCompare(dirMatch, &dirNeedle)!=0) {
++              memmove(dirMatch+1, dirMatch, 
++                      ((al->dirs+al->numDirs) - dirMatch)*sizeof(*al->dirs));
++              dirMatch->dirName = xstrdup(dirNames[dirNum]);
++              dirMatch->dirNameLen = strlen(dirNames[dirNum]);
++              dirMatch->files = NULL;
++              dirMatch->numFiles = 0;
+               al->numDirs++;
+           }
++          dirMapping[dirNum] = dirMatch - al->dirs;
++      
+       }
+       free(dirNames);
+@@ -374,9 +375,6 @@
+           first = last + 1;
+       }
+-
+-      if (origNumDirs + al->numDirs)
+-          qsort(al->dirs, al->numDirs, sizeof(dirNeedle), dirInfoCompare);
+     }
+--- ./lib/misc.c.org   Sat Jun 16 14:14:12 2001
++++ ./lib/misc.c       Sat Jun 16 14:14:30 2001
+@@ -869,3 +869,38 @@
+               &pEVR, 1);
+     }
+ }
++
++/* Based on glibc's function bsearch.
++ * Modified by Pawel Kolodziej <pawelk@pld.org.pl>
++ * Perform a binary search for KEY in BASE which has NMEMB elements
++ * of SIZE bytes each.  The comparisons are done by (*COMPAR)(). 
++ * Return element not less then KEY. Never return NULL
++ */
++void *
++bsearchnl (const void *key, const void *base, size_t nmemb, size_t size,
++       int (*compar) (const void *, const void *))
++{
++  size_t l, u, idx;
++  const void *p;
++  int comparison;
++
++  l = 0;
++  u = nmemb;
++  while (l < u)
++    {
++      idx = (l + u) / 2;
++      p = (void *) (((const char *) base) + (idx * size));
++      comparison = (*compar) (key, p);
++      if (comparison < 0)
++      u = idx;
++      else if (comparison > 0)
++      l = idx + 1;
++      else
++      return (void *) p;
++    }
++  if(l > nmemb-1)
++        l=nmemb-1;
++  p = (void *) (((const char *) base) + (l * size));
++  return (void *)p;
++}
++
+--- ./lib/misc.h.org   Sat Jun 16 14:14:12 2001
++++ ./lib/misc.h       Sat Jun 16 14:14:30 2001
+@@ -102,6 +102,12 @@
+  */
+ void providePackageNVR(Header h);
++
++void *
++bsearchnl (const void *key, const void *base, size_t nmemb, size_t size,
++       int (*compar) (const void *, const void *));
++
++
+ #ifdef __cplusplus
+ }
+ #endif
index d4855a21661ed35d26b52d29e63819016a18bca5..2590e7f78a83f99f2eecd7ee5dcfb0e3bbc808ea 100644 (file)
--- a/rpm.spec
+++ b/rpm.spec
@@ -35,7 +35,7 @@ Patch11:      %{name}-suggestions.patch
 Patch12:       %{name}-rh-lame.patch
 Patch13:       %{name}-glob.patch
 Patch14:       %{name}-header_h.patch  
-Patch15:       %{name}-deps-lfind.patch
+Patch15:       %{name}-fast-alAddPackage.patch
 Patch37:        %{name}-short_circuit.patch
 Patch38:        %{name}-section_test.patch
 BuildRequires: gettext-devel
@@ -216,6 +216,7 @@ construir pacotes usando o RPM.
 %patch12 -p0
 %patch11 -p0
 %patch12 -p0
+%patch15 -p0
 %patch31 -p1
 install %{SOURCE2} macros.pld.in
 %patch38 -p1
This page took 0.044217 seconds and 4 git commands to generate.