From 17fac7f2c92df794b88648a95bea6796621dbe83 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 7 Sep 2003 23:11:37 +0000 Subject: Many fixes, primarily documentation git-svn-id: file:///home/lennart/svn/public/syrep/trunk@32 07ea20a6-d2c5-0310-9e02-9ef735347d72 --- src/package.c | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) (limited to 'src/package.c') diff --git a/src/package.c b/src/package.c index 3d23306..9496742 100644 --- a/src/package.c +++ b/src/package.c @@ -717,42 +717,57 @@ finish: return r; } -const char *package_get_item(struct package* p, const char *name, int c) { +int package_get_item(struct package* p, const char *name, int c, const char ** fn) { struct package_item *i; char path[PATH_MAX]; assert(p && name); for (i = p->items; i; i = i->next) - if (!strncmp(name, i->name, PACKAGE_ITEMNAMELEN)) - return i->path; + if (!strncmp(name, i->name, PACKAGE_ITEMNAMELEN)) { + if (fn) + *fn = i->path; + + return 1; + } for (;;) { int r; if ((r = read_item(p)) < 0) - return NULL; + return -1; - if (r == 0) + if (!r) break; assert(p->last); - if (!strncmp(name, p->last->name, PACKAGE_ITEMNAMELEN)) - return p->last->path; + if (!strncmp(name, p->last->name, PACKAGE_ITEMNAMELEN)) { + if (fn) + *fn = p->last->path; + + return 1; + } } if (!c) - return NULL; + return 0; snprintf(path, sizeof(path), "%s/%i", p->base, p->count++); if (!(i = item_new(name, path, 1))) { unlink(path); - return NULL; + return -1; } - + append_item(p, i); + + assert(i); + + assert(fn); - return i->path; + if (fn) + *fn = i->path; + + return 1; } int package_add_file(struct package *p, const char *name, const char *fn) { -- cgit