poldek: poldek/libpoldek.sym, poldek/pkg.c, poldek/pkg.h, poldek/pkgu.c, po...

mis mis at pld-linux.org
Sun May 25 11:25:36 CEST 2008


Author: mis                          Date: Sun May 25 09:25:36 2008 GMT
Module: poldek                        Tag: HEAD
---- Log message:
- SourceRPM moved to main index:
  -- pkg_srcfilename*() to access src.rpm
  -- ls -S lists also subpackages with potential security fixes 
  -- desc still fetches src.rpm from pkgu if pkg_srcfilename return null
 

---- Files affected:
poldek/poldek:
   libpoldek.sym (1.36 -> 1.37) , pkg.c (1.122 -> 1.123) , pkg.h (1.82 -> 1.83) , pkgu.c (1.38 -> 1.39) , pkgu.h (1.13 -> 1.14) 
poldek/poldek/cli:
   desc.c (1.34 -> 1.35) , ls.c (1.27 -> 1.28) 
poldek/poldek/pkgdir:
   pkg_restore.c (1.24 -> 1.25) , pkg_store.c (1.26 -> 1.27) , pkg_store.h (1.7 -> 1.8) 
poldek/poldek/pkgdir/metadata:
   load.c (1.5 -> 1.6) 
poldek/poldek/pkgdir/pdir:
   pdir_pkg_restore.c (1.10 -> 1.11) 
poldek/poldek/pm/rpm:
   rpm_pkg_ld.c (1.16 -> 1.17) 

---- Diffs:

================================================================
Index: poldek/poldek/libpoldek.sym
diff -u poldek/poldek/libpoldek.sym:1.36 poldek/poldek/libpoldek.sym:1.37
--- poldek/poldek/libpoldek.sym:1.36	Sat May 24 20:19:07 2008
+++ poldek/poldek/libpoldek.sym	Sun May 25 11:25:31 2008
@@ -99,6 +99,8 @@
 pkg_snprintf_s
 pkg_snprintf_s0
 pkg_snprintf_s1
+pkg_srcfilename
+pkg_srcfilename_s
 pkg_strbtime
 pkg_strcmp_name_evr
 pkg_stritime

================================================================
Index: poldek/poldek/pkg.c
diff -u poldek/poldek/pkg.c:1.122 poldek/poldek/pkg.c:1.123
--- poldek/poldek/pkg.c:1.122	Sun Jan 27 19:36:06 2008
+++ poldek/poldek/pkg.c	Sun May 25 11:25:31 2008
@@ -175,13 +175,16 @@
 struct pkg *pkg_new_ext(tn_alloc *na, 
                         const char *name, int32_t epoch,
                         const char *version, const char *release,
-                        const char *arch, const char *os, const char *fn,
+                        const char *arch, const char *os,
+                        const char *fn, const char *srcfn, 
                         uint32_t size, uint32_t fsize,
                         uint32_t btime)
 {
     struct pkg *pkg;
-    int name_len = 0, version_len = 0, release_len = 0, fn_len = 0,arch_len = 0;
-    char *buf, pkg_fn[PATH_MAX];
+    int name_len = 0, version_len = 0, release_len = 0, fn_len = 0,
+        srcfn_len = 0, arch_len = 0;
+    char *buf, pkg_fn[PATH_MAX], pkg_srcfn[PATH_MAX];
+    uint32_t flags = 0;
     int len;
 
     n_assert(name);
@@ -213,6 +216,29 @@
         }
     }
 
+    if (srcfn) {   /* compare source filename with "standard" name */
+        flags |= PKG_HAS_SRCFN;
+        if (strcmp(srcfn, "-") == 0) /* "default" */
+            srcfn = NULL;
+        
+        else {
+            n_snprintf(pkg_srcfn, sizeof(pkg_srcfn), "%s-%s-%s.src.rpm", name,
+                       version, release);
+        
+            if (strcmp(pkg_srcfn, srcfn) == 0)
+                srcfn = NULL;
+        }
+        
+        if (srcfn) { /* non default name, it's child package */
+            char *p = strstr(srcfn, ".src.rpm");
+            if (p)
+                *p = '\0';
+            
+            srcfn_len = strlen(srcfn);
+            len += srcfn_len + 1;
+        }
+    }
+    
     len += len + 1;             /* for id (nvr) */
     
     if (poldek_conf_MULTILIB && arch) {
@@ -229,7 +255,7 @@
         pkg->na = n_ref(na);
         DBGF("+%p %p %d\n", na, &na->_refcnt, na->_refcnt);
     }
