poldek: poldek/capreq.c, poldek/capreq.h, poldek/capreqidx.c, pold...

mis mis at pld-linux.org
Thu Jul 12 23:29:31 CEST 2007


Author: mis                          Date: Thu Jul 12 21:29:31 2007 GMT
Module: poldek                        Tag: HEAD
---- Log message:
- cap names allocated once (reduces cpu and mem usage)
- minor cleanups

---- Files affected:
poldek/poldek:
   capreq.c (1.45 -> 1.46) , capreq.h (1.31 -> 1.32) , capreqidx.c (1.17 -> 1.18) , capreqidx.h (1.9 -> 1.10) , fileindex.c (1.31 -> 1.32) , fileindex.h (1.12 -> 1.13) , pkgset-req.c (1.52 -> 1.53) , pkgset.c (1.99 -> 1.100) , lib_pkgset.c (1.21 -> 1.22) , pkg.c (1.118 -> 1.119) 
poldek/poldek/install:
   obsoletes.c (1.10 -> 1.11) , requirements.c (1.11 -> 1.12) 

---- Diffs:

================================================================
Index: poldek/poldek/capreq.c
diff -u poldek/poldek/capreq.c:1.45 poldek/poldek/capreq.c:1.46
--- poldek/poldek/capreq.c:1.45	Sat Jun 30 14:01:43 2007
+++ poldek/poldek/capreq.c	Thu Jul 12 23:29:26 2007
@@ -39,6 +39,44 @@
 static void capreq_store(struct capreq *cr, tn_buf *nbuf);
 static struct capreq *capreq_restore(tn_alloc *na, tn_buf_it *nbufi);
 
