Fix bug causing detail strings to be lost
authorJ. Ali Harlow <ali@juiblex.co.uk>
Fri, 23 Apr 2010 20:07:15 +0000 (21:07 +0100)
committerJ. Ali Harlow <ali@juiblex.co.uk>
Fri, 23 Apr 2010 20:07:15 +0000 (21:07 +0100)
librazor/merger.c
src/import-yum.c
test/Makefile.am
test/details.ref [new file with mode: 0644]
test/details.sh [new file with mode: 0755]

index 39d8ccc..1b4e14e 100644 (file)
@@ -36,6 +36,7 @@ struct razor_merger {
        struct razor_set *set;
        struct hashtable table;
        struct hashtable file_table;
+       struct hashtable details_table;
        struct source source1;
        struct source source2;
 };
@@ -51,6 +52,8 @@ razor_merger_create(struct razor_set *set1, struct razor_set *set2)
        merger->set = razor_set_create();
        hashtable_init(&merger->table, &merger->set->string_pool);
        hashtable_init(&merger->file_table, &merger->set->file_string_pool);
+       hashtable_init(&merger->details_table,
+                      &merger->set->details_string_pool);
 
        merger->source1.set = set1;
        count = set1->properties.size / sizeof (struct razor_property);
@@ -75,7 +78,7 @@ void
 razor_merger_add_package(struct razor_merger *merger,
                         struct razor_package *package)
 {
-       char *pool, *s;
+       char *pool, *details_pool, *s;
        struct list *r;
        struct razor_package *p;
        struct razor_set *set1;
@@ -96,6 +99,7 @@ razor_merger_add_package(struct razor_merger *merger,
        }
 
        pool = source->set->string_pool.data;
+       details_pool = source->set->details_string_pool.data;
        p = array_add(&merger->set->packages, sizeof *p);
        p->name = hashtable_tokenize(&merger->table, &pool[package->name]);
        p->flags = flags;
@@ -103,6 +107,14 @@ razor_merger_add_package(struct razor_merger *merger,
                                        &pool[package->version]);
        p->arch = hashtable_tokenize(&merger->table,
                                     &pool[package->arch]);
+       p->summary = hashtable_tokenize(&merger->details_table,
+                                       &details_pool[package->summary]);
+       p->description = hashtable_tokenize(&merger->details_table,
+                                           &details_pool[package->description]);
+       p->url = hashtable_tokenize(&merger->details_table,
+                                   &details_pool[package->url]);
+       p->license = hashtable_tokenize(&merger->details_table,
+                                       &details_pool[package->license]);
 
        p->properties = package->properties;
        r = list_first(&package->properties, &source->set->property_pool);
@@ -593,5 +605,6 @@ void razor_merger_destroy(struct razor_merger *merger)
 {
        hashtable_release(&merger->table);
        hashtable_release(&merger->file_table);
+       hashtable_release(&merger->details_table);
        free(merger);
 }
index dfcd42d..f2520f6 100644 (file)
@@ -288,7 +288,7 @@ yum_filelists_end_element (void *data, const char *name)
 struct razor_set *
 razor_set_create_from_yum(void)
 {
-       struct yum_context ctx;
+       struct yum_context ctx={0};
        void *buf;
        int len, ret;
        gzFile primary, filelists;
index 0ca2b17..93ef076 100644 (file)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in
 
-check_SCRIPTS = relocate named-root remove update
+check_SCRIPTS = relocate named-root remove update details
 if HAVE_LUA
   check_SCRIPTS += lua mult-install
 endif
@@ -18,6 +18,9 @@ remove:       remove.sh primary.xml.gz
 update:        update.sh base/repodata/primary.xml.gz updates/repodata/primary.xml.gz
        cp $(srcdir)/update.sh update
 
+details:       details.sh primary.xml.gz
+       cp $(srcdir)/details.sh details
+
 order: order.sh primary.xml.gz
        cp $(srcdir)/order.sh order
 
@@ -70,6 +73,8 @@ EXTRA_DIST =                  \
        lua.sh                  \
        remove.sh               \
        update.sh               \
+       details.sh              \
+       details.ref             \
        named-root.sh           \
        relocate.sh
 
@@ -77,6 +82,7 @@ MOSTLYCLEANFILES =            \
        primary.xml.gz          \
        filelists.xml.gz        \
        $(check_SCRIPTS)        \
+       details.out             \
        rawhide.rzdb
 
 clean-local :
diff --git a/test/details.ref b/test/details.ref
new file mode 100644 (file)
index 0000000..0132cac
--- /dev/null
@@ -0,0 +1,9 @@
+Name:        zsh2
+Arch:        noarch
+Version:     1-1
+URL:         
+License:     GPL
+Summary:     Test package
+Description:
+New and improved test package
+
diff --git a/test/details.sh b/test/details.sh
new file mode 100755 (executable)
index 0000000..9c6207c
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+export RAZOR_ROOT=`mktemp -dt` || exit 1
+../src/razor init || exit 1
+export YUM_URL="file://localhost/`pwd`"
+../src/razor import-yum || exit 1
+../src/razor install zsh2 || exit 1
+../src/razor info zsh2 > details.out || exit 1
+diff -u $srcdir/details.ref details.out || exit 1
+rm -rf "$RAZOR_ROOT"