-    
+    pkg->flags = flags;
     pkg->epoch = epoch;
     pkg->size = size;
     pkg->fsize = fsize;
@@ -260,6 +286,14 @@
         *buf++ = '\0';
     }
 
+    pkg->srcfn = NULL;
+    if (srcfn) {
+        pkg->srcfn = buf;
+        memcpy(buf, srcfn, srcfn_len);
+        buf += srcfn_len;
+        *buf++ = '\0';
+    }
+
     if (arch) 
         pkg->_arch = pkgmod_register_arch(arch);
 
@@ -322,7 +356,7 @@
     struct pkg *new;
 
     new = pkg_new_ext(na, pkg->name, pkg->epoch, pkg->ver, pkg->rel,
-                      pkg_arch(pkg), pkg_os(pkg), pkg->fn,
+                      pkg_arch(pkg), pkg_os(pkg), pkg->fn, pkg->srcfn,
                       pkg->size, pkg->fsize, pkg->btime);
     
     new->fmtime = pkg->fmtime;
@@ -1078,6 +1112,60 @@
     return NULL;
 }
 
+char *pkg_srcfilename(const struct pkg *pkg, char *buf, size_t size) 
+{
+    int n_len, v_len, r_len;
+    unsigned len = 0;
+    char *s;
+    
+    if (pkg->srcfn) {
+        n_snprintf(buf, size, "%s.src.rpm", pkg->srcfn);
+        return buf;
+    }
+
+    if ((pkg->flags & PKG_HAS_SRCFN) == 0)
+        return NULL;
+    
+    n_len = pkg->ver - pkg->name - 1;
+    v_len = pkg->rel - pkg->ver - 1;
+    r_len = strlen(pkg->rel);
+
+    len = n_len + 1 + v_len + 1 +
+        r_len + 1 + 3/* src */ + 1/* '.' */ + 3/* "rpm" */ + 1;
+
+    if (len >= size)
+        return NULL;
+    
+    s = buf;
+    /* all pkg members are stored in _buf */
+    memcpy(s, pkg->name, len - 4 - 3); 
+    
+    s += n_len;
+    n_assert(*s == '\0');
+    *s++ = '-';
+
+    s += v_len;
+    n_assert(*s == '\0');
+    *s++ = '-';
+
+    s += r_len;
+    n_assert(*s == '\0');	
+    *s++ = '.';
+
+    memcpy(s, "src", 3);
+    s += 3;
+    *s++ = '.';
+    
+    memcpy(s, "rpm\0", 4);
+    return buf;
+}
+
+char *pkg_srcfilename_s(const struct pkg *pkg) 
+{
+    static char buf[256];
+    return pkg_srcfilename(pkg, buf, sizeof(buf));
+}
+
 char *pkg_filename(const struct pkg *pkg, char *buf, size_t size) 
 {
     int n_len, v_len, r_len, a_len = 0;

================================================================
Index: poldek/poldek/pkg.h
diff -u poldek/poldek/pkg.h:1.82 poldek/poldek/pkg.h:1.83
--- poldek/poldek/pkg.h:1.82	Wed Jan 23 16:01:45 2008
+++ poldek/poldek/pkg.h	Sun May 25 11:25:31 2008
@@ -15,7 +15,7 @@
 struct pkguinf;                 /* defined in pkgu.h   */
 struct pkgdir;                  /* defined in pkgdir/pkgdir.h */
 
-
+#define PKG_HAS_SRCFN       (1 << 4) /* set source package filename? */
 #define PKG_HAS_PKGUINF     (1 << 5) /* user-level info (pkgu.c) */
 #define PKG_HAS_SELFCAP     (1 << 6) /* name = e:v-r cap */
 
@@ -68,6 +68,8 @@
     char         *rel;
 
     char         *fn;         /* package filename */
+    char         *srcfn;      /* package filename */
+    
     uint32_t     fmtime;      /* package file mtime */
     char         *_nvr;       /* NAME-VERSION-RELEASE */
 
@@ -115,12 +117,12 @@
                         const char *name, int32_t epoch,
                         const char *version, const char *release,
                         const char *arch, const char *os,
-                        const char *fn,
+                        const char *fn, const char *srcfn,
                         uint32_t size, uint32_t fsize,
                         uint32_t btime);
 
 #define pkg_new(n, e, v, r, a, o) \