+static tn_hash *capreqname_h = NULL;
+static tn_alloc *capreqname_na = NULL;
+static const char *capreqname_last_name = NULL; /* semi-cache */
+
+static void capreqname_init(void)
+{
+    capreqname_na = n_alloc_new(256, TN_ALLOC_OBSTACK);
+    capreqname_h = n_hash_new_na(capreqname_na, 1024 * 128, NULL);
+    n_hash_ctl(capreqname_h, TN_HASH_NOCPKEY);
+}
+
+const char *capreq__alloc_name(const char *name)
+{
+    unsigned khash = 0;
+    int klen = 0;
+    char *naname;
+    
+    if (!capreqname_h)
+        capreqname_init();
+    
+    if (capreqname_last_name && strcmp(capreqname_last_name, name) == 0)
+        return capreqname_last_name;
+
+    //if (n_hash_size(capreqname_h) % 5000 == 0)
+    //    n_hash_stats(capreqname_h);
+
+    if ((naname = n_hash_get_ex(capreqname_h, name, &klen, &khash))) {
+        capreqname_last_name = naname;
+        return naname;
+    }
+    
+    naname = capreqname_na->na_malloc(capreqname_na, klen + 1);
+    memcpy(naname, name, klen + 1);
+    capreqname_last_name = naname;
+    n_hash_insert_ex(capreqname_h, naname, klen, khash, naname);
+    
+    return naname;
+}
 
 void capreq_free_na(tn_alloc *na, struct capreq *cr) 
 {
@@ -92,7 +130,7 @@
 int capreq_cmp_name_evr(struct capreq *cr1, struct capreq *cr2) 
 {
     register int rc;
-    
+
     if ((rc = strcmp(capreq_name(cr1), capreq_name(cr2))))
         return rc;
 
@@ -207,7 +245,7 @@
     return do_capreq_snprintf(str, size, cr, 0);
 }
 
-uint8_t capreq_bufsize(const struct capreq *cr) 
+static uint8_t capreq_bufsize(const struct capreq *cr) 
 {
     register int max_ofs = 0;
 
@@ -222,8 +260,9 @@
 
     if (max_ofs == 0)
         max_ofs = 1;
+    else 
+        max_ofs += strlen(&cr->_buff[max_ofs]) + 1;
     
-    max_ofs += strlen(&cr->_buf[max_ofs]) + 1;
     //printf("sizeof %s = %d (5 + %d + (%s) + %d)\n", capreq_snprintf_s(cr),
     //       size, max_ofs, &cr->_buf[max_ofs], strlen(&cr->_buf[max_ofs]));
 
@@ -233,8 +272,7 @@
     return max_ofs;
 }
 
-static
-uint8_t capreq_sizeof(const struct capreq *cr) 
+static uint8_t capreq_sizeof(const struct capreq *cr) 
 {
     size_t size;
 
@@ -294,7 +332,7 @@
         name_len = strlen(name);
     }
     
-    len = 1 + name_len + 1;
+    len = 1; // + name_len + 1;
 
     if (epoch) {
         if (version == NULL)
@@ -327,29 +365,31 @@
 
     cr->cr_flags = cr->cr_relflags = 0;
     cr->cr_ep_ofs = cr->cr_ver_ofs = cr->cr_rel_ofs = 0;
+
+    cr->name = capreq__alloc_name(name);
         
-    buf = cr->_buf;
+    buf = cr->_buff;
     *buf++ = '\0';          /* set buf[0] to '\0' */
     
-    memcpy(buf, name, name_len);
-    buf += name_len;
-    *buf++ = '\0';
+    //memcpy(buf, name, name_len);
+    //buf += name_len;
+    //*buf++ = '\0';
     
     if (epoch) {
-        cr->cr_ep_ofs = buf - cr->_buf;
+        cr->cr_ep_ofs = buf - cr->_buff;
         memcpy(buf, &epoch, sizeof(epoch));
         buf += sizeof(epoch);
     }
 
     if (version != NULL) {
-        cr->cr_ver_ofs = buf - cr->_buf;
+        cr->cr_ver_ofs = buf - cr->_buff;
         memcpy(buf, version, version_len);
         buf += version_len ;
         *buf++ = '\0';
     }
     
     if (release != NULL) {
-        cr->cr_rel_ofs = buf - cr->_buf;
+        cr->cr_rel_ofs = buf - cr->_buff;
         memcpy(buf, release, release_len);
         buf += release_len ;
         *buf++ = '\0';
@@ -404,7 +444,7 @@
 {
     int32_t epoch;
 
-    memcpy(&epoch, &cr->_buf[cr->cr_ep_ofs], sizeof(epoch));
+    memcpy(&epoch, &cr->_buff[cr->cr_ep_ofs], sizeof(epoch));
     return epoch;
 }
 
@@ -463,12 +503,26 @@
     return nbuf;
 }
 
-
-static
-void capreq_store(struct capreq *cr, tn_buf *nbuf) 
+/* store format:
+  
+  0. size          uint8_t
+  1. flags&offsets uint8_t[5]
+  2. '\0'          char         // legacy, needless in fact
+  3. name          char[]
+
+  -- if versioned --
+  4. '\0'
+  5. epoch         uint32_t in network byte order
+  6. '\0'          
+  7. version       char[]
+  8. '\0'
+  9. release       char[]
+*/
+static void capreq_store(struct capreq *cr, tn_buf *nbuf) 
 {
+    register int i;
     int32_t epoch, nepoch;
-    uint8_t size, bufsize;
+    uint8_t size, bufsize, name_len;
     uint8_t cr_buf[5];
     uint8_t cr_flags = 0, cr_relflags = 0;
 
@@ -487,23 +541,35 @@
     cr_buf[2] = cr->cr_ep_ofs;
     cr_buf[3] = cr->cr_ver_ofs;
     cr_buf[4] = cr->cr_rel_ofs;
-	
-    bufsize = capreq_bufsize(cr) - 1; /* without '\0' */
+
+
+    bufsize = capreq_bufsize(cr) - 1; /* without last '\0' */
     size = sizeof(cr_buf) + bufsize;
-	
+    name_len = strlen(cr->name);
+    size += name_len + 1;       /* +1 for leading '\0' */
+
+    for (i=2; i < 5; i++)
+        if (cr_buf[i])
+            cr_buf[i] += name_len + 1;
+
     n_buf_add_int8(nbuf, size);
     n_buf_add(nbuf, cr_buf, sizeof(cr_buf));
 
-    if (cr->cr_ep_ofs) {
-        epoch = capreq_epoch(cr);
-        nepoch = n_hton32(epoch);
-        memcpy(&cr->_buf[cr->cr_ep_ofs], &nepoch, sizeof(nepoch));
-    }
+    n_buf_add_int8(nbuf, '\0');
+    n_buf_add(nbuf, cr->name, name_len);
 
-    n_buf_add(nbuf, cr->_buf, bufsize);
+    if (bufsize) {          /* versioned? */
+        if (cr->cr_ep_ofs) {
+            epoch = capreq_epoch(cr);
+            nepoch = n_hton32(epoch);
+            memcpy(&cr->_buff[cr->cr_ep_ofs], &nepoch, sizeof(nepoch));
+        }
     
-    if (cr->cr_ep_ofs) 
-        memcpy(&cr->_buf[cr->cr_ep_ofs], &epoch, sizeof(epoch)); /* restore epoch */
+        n_buf_add(nbuf, cr->_buff, bufsize);
+
+        if (cr->cr_ep_ofs)
+            memcpy(&cr->_buff[cr->cr_ep_ofs], &epoch, sizeof(epoch));
+    }
 
     if (cr_flags)
 		cr->cr_flags = cr_flags;
@@ -512,48 +578,75 @@
 		cr->cr_relflags = cr_relflags;
 }
 
-static
-struct capreq *capreq_restore(tn_alloc *na, tn_buf_it *nbufi) 
+static struct capreq *capreq_restore(tn_alloc *na, tn_buf_it *nbufi) 
 {
     struct capreq *cr;
-    uint8_t size = 0, *cr_bufp;
-    uint8_t cr_buf[5];          /* placeholder,  for sizeof */
-    
-    
+    register int i;
+    uint8_t size = 0, *cr_buf, *buff;
+    uint8_t phcr_buf[5];          /* placeholder,  for sizeof */
+    char  *p, *name = NULL;
+    size_t name_len = 0;
+
     n_buf_it_get_int8(nbufi, &size);
-    cr_bufp = n_buf_it_get(nbufi, sizeof(cr_buf));
-    if (cr_bufp == NULL)
+    
+    cr_buf = n_buf_it_get(nbufi, sizeof(phcr_buf));
+    if (cr_buf == NULL)
         return NULL;
 
-    size -= sizeof(cr_buf);
-#if XXX_IGNORE_RPMLIB_DEPS
-    if (cr_bufp[1] & CAPREQ_RPMLIB) {
-        n_buf_it_get(nbufi, size);
-        return NULL;
+    size -= sizeof(phcr_buf);
+    buff = n_buf_it_get(nbufi, size);
+    
+    buff++;                     /* skip '\0' */
+    size--;
+    
+    if ((p = memchr(buff, '\0', size))) { /* versioned? */
+        name = buff;
+        name_len = p - (char*)buff;
+        size -= name_len;
+        buff = p + 1;
+
+    } else {
+        char *n = alloca(size + 1);
+        memcpy(n, buff, size);
+        n[size] = '\0';
+        name = n;
+        name_len = size;
+        size = 0;
     }
-#endif
+    
     if (na)
         cr = na->na_malloc(na, sizeof(*cr) + size + 1);
     else
         cr = n_malloc(sizeof(*cr) + size + 1);
     
-    cr->cr_relflags = cr_bufp[0];
-    cr->cr_flags    = cr_bufp[1];
-    cr->cr_ep_ofs   = cr_bufp[2];
-    cr->cr_ver_ofs  = cr_bufp[3];
-    cr->cr_rel_ofs  = cr_bufp[4];
+    cr->cr_relflags = cr_buf[0];
+    cr->cr_flags    = cr_buf[1];
+
+    for (i=2; i < 5; i++)
+        if (cr_buf[i])
+            cr_buf[i] -= name_len + 1;
+
+    cr->cr_ep_ofs   = cr_buf[2];
+    cr->cr_ver_ofs  = cr_buf[3];
+    cr->cr_rel_ofs  = cr_buf[4];
+
+    cr->name = capreq__alloc_name(name);
 
     if (na)
         cr->cr_relflags |= __NAALLOC;
-
-    cr->_buf[size] = '\0';
-    cr_bufp = n_buf_it_get(nbufi, size);
-    memcpy(cr->_buf, cr_bufp, size);
+    
+    cr->_buff[0] = '\0';
+    if (size) {
+        memcpy(&cr->_buff[1], buff, size);
+        cr->_buff[size] = '\0';
+    }
 
     if (cr->cr_ep_ofs) {
         int32_t epoch = n_ntoh32(capreq_epoch(cr));
-        memcpy(&cr->_buf[cr->cr_ep_ofs], &epoch, sizeof(epoch));
+        memcpy(&cr->_buff[cr->cr_ep_ofs], &epoch, sizeof(epoch));
     }
+    DBGF("cr %s\n", capreq_snprintf_s(cr));
+    
 	//printf("cr %s: %d, %d, %d, %d, %d\n", capreq_snprintf_s(cr), 
 	//cr_bufp[0], cr_bufp[1], cr_bufp[2], cr_bufp[3], cr_bufp[4]);
     //printf("REST* %s %d -> %d\n", capreq_snprintf_s(cr),
@@ -738,4 +831,3 @@
     n_array_uniq_ex(arr, (tn_fn_cmp)cmp_uniq);
     return arr;
 }
-

================================================================
Index: poldek/poldek/capreq.h
diff -u poldek/poldek/capreq.h:1.31 poldek/poldek/capreq.h:1.32
--- poldek/poldek/capreq.h:1.31	Sat Jun 30 14:01:43 2007
+++ poldek/poldek/capreq.h	Thu Jul 12 23:29:26 2007
@@ -41,15 +41,15 @@
 struct capreq {
     uint8_t  cr_flags;
     uint8_t  cr_relflags;
-/*  uint8_t cr_name_ofs = 1, always */
+    const char *name;
     uint8_t  cr_ep_ofs;
     uint8_t  cr_ver_ofs;         /* 0 if capreq hasn't version */
     uint8_t  cr_rel_ofs;         /* 0 if capreq hasn't release */
-    char    _buf[0];             /* alias cr_name, first byte is always '\0' */
+    char    _buff[0];            /* for evr, first byte is always '\0' */
 };
 
 /* CAUTION: side effects! */
-#define capreq_name(cr)     &(cr)->_buf[1]
+#define capreq_name(cr)     (cr)->name
 
 #ifdef SWIG
 # define extern__inline
@@ -62,8 +62,8 @@
 #define capreq_epoch(cr) \
     ((cr)->cr_ep_ofs ? capreq_epoch_(cr) : 0)
 
-#define capreq_ver(cr)  (&(cr)->_buf[(cr)->cr_ver_ofs])
-#define capreq_rel(cr)  (&(cr)->_buf[(cr)->cr_rel_ofs])
+#define capreq_ver(cr)  (&(cr)->_buff[(cr)->cr_ver_ofs])
+#define capreq_rel(cr)  (&(cr)->_buff[(cr)->cr_rel_ofs])
 
 #define capreq_has_epoch(cr)    (cr)->cr_ep_ofs   
 #define capreq_has_ver(cr)      (cr)->cr_ver_ofs
@@ -75,8 +75,10 @@
 #define capreq_is_prereq(cr)    ((cr)->cr_flags & CAPREQ_PREREQ)
 #define capreq_is_prereq_un(cr) ((cr)->cr_flags & CAPREQ_PREREQ_UN)
 #define capreq_is_obsl(cr)        capreq_is_prereq((cr))
-#define capreq_is_file(cr)      ((cr)->_buf[1] == '/')
-#define capreq_isnot_file(cr)   ((cr)->_buf[1] != '/')
+
+#define capreq_is_file(cr)        (*(cr)->name == '/')
+#define capreq_isnot_file(cr)     (*(cr)->name != '/')
+
 
 #define capreq_is_bastard(cr)     ((cr)->cr_flags & CAPREQ_BASTARD)
 #define capreq_is_autodirreq(cr)  (capreq_is_bastard(cr) && capreq_is_file(cr))
@@ -95,17 +97,20 @@
 struct capreq *capreq_new(tn_alloc *na, const char *name, int32_t epoch,
                           const char *version, const char *release,
                           int32_t relflags, int32_t flags);
+#ifndef SWIG
+const char *capreq__alloc_name(const char *name);
+#endif
 
-#define capreq_new_name_a(name, crptr)	     \
-    {                                        \
-        struct capreq *__cr;                   \
-        int len = strlen((name));            \
-        __cr = alloca(sizeof(*__cr) + len + 2);  \
-        __cr->cr_flags = __cr->cr_relflags = 0;  \
+#define capreq_new_name_a(nam, crptr)                              \
+    {                                                              \
+        struct capreq *__cr;                                       \
+        const char *name = capreq__alloc_name(nam);                \
+        __cr = alloca(sizeof(*__cr) + 2);                          \
+        __cr->cr_flags = __cr->cr_relflags = 0;                    \
         __cr->cr_ep_ofs = __cr->cr_ver_ofs = __cr->cr_rel_ofs = 0; \
-        __cr->_buf[0] = '\0';                  \
-        memcpy(&__cr->_buf[1], (name), len + 1);  \
-        crptr = __cr;                            \
+        __cr->_buff[0] = '\0';                                     \
+        __cr->name = name;                                         \
+        crptr = __cr;                                              \
     }
 
 void capreq_free_na(tn_alloc *na, struct capreq *cr);

================================================================
Index: poldek/poldek/capreqidx.c
diff -u poldek/poldek/capreqidx.c:1.17 poldek/poldek/capreqidx.c:1.18
--- poldek/poldek/capreqidx.c:1.17	Mon Sep 27 22:26:57 2004
+++ poldek/poldek/capreqidx.c	Thu Jul 12 23:29:26 2007
@@ -23,6 +23,7 @@
 #include "i18n.h"
 #include "pkg.h"
 #include "capreqidx.h"
+#include "capreq.h"
 #include "log.h"
 
 static void capreq_ent_free(struct capreq_idx_ent *ent) 
@@ -39,6 +40,7 @@
     MEMINF("START");
     idx->na = n_alloc_new(4, TN_ALLOC_OBSTACK);
     idx->ht = n_hash_new_na(idx->na, nelem, (tn_fn_free)capreq_ent_free);
+    n_hash_ctl(idx->ht, TN_HASH_NOCPKEY);
     MEMINF("END");
     return 1;
 }
@@ -69,13 +71,18 @@
                    struct pkg *pkg)
 {
     struct capreq_idx_ent *ent;
-            
-    if ((ent = n_hash_get(idx->ht, capname)) == NULL) {
+    unsigned khash = 0;
+    int klen = 0;
+    
+    if ((ent = n_hash_get_ex(idx->ht, capname, &klen, &khash)) == NULL) {
+        const char *hcapname = capreq__alloc_name(capname);
+        
         ent = idx->na->na_malloc(idx->na, sizeof(*ent));
         ent->_size = 1;
         ent->items = 1;
         ent->crent_pkg = pkg;
-        n_hash_insert(idx->ht, capname, ent);
+        
+        n_hash_insert_ex(idx->ht, hcapname, klen, khash, ent);
 #if ENABLE_TRACE        
         if ((n_hash_size(idx->ht) % 1000) == 0)
             n_hash_stats(idx->ht);
@@ -86,13 +93,15 @@
 
         if (ent->_size == 1)    /* crent_pkgs is NOT allocated */
             capreq_idx_ent_transform_to_array(ent);
-        
+
+#if 0                           /* not happens in fact */
         if (idx->flags & CAPREQ_IDX_CAP) { /* check for duplicates */
             for (i=0; i < ent->items; i++) { 
                 if (pkg == ent->crent_pkgs[i])
                     return 1;
             }
         }
+#endif
         
         if (ent->items == ent->_size) {
             ent->_size *= 2;

================================================================
Index: poldek/poldek/capreqidx.h
diff -u poldek/poldek/capreqidx.h:1.9 poldek/poldek/capreqidx.h:1.10
--- poldek/poldek/capreqidx.h:1.9	Thu May 12 17:41:05 2005
+++ poldek/poldek/capreqidx.h	Thu Jul 12 23:29:26 2007
@@ -1,6 +1,6 @@
 /* $Id$ */
-#ifndef POLDEK_PROVREQIDX_H
-#define POLDEK_PROVREQIDX_H
+#ifndef POLDEK_CAPREQ_IDX_H
+#define POLDEK_CAPREQ_IDX_H
 
 #include <stdint.h>
 #include <trurl/nhash.h>
@@ -9,8 +9,6 @@
 #define CAPREQ_IDX_CAP (1 << 0)
 #define CAPREQ_IDX_REQ (1 << 1)
 
-
-
 struct capreq_idx {
     unsigned flags;
     tn_hash  *ht;       /* name => *pkgs[] */
@@ -23,7 +21,6 @@
     int32_t _size;
     union {
         struct pkg *pkg;
-//    struct pkg *pkgs[0];       /* pkgs list */
         struct pkg **pkgs;       /* pkgs list */
     } capreq_idx_ent_pkg;
 };

================================================================
Index: poldek/poldek/fileindex.c
diff -u poldek/poldek/fileindex.c:1.31 poldek/poldek/fileindex.c:1.32
--- poldek/poldek/fileindex.c:1.31	Wed Jun 20 10:33:40 2007
+++ poldek/poldek/fileindex.c	Thu Jul 12 23:29:26 2007
@@ -136,12 +136,9 @@
     
     fi->cnflh = NULL;
     fi->na = na;
-    fi->_last_files = NULL;
-    fi->_last_dirname = NULL;
     return fi;
 }
 
-
 void file_index_free(struct file_index *fi) 
 {
     n_hash_free(fi->dirs);
@@ -151,34 +148,25 @@
     n_alloc_free(fi->na);
 }
 
-
 void *file_index_add_dirname(struct file_index *fi, const char *dirname)
 {
     tn_array *files;
+    int klen = 0;
+    unsigned khash = 0;
+    
     DBGF("%s\n", dirname);
-    if (fi->_last_files != NULL && strcmp(dirname, fi->_last_dirname) == 0) {
-        DBGF("HIT dirname = %s %s\n", dirname, fi->last_dirname);
-        files = fi->_last_files;
-        
-    } else {
-        /* find directory */
-        if ((files = n_hash_get(fi->dirs, dirname)) == NULL) {
-            files = n_array_new(4, NULL, fent_cmp);
-            n_hash_insert(fi->dirs, dirname, files);
-        }
+
+    if ((files = n_hash_get_ex(fi->dirs, dirname, &klen, &khash)) == NULL) {
+        files = n_array_new(4, NULL, fent_cmp);
+        n_hash_insert_ex(fi->dirs, dirname, klen, khash, files);
+    }
 #if ENABLE_TRACE        
-        if ((n_hash_size(fi->dirs) % 10) == 0) {
-            DBGF("stats\n");
-            n_hash_stats(fi->dirs);
-        }
-#endif
-#if 0                           /* XXX - cache */
-        fi->_last_files = files;
-        n_cfree(&fi->_last_dirname);
-        fi->_last_dirname = n_strdup(dirname);
-#endif        
+    if ((n_hash_size(fi->dirs) % 10) == 0) {
+        DBGF("stats\n");
+        n_hash_stats(fi->dirs);
     }
-    
+#endif
+
     return files;
 }
 
@@ -186,7 +174,6 @@
 {
     n_array_sort(files);
 }
-
 
 int file_index_add_basename(struct file_index *fi, void *fidx_dir,
                             struct flfile *flfile,

================================================================
Index: poldek/poldek/fileindex.h
diff -u poldek/poldek/fileindex.h:1.12 poldek/poldek/fileindex.h:1.13
--- poldek/poldek/fileindex.h:1.12	Sun Aug 20 20:14:58 2006
+++ poldek/poldek/fileindex.h	Thu Jul 12 23:29:26 2007
@@ -18,9 +18,6 @@
     tn_hash   *dirs;             /* dirname => tn_array *files */
     tn_hash   *cnflh;
     tn_alloc  *na;
-
-    tn_array  *_last_files;     /* add_dirname()'s temporary var */
-    const char *_last_dirname;
 };
 
 struct file_index *file_index_new(int nelem);

================================================================
Index: poldek/poldek/pkgset-req.c
diff -u poldek/poldek/pkgset-req.c:1.52 poldek/poldek/pkgset-req.c:1.53
--- poldek/poldek/pkgset-req.c:1.52	Mon Jul  9 20:31:56 2007
+++ poldek/poldek/pkgset-req.c	Thu Jul 12 23:29:26 2007
@@ -232,7 +232,7 @@
         rpkg = reqpkg_new(dpkg, req, 0, 0);
         
         n_array_push(pkg->reqpkgs, rpkg);
-        n_array_sort(pkg->reqpkgs);
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/poldek/poldek/capreq.c?r1=1.45&r2=1.46&f=u
    http://cvs.pld-linux.org/poldek/poldek/capreq.h?r1=1.31&r2=1.32&f=u
    http://cvs.pld-linux.org/poldek/poldek/capreqidx.c?r1=1.17&r2=1.18&f=u
    http://cvs.pld-linux.org/poldek/poldek/capreqidx.h?r1=1.9&r2=1.10&f=u
    http://cvs.pld-linux.org/poldek/poldek/fileindex.c?r1=1.31&r2=1.32&f=u
    http://cvs.pld-linux.org/poldek/poldek/fileindex.h?r1=1.12&r2=1.13&f=u
    http://cvs.pld-linux.org/poldek/poldek/pkgset-req.c?r1=1.52&r2=1.53&f=u
    http://cvs.pld-linux.org/poldek/poldek/pkgset.c?r1=1.99&r2=1.100&f=u
    http://cvs.pld-linux.org/poldek/poldek/lib_pkgset.c?r1=1.21&r2=1.22&f=u
    http://cvs.pld-linux.org/poldek/poldek/pkg.c?r1=1.118&r2=1.119&f=u
    http://cvs.pld-linux.org/poldek/poldek/install/obsoletes.c?r1=1.10&r2=1.11&f=u
    http://cvs.pld-linux.org/poldek/poldek/install/requirements.c?r1=1.11&r2=1.12&f=u



More information about the pld-cvs-commit mailing list