1.1 --- a/razor.c Sun Jun 15 10:50:32 2008 -0400
1.2 +++ b/razor.c Sun Jun 15 11:21:24 2008 -0400
1.3 @@ -52,14 +52,15 @@
1.4 #define RAZOR_MAGIC 0x7a7a7a7a
1.5 #define RAZOR_VERSION 1
1.6
1.7 -#define RAZOR_STRING_POOL 0
1.8 -#define RAZOR_PACKAGES 1
1.9 -#define RAZOR_PROPERTIES 2
1.10 -#define RAZOR_FILES 3
1.11 -#define RAZOR_PACKAGE_POOL 4
1.12 -#define RAZOR_PROPERTY_POOL 5
1.13 -#define RAZOR_FILE_POOL 6
1.14 -#define RAZOR_FILE_STRING_POOL 7
1.15 +#define RAZOR_STRING_POOL 0
1.16 +#define RAZOR_PACKAGES 1
1.17 +#define RAZOR_PROPERTIES 2
1.18 +#define RAZOR_FILES 3
1.19 +#define RAZOR_PACKAGE_POOL 4
1.20 +#define RAZOR_PROPERTY_POOL 5
1.21 +#define RAZOR_FILE_POOL 6
1.22 +#define RAZOR_FILE_STRING_POOL 7
1.23 +#define RAZOR_DETAILS_STRING_POOL 8
1.24
1.25 struct razor_package {
1.26 uint name : 24;
1.27 @@ -101,6 +102,7 @@
1.28 struct array property_pool;
1.29 struct array file_pool;
1.30 struct array file_string_pool;
1.31 + struct array details_string_pool;
1.32 struct razor_set_header *header;
1.33 };
1.34
1.35 @@ -120,6 +122,7 @@
1.36 struct razor_set *set;
1.37 struct hashtable table;
1.38 struct hashtable file_table;
1.39 + struct hashtable details_table;
1.40 struct razor_package *package;
1.41 struct array properties;
1.42 struct array files;
1.43 @@ -146,6 +149,7 @@
1.44 { RAZOR_PROPERTY_POOL, offsetof(struct razor_set, property_pool) },
1.45 { RAZOR_FILE_POOL, offsetof(struct razor_set, file_pool) },
1.46 { RAZOR_FILE_STRING_POOL, offsetof(struct razor_set, file_string_pool) },
1.47 + { RAZOR_DETAILS_STRING_POOL, offsetof(struct razor_set, details_string_pool) },
1.48 };
1.49
1.50 struct razor_set *
1.51 @@ -162,6 +166,8 @@
1.52 *empty = '\0';
1.53 empty = array_add(&set->file_string_pool, 1);
1.54 *empty = '\0';
1.55 + empty = array_add(&set->details_string_pool, 1);
1.56 + *empty = '\0';
1.57 e->name = 0;
1.58 e->flags = RAZOR_ENTRY_LAST;
1.59 e->start = 0;
1.60 @@ -344,11 +350,10 @@
1.61 const char *url,
1.62 const char *license)
1.63 {
1.64 - importer->package->summary = hashtable_tokenize(&importer->table, summary);
1.65 - importer->package->description = hashtable_tokenize(&importer->table, description);
1.66 - importer->package->url = hashtable_tokenize(&importer->table, url);
1.67 - importer->package->license = hashtable_tokenize(&importer->table, license);
1.68 -
1.69 + importer->package->summary = hashtable_tokenize(&importer->details_table, summary);
1.70 + importer->package->description = hashtable_tokenize(&importer->details_table, description);
1.71 + importer->package->url = hashtable_tokenize(&importer->details_table, url);
1.72 + importer->package->license = hashtable_tokenize(&importer->details_table, license);
1.73 }
1.74
1.75 void
1.76 @@ -400,6 +405,7 @@
1.77 importer->set = razor_set_create();
1.78 hashtable_init(&importer->table, &importer->set->string_pool);
1.79 hashtable_init(&importer->file_table, &importer->set->file_string_pool);
1.80 + hashtable_init(&importer->details_table, &importer->set->details_string_pool);
1.81
1.82 return importer;
1.83 }
1.84 @@ -827,6 +833,7 @@
1.85 set = importer->set;
1.86 hashtable_release(&importer->table);
1.87 hashtable_release(&importer->file_table);
1.88 + hashtable_release(&importer->details_table);
1.89 free(importer);
1.90
1.91 return set;
1.92 @@ -941,7 +948,7 @@
1.93 const char **summary, const char **description,
1.94 const char **url, const char **license)
1.95 {
1.96 - const char *pool = set->string_pool.data;
1.97 + const char *pool = set->details_string_pool.data;
1.98
1.99 *summary = &pool[package->summary];
1.100 *description = &pool[package->description];
1.101 @@ -1267,6 +1274,7 @@
1.102 struct razor_set *set;
1.103 struct hashtable table;
1.104 struct hashtable file_table;
1.105 + struct hashtable details_table;
1.106 struct source source1;
1.107 struct source source2;
1.108 };
1.109 @@ -1282,6 +1290,7 @@
1.110 merger->set = razor_set_create();
1.111 hashtable_init(&merger->table, &merger->set->string_pool);
1.112 hashtable_init(&merger->file_table, &merger->set->file_string_pool);
1.113 + hashtable_init(&merger->details_table, &merger->set->details_string_pool);
1.114
1.115 merger->source1.set = set1;
1.116 count = set1->properties.size / sizeof (struct razor_property);
1.117 @@ -1751,6 +1760,7 @@
1.118 result = merger->set;
1.119 hashtable_release(&merger->table);
1.120 hashtable_release(&merger->file_table);
1.121 + hashtable_release(&merger->details_table);
1.122 free(merger);
1.123
1.124 return result;