-    pkg_new_ext(NULL, n, e, v, r, a, o, NULL, 0, 0, 0)
+    pkg_new_ext(NULL, n, e, v, r, a, o, NULL, NULL, 0, 0, 0)
 
 
 #define PKG_LDNEVR       0
@@ -195,6 +197,9 @@
 int pkg_add_pkgcnfl(struct pkg *pkg, struct pkg *cpkg, int isbastard);
 int pkg_has_pkgcnfl(struct pkg *pkg, struct pkg *cpkg);
 
+/* src.rpm */
+char *pkg_srcfilename(const struct pkg *pkg, char *buf, size_t size);
+char *pkg_srcfilename_s(const struct pkg *pkg);
 
 /* RET %path/%name-%version-%release.%arch.rpm  */
 char *pkg_filename(const struct pkg *pkg, char *buf, size_t size);

================================================================
Index: poldek/poldek/pkgu.c
diff -u poldek/poldek/pkgu.c:1.38 poldek/poldek/pkgu.c:1.39
--- poldek/poldek/pkgu.c:1.38	Sat May 24 20:54:39 2008
+++ poldek/poldek/pkgu.c	Sun May 25 11:25:31 2008
@@ -51,7 +51,7 @@
     char              *vendor;
     char              *buildhost;
     char              *distro;
-    char              *sourcerpm;
+    char              *legacy_sourcerpm;
     char              *changelog;
     
     tn_hash           *_ht;
@@ -115,7 +115,7 @@
     pkgu->_description = NULL;
     pkgu->vendor = NULL;
     pkgu->buildhost = NULL;
-    pkgu->sourcerpm = NULL;
+    pkgu->legacy_sourcerpm = NULL;
 
     pkgu->_ht = NULL;
     pkgu->_langs = NULL;
@@ -595,11 +595,12 @@
 }
 
 static
-char *load_changelog_from_rpmhdr(tn_alloc *na, void *hdr, const char *sourcerpm)
+char *load_changelog_from_rpmhdr(tn_alloc *na, void *hdr)
 {
     const char *name, *version, *release;
-    char nvr[512], *changelog = NULL;
-    uint32_t   epoch, n;
+    char nvr[512], *changelog = NULL, *sourcerpm = NULL;
+    struct rpmhdr_ent srcrpm_ent;
+    uint32_t epoch, n;
     
     pm_rpmhdr_nevr(hdr, &name, &epoch, &version, &release, NULL, NULL);
     if (name == NULL || version == NULL || release == NULL)
@@ -607,6 +608,9 @@
 
     n = n_snprintf(nvr, sizeof(nvr), "%s-%s-%s.", name, version, release);
 
+    if (pm_rpmhdr_ent_get(&srcrpm_ent, hdr, RPMTAG_SOURCERPM))
+        sourcerpm = pm_rpmhdr_ent_as_str(&srcrpm_ent);
+    
     /* "main" package */
     if (sourcerpm == NULL || strncmp(sourcerpm, nvr, n) == 0) { 
         changelog = do_load_changelog_from_rpmhdr(na, hdr);
@@ -629,6 +633,9 @@
                    "* %s poldek at pld-linux.org\n- see %s's log\n", ts, mainame);
     }
     
+    if (sourcerpm)
+        pm_rpmhdr_ent_free(&srcrpm_ent);
+    
     return changelog;
 }
 
@@ -700,8 +707,8 @@
     pkgu->url = cp_tag(pkgu->_na, h, RPMTAG_URL);
     pkgu->distro = cp_tag(pkgu->_na, h, RPMTAG_DISTRIBUTION);
     pkgu->buildhost = cp_tag(pkgu->_na, h, RPMTAG_BUILDHOST);
-    pkgu->sourcerpm = cp_tag(pkgu->_na, h, RPMTAG_SOURCERPM);
-    pkgu->changelog = load_changelog_from_rpmhdr(pkgu->_na, h, pkgu->sourcerpm);
+    pkgu->legacy_sourcerpm = NULL;
+    pkgu->changelog = load_changelog_from_rpmhdr(pkgu->_na, h);
     
     return pkgu;
 }
