Use a seperate string pool for package details
authorJames Bowes <jbowes@redhat.com>
Sun Jun 15 11:21:24 2008 -0400 (2008-06-15)
changeset 2288b9849d1e5b0
parent 227 6a47b5fc2791
child 229 cae6308aa5b1
Use a seperate string pool for package details
razor.c
     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;