Remove INTLLIBS from librazor_la_LIBADD.
This partially reverts 611c84a3f4b4538a65d186050608c17adbf17770.
It's not clear what motivated the initial inclusion of INTLLIBS
here since the net effect is only seen in librazor.la and not
in razor.pc and librazor.la is not normally packaged. Certainly
neither the static nor the dynamic versions of librazor currently
use libintl. At best this would cause the linker to search a
static libintl for undefined symbols without finding any; at worse
it causes a static build of plover using librazor.la to fail if
no static version of libintl is installed.
2 * Copyright (C) 2008 Kristian Høgsberg <krh@redhat.com>
3 * Copyright (C) 2008 Red Hat, Inc
4 * Copyright (C) 2009 J. Ali Harlow <ali@juiblex.co.uk>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
28 #include "razor-internal.h"
31 static struct razor_package_iterator *
32 razor_package_iterator_create_with_index(struct razor_set *set,
35 struct razor_package_iterator *pi;
37 pi = zalloc(sizeof *pi);
44 static struct razor_package_iterator *
45 razor_package_iterator_create_empty(struct razor_set *set)
47 struct razor_package_iterator *pi;
48 return zalloc(sizeof *pi);
51 RAZOR_EXPORT struct razor_package_iterator *
52 razor_package_iterator_create(struct razor_set *set)
54 struct razor_package_iterator *pi;
58 pi = zalloc(sizeof *pi);
60 pi->end = set->packages.data + set->packages.size;
61 pi->package = set->packages.data;
67 razor_package_iterator_init_for_property(struct razor_package_iterator *pi,
68 struct razor_set *set,
69 struct razor_property *property)
73 assert (property != NULL);
75 memset(pi, 0, sizeof *pi);
77 pi->index = list_first(&property->packages, &set->package_pool);
80 RAZOR_EXPORT struct razor_package_iterator *
81 razor_package_iterator_create_for_property(struct razor_set *set,
82 struct razor_property *property)
87 assert (property != NULL);
89 index = list_first(&property->packages, &set->package_pool);
90 return razor_package_iterator_create_with_index(set, index);
93 RAZOR_EXPORT struct razor_package_iterator *
94 razor_package_iterator_create_for_file(struct razor_set *set,
97 struct razor_entry *entry;
100 assert (set != NULL);
101 assert (filename != NULL);
103 entry = razor_set_find_entry(set, set->files.data, filename);
105 return razor_package_iterator_create_empty(set);
107 index = list_first(&entry->packages, &set->package_pool);
108 return razor_package_iterator_create_with_index(set, index);
112 * razor_package_iterator_next:
113 * @pi: a %razor_package_iterator
114 * @package: a %razor_package
116 * Gets the next iteratr along with any vararg data.
117 * The vararg must be terminated with %RAZOR_DETAIL_LAST.
119 * Example: razor_package_iterator_next (pi, package,
120 * RAZOR_DETAIL_NAME, &name,
121 * RAZOR_DETAIL_LAST);
124 razor_package_iterator_next(struct razor_package_iterator *pi,
125 struct razor_package **package, ...)
129 struct razor_package *p, *packages;
136 } else if (pi->index) {
137 packages = pi->set->packages.data;
138 p = &packages[pi->index->data];
139 pi->index = list_next(pi->index);
151 va_start(args, NULL);
152 razor_package_get_details_varg (pi->set, p, args);
159 razor_package_iterator_destroy(struct razor_package_iterator *pi)
169 RAZOR_EXPORT struct razor_property_iterator *
170 razor_property_iterator_create(struct razor_set *set,
171 struct razor_package *package)
173 struct razor_property_iterator *pi;
175 assert (set != NULL);
177 pi = zalloc(sizeof *pi);
181 pi->index = list_first(&package->properties,
182 &set->property_pool);
184 pi->property = set->properties.data;
185 pi->end = set->properties.data + set->properties.size;
192 razor_property_iterator_next(struct razor_property_iterator *pi,
193 struct razor_property **property,
196 const char **version)
200 struct razor_property *p, *properties;
207 } else if (pi->index) {
208 properties = pi->set->properties.data;
209 p = &properties[pi->index->data];
210 pi->index = list_next(pi->index);
216 pool = pi->set->string_pool.data;
218 *name = &pool[p->name];
220 *version = &pool[p->version];
229 razor_property_iterator_destroy(struct razor_property_iterator *pi)
234 RAZOR_EXPORT struct razor_file_iterator *
235 razor_file_iterator_create(struct razor_set *set, struct razor_package *package,
238 struct razor_file_iterator *fi;
240 assert (set != NULL);
241 assert (package != NULL);
243 fi = zalloc(sizeof *fi);
245 fi->post_order = post_order;
247 fi->index = list_last(&package->files, &set->file_pool);
249 fi->index = list_first(&package->files, &set->file_pool);
250 array_init(&fi->path);
256 razor_file_iterator_next(struct razor_file_iterator *fi,
259 struct razor_entry *e, *dir, *entries;
269 entries = (struct razor_entry *) fi->set->files.data;
270 pool = fi->set->file_string_pool.data;
277 if (entries + fi->index->data == e) {
279 s = array_add(&fi->path, strlen(f) + 1);
281 if (fi->path.size == 1) {
282 array_add(&fi->path, 1);
283 strcpy(fi->path.data, "/");
285 *name = fi->path.data;
287 fi->index = list_prev(fi->index);
289 fi->index = list_next(fi->index);
292 } while (!((e++)->flags & RAZOR_ENTRY_LAST));
293 for(e--; e >= dir; e--)
294 if (e->start && fi->index->data >= e->start)
299 s = array_add(&fi->path, strlen(f) + 1);
303 dir = entries + e->start;
306 printf("file_iterator_next: Failed to find file %d\n",fi->index->data);
311 RAZOR_EXPORT void razor_file_iterator_destroy(struct razor_file_iterator *fi)
315 array_release(&fi->path);
319 struct razor_package_query {
320 struct razor_set *set;
325 RAZOR_EXPORT struct razor_package_query *
326 razor_package_query_create(struct razor_set *set)
328 struct razor_package_query *pq;
331 assert (set != NULL);
333 pq = zalloc(sizeof *pq);
335 count = set->packages.size / sizeof(struct razor_package);
336 pq->vector = zalloc(count * sizeof(char));
342 razor_package_query_add_package(struct razor_package_query *pq,
343 struct razor_package *p)
345 struct razor_package *packages;
350 packages = pq->set->packages.data;
351 pq->count += pq->vector[p - packages] ^ 1;
352 pq->vector[p - packages] = 1;
356 razor_package_query_add_iterator(struct razor_package_query *pq,
357 struct razor_package_iterator *pi)
359 struct razor_package *packages, *p;
364 packages = pq->set->packages.data;
365 while (razor_package_iterator_next(pi, &p, RAZOR_DETAIL_LAST)) {
366 pq->count += pq->vector[p - packages] ^ 1;
367 pq->vector[p - packages] = 1;
371 RAZOR_EXPORT struct razor_package_iterator *
372 razor_package_query_finish(struct razor_package_query *pq)
374 struct razor_package_iterator *pi;
375 struct razor_set *set;
383 index = zalloc(pq->count * sizeof *index);
387 for (i = 0, j = 0; j < pq->count; i++) {
392 if (j == pq->count - 1)
393 index[j].flags = 0x80;
400 pi = razor_package_iterator_create_with_index(set, index);