@@ -731,7 +738,6 @@
         { PKGUINF_VENDOR, pkgu->vendor },
         { PKGUINF_BUILDHOST, pkgu->buildhost },
         { PKGUINF_DISTRO, pkgu->distro },
-        { PKGUINF_SOURCERPM, pkgu->sourcerpm },
         { PKGUINF_CHANGELOG, pkgu->changelog },
         { 0, NULL }
     };
@@ -819,8 +825,8 @@
                     set_member(pkgu, &pkgu->distro, val, len);
                     break;
 
-                case PKGUINF_SOURCERPM:
-                    set_member(pkgu, &pkgu->sourcerpm, val, len);
+                case PKGUINF_LEGACY_SOURCERPM:
+                    set_member(pkgu, &pkgu->legacy_sourcerpm, val, len);
                     break;
 
                 case PKGUINF_CHANGELOG:
@@ -894,8 +900,8 @@
         case PKGUINF_DISTRO:
             return pkgu->distro;
 
-        case PKGUINF_SOURCERPM:
-    	    return pkgu->sourcerpm;
+        case PKGUINF_LEGACY_SOURCERPM:
+    	    return pkgu->legacy_sourcerpm;
 
         case PKGUINF_CHANGELOG:
     	    return pkgu->changelog;
@@ -968,8 +974,8 @@
             set_member(pkgu, &pkgu->distro, val, len);
             break;
 
-        case PKGUINF_SOURCERPM:
-            set_member(pkgu, &pkgu->sourcerpm, val, len);
+        case PKGUINF_LEGACY_SOURCERPM:
+            n_die("SOURCERPM");
             break;
 
         case PKGUINF_SUMMARY:

================================================================
Index: poldek/poldek/pkgu.h
diff -u poldek/poldek/pkgu.h:1.13 poldek/poldek/pkgu.h:1.14
--- poldek/poldek/pkgu.h:1.13	Sat May 24 20:19:07 2008
+++ poldek/poldek/pkgu.h	Sun May 25 11:25:31 2008
@@ -14,7 +14,7 @@
 #define PKGUINF_VENDOR       'v'
 #define PKGUINF_BUILDHOST    'b'
 #define PKGUINF_DISTRO       'D'
-#define PKGUINF_SOURCERPM    'S'
+#define PKGUINF_LEGACY_SOURCERPM    'S'
 #define PKGUINF_CHANGELOG    'C'
 
 struct pkguinf;

================================================================
Index: poldek/poldek/cli/desc.c
diff -u poldek/poldek/cli/desc.c:1.34 poldek/poldek/cli/desc.c:1.35
--- poldek/poldek/cli/desc.c:1.34	Sat May 24 20:19:07 2008
+++ poldek/poldek/cli/desc.c	Sun May 25 11:25:31 2008
@@ -779,7 +779,7 @@
 {
     const char *log = NULL;
 
-    if ((pkg->flags & PKG_DBPKG) == 0) { /* not installed */
+    if (pkg->itime == 0) { /* install time zero? -> not installed */
         tn_array *installed;
         time_t btime;
 
@@ -833,9 +833,9 @@
 static void show_description(struct cmdctx *cmdctx, struct pkg *pkg, struct pkguinf *pkgu,
                              unsigned flags, int term_width) 
 {
-    char            fnbuf[PATH_MAX], *fn;
+    char            fnbuf[PATH_MAX];
     char            unit = 'K';
-    const char      *group, *s;
+    const char      *group, *s, *fn;
     double          pkgsize;
 
     if (pkgu && (s = pkguinf_get(pkgu, PKGUINF_SUMMARY))) {
@@ -939,9 +939,13 @@
         cmdctx_printf(cmdctx, "%s\n", pkg_pkgdirpath(pkg));
     }
 
-    if (pkgu && (s = pkguinf_get(pkgu, PKGUINF_SOURCERPM))) {
-        cmdctx_printf_c(cmdctx, PRCOLOR_CYAN, "%-16s", "Source RPM:");
-        cmdctx_printf(cmdctx, "%s\n", s);
+    fn = pkg_srcfilename(pkg, fnbuf, sizeof(fnbuf));
+    if (fn == NULL && pkgu)
+        fn = pkguinf_get(pkgu, PKGUINF_LEGACY_SOURCERPM);
+    
+    if (fn) {
+        cmdctx_printf_c(cmdctx, PRCOLOR_CYAN, "%-16s", "Source package:");
+        cmdctx_printf(cmdctx, "%s\n", fn);
     }
 
     if ((fn = pkg_filename(pkg, fnbuf, sizeof(fnbuf)))) {

================================================================
Index: poldek/poldek/cli/ls.c
diff -u poldek/poldek/cli/ls.c:1.27 poldek/poldek/cli/ls.c:1.28
--- poldek/poldek/cli/ls.c:1.27	Sat May 24 20:19:07 2008
+++ poldek/poldek/cli/ls.c	Sun May 25 11:25:31 2008
@@ -205,7 +205,7 @@
                                 tn_array *evrs)
 {
     int        found, compare_ver = 0, i;
-    tn_array   *ls_ents2, *cmpto_pkgs;
+    tn_array   *ls_ents2, *cmpto_pkgs = NULL, *srcpkgs = NULL;
     char       *cmpto_path;
 
     n_assert(cmdctx->_flags & OPT_LS_UPGRADEABLE);
@@ -227,10 +227,13 @@
 
     ls_ents2 = n_array_clone(ls_ents);
     
+    if (cmdctx->_flags & OPT_LS_UPGRADEABLE_SEC)
+        srcpkgs = n_array_new(64, free, (tn_fn_cmp)strcmp);
+    
     for (i=0; i < n_array_size(ls_ents); i++) {
         struct pkg_dent  *ent;
         struct pkg       *rpkg = NULL;
-        char             evr[128];
+        char             evr[128], *spkg;
         int              cmprc = 0;
         
         ent = n_array_nth(ls_ents, i);
@@ -247,10 +250,14 @@
         if (!found || cmprc >= 0)
             continue;
 
-        if (cmdctx->_flags & OPT_LS_UPGRADEABLE_SEC) {
+        if ((spkg = pkg_srcfilename_s(rpkg))) { 
+            if (n_array_bsearch(srcpkgs, spkg)) /* parent included, so me too */
+                found = 1;
+            
+        } else if (cmdctx->_flags & OPT_LS_UPGRADEABLE_SEC) {
             struct pkg *ipkg, *upkg;
             struct pkguinf *inf;
-
+            
             ipkg = rpkg;
             upkg = ent->pkg_dent_pkg;
             if (cmdctx->_flags & OPT_LS_INSTALLED) {
@@ -262,8 +269,15 @@
             if ((inf = pkg_uinf(upkg)) == NULL)
                 continue;
             
-            if (pkguinf_changelog_with_security_fixes(inf, ipkg->btime))
+            if (pkguinf_changelog_with_security_fixes(inf, ipkg->btime)) {
+                char *sp;
+                if ((sp = pkg_srcfilename_s(rpkg))) {
+                    n_array_push(srcpkgs, n_strdup(sp));
+                    n_array_sort(srcpkgs);
+                    DBGF_F("%s\n", sp);
+                }
                 found = 1;
+            }
             
             pkguinf_free(inf);
         }
@@ -279,8 +293,8 @@
             break;
     }
 
-    if (cmpto_pkgs)
-        n_array_free(cmpto_pkgs);
+    n_array_cfree(&cmpto_pkgs);
+    n_array_cfree(&srcpkgs);
     
     return ls_ents2;
 }

================================================================
Index: poldek/poldek/pkgdir/pkg_restore.c
diff -u poldek/poldek/pkgdir/pkg_restore.c:1.24 poldek/poldek/pkgdir/pkg_restore.c:1.25
--- poldek/poldek/pkgdir/pkg_restore.c:1.24	Fri Jun 22 00:28:35 2007
+++ poldek/poldek/pkgdir/pkg_restore.c	Sun May 25 11:25:31 2008
@@ -63,6 +63,7 @@
 #define PKGT_HAS_BTIME    (1 << 11)
 #define PKGT_HAS_GROUPID  (1 << 12)
 #define PKGT_HAS_FN       (1 << 13)
+#define PKGT_HAS_SRCFN    (1 << 14)
 
 struct pkgtags_s {
     unsigned   flags;
@@ -71,6 +72,7 @@
     char       arch[64];
     char       os[64];
     char       fn[PATH_MAX];
+    char       srcfn[PATH_MAX];
     uint32_t   size;
     uint32_t   fsize;
     uint32_t   btime;
@@ -226,6 +228,7 @@
             case PKG_STORETAG_ARCH:
             case PKG_STORETAG_OS:
             case PKG_STORETAG_FN:
+            case PKG_STORETAG_SRCFN:
                 if (tag_binsize != PKG_STORETAG_SIZENIL) {
                     logn(LOGERR, errmg_ldtag, fn, ul_offs, tag);
                     nerr++;
@@ -458,6 +461,12 @@
                 pkgt->flags |= PKGT_HAS_FN;
             }
             break;
+
+        case PKG_STORETAG_SRCFN:
+            n_assert((pkgt->flags & PKGT_HAS_SRCFN) == 0);
+            memcpy(pkgt->srcfn, value, sizeof(pkgt->srcfn)-1);
+            pkgt->flags |= PKGT_HAS_SRCFN;
+            break;
             
         default:
             logn(LOGERR, "%s:%lu: unknown tag '%c'", pathname, ul_offs, tag);
@@ -501,6 +510,7 @@
     if (pkg == NULL) {
         pkg = pkg_new_ext(na, pkgt->name, epoch, ver, rel, arch, os, 
                           (pkgt->flags & PKGT_HAS_FN) ? pkgt->fn : NULL,
+                          (pkgt->flags & PKGT_HAS_SRCFN) ? pkgt->srcfn : NULL,
                           pkgt->size, pkgt->fsize, pkgt->btime);
     } else {
         /* os && arch should be included in given pkg */
@@ -510,6 +520,7 @@
         pkg = pkg_new_ext(na, pkg->name, pkg->epoch, pkg->ver, pkg->rel,
                           pkg_arch(pkg), pkg_os(pkg), 
                           (pkgt->flags & PKGT_HAS_FN) ? pkgt->fn : NULL,
+                          (pkgt->flags & PKGT_HAS_SRCFN) ? pkgt->srcfn : NULL,
                           pkgt->size, pkgt->fsize, pkgt->btime);
         
     }

================================================================
Index: poldek/poldek/pkgdir/pkg_store.c
diff -u poldek/poldek/pkgdir/pkg_store.c:1.26 poldek/poldek/pkgdir/pkg_store.c:1.27
--- poldek/poldek/pkgdir/pkg_store.c:1.26	Sat Feb  2 22:49:04 2008
+++ poldek/poldek/pkgdir/pkg_store.c	Sun May 25 11:25:31 2008
@@ -45,6 +45,7 @@
     { PKG_STORETAG_ARCH,  PKG_STORETAG_SIZENIL, "arch" },
     { PKG_STORETAG_OS,    PKG_STORETAG_SIZENIL, "os"   },
     { PKG_STORETAG_FN,    PKG_STORETAG_SIZENIL, "filename" },
+    { PKG_STORETAG_SRCFN, PKG_STORETAG_SIZENIL, "source package filename" },
     /* groupid, btime, etc */
     { PKG_STORETAG_BINF,  PKG_STORETAG_SIZE8,  "pkg's int32 fields" }, 
     { PKG_STORETAG_CAPS,  PKG_STORETAG_SIZE16, "caps"  },
@@ -91,7 +92,9 @@
 
 int pkg_store_skiptag(int tag, int tag_binsize, tn_stream *st)
 {
-    printf("skiptag %c %c\n", tag, tag_binsize ? tag_binsize:'-');
+    DBGF("skiptag %c %c\n", tag, tag_binsize ? tag_binsize:'-');
+    tag = tag;
+    
     switch (tag_binsize) {
         case PKG_STORETAG_SIZENIL:
             return 1;
@@ -374,6 +377,11 @@
     if (pkg->fn)
         n_buf_printf(nbuf, "%c: %s\n", PKG_STORETAG_FN, pkg->fn);
     
+    if (pkg->srcfn)
+        n_buf_printf(nbuf, "%c: %s\n", PKG_STORETAG_SRCFN, pkg->srcfn);
+    else                        /* must store something, PKG_HAS_SRCFN */
+        n_buf_printf(nbuf, "%c: -\n", PKG_STORETAG_SRCFN);
+    
     pkg_store_bintag(PKG_STORETAG_BINF, nbuf);
     pkg_store_fields(nbuf, pkg, flags);
     

================================================================
Index: poldek/poldek/pkgdir/pkg_store.h
diff -u poldek/poldek/pkgdir/pkg_store.h:1.7 poldek/poldek/pkgdir/pkg_store.h:1.8
--- poldek/poldek/pkgdir/pkg_store.h:1.7	Fri Jun 22 00:28:35 2007
+++ poldek/poldek/pkgdir/pkg_store.h	Sun May 25 11:25:31 2008
@@ -11,6 +11,7 @@
 #define PKG_STORETAG_ARCH  'A'
 #define PKG_STORETAG_OS    'O'
 #define PKG_STORETAG_FN    'n'
+#define PKG_STORETAG_SRCFN 's'
 #define PKG_STORETAG_BINF  'f'
 #define PKG_STORETAG_CAPS  'P'
 #define PKG_STORETAG_REQS  'R'

================================================================
Index: poldek/poldek/pkgdir/metadata/load.c
diff -u poldek/poldek/pkgdir/metadata/load.c:1.5 poldek/poldek/pkgdir/metadata/load.c:1.6
--- poldek/poldek/pkgdir/metadata/load.c:1.5	Mon Aug 21 17:40:54 2006
+++ poldek/poldek/pkgdir/metadata/load.c	Sun May 25 11:25:31 2008
@@ -309,7 +309,7 @@
     }
     
     rpkg = pkg_new_ext(na, pkg.name, pkg.epoch, pkg.ver, pkg.rel, arch, NULL, 
-                       pkg.fn, pkg.size, pkg.fsize, pkg.btime);
+                       pkg.fn, NULL, pkg.size, pkg.fsize, pkg.btime);
 
 l_skip_end:
     

================================================================
Index: poldek/poldek/pkgdir/pdir/pdir_pkg_restore.c
diff -u poldek/poldek/pkgdir/pdir/pdir_pkg_restore.c:1.10 poldek/poldek/pkgdir/pdir/pdir_pkg_restore.c:1.11
--- poldek/poldek/pkgdir/pdir/pdir_pkg_restore.c:1.10	Sat Feb  2 22:49:04 2008
+++ poldek/poldek/pkgdir/pdir/pdir_pkg_restore.c	Sun May 25 11:25:31 2008
@@ -540,6 +540,7 @@
     if (pkg == NULL) {
         pkg = pkg_new_ext(na, pkgt->name, epoch, ver, rel, arch, os, 
                           (pkgt->flags & PKGT_HAS_FN) ? pkgt->fn : NULL,
+                          NULL, /* srcfn */
                           pkgt->size, pkgt->fsize, pkgt->btime);
 
         if (pkg == NULL) {

================================================================
Index: poldek/poldek/pm/rpm/rpm_pkg_ld.c
diff -u poldek/poldek/pm/rpm/rpm_pkg_ld.c:1.16 poldek/poldek/pm/rpm/rpm_pkg_ld.c:1.17
--- poldek/poldek/pm/rpm/rpm_pkg_ld.c:1.16	Sun Feb 24 23:14:08 2008
+++ poldek/poldek/pm/rpm/rpm_pkg_ld.c	Sun May 25 11:25:31 2008
@@ -483,6 +483,7 @@
     uint32_t   *psize = NULL, *pbtime = NULL, *pitime = NULL;
     const char *name, *version, *release, *arch = NULL;
     char       osbuf[128], *os = osbuf;
+    char       srcrpmbuf[128], *srcrpm = srcrpmbuf;
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/libpoldek.sym?r1=1.36&r2=1.37&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pkg.c?r1=1.122&r2=1.123&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pkg.h?r1=1.82&r2=1.83&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pkgu.c?r1=1.38&r2=1.39&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pkgu.h?r1=1.13&r2=1.14&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/cli/desc.c?r1=1.34&r2=1.35&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/cli/ls.c?r1=1.27&r2=1.28&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pkgdir/pkg_restore.c?r1=1.24&r2=1.25&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pkgdir/pkg_store.c?r1=1.26&r2=1.27&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pkgdir/pkg_store.h?r1=1.7&r2=1.8&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pkgdir/metadata/load.c?r1=1.5&r2=1.6&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pkgdir/pdir/pdir_pkg_restore.c?r1=1.10&r2=1.11&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pm/rpm/rpm_pkg_ld.c?r1=1.16&r2=1.17&f=u



More information about the pld-cvs-commit mailing list