From 594f1fbbb1c6aa64368c01d92ab5d7533e4e9cfa Mon Sep 17 00:00:00 2001 From: Chantry Xavier Date: Sun, 2 Dec 2007 23:48:12 +0100 Subject: alpm_list : change the alpm_list_find* to return the matching item. alpm_list_find and alpm_list_find_ptr will now return a void *, and alpm_list_find_str will return a char *, instead of an int. Signed-off-by: Chantry Xavier Signed-off-by: Dan McGee --- lib/libalpm/add.c | 4 +++- lib/libalpm/alpm_list.c | 18 +++++++++--------- lib/libalpm/alpm_list.h | 6 +++--- lib/libalpm/sync.c | 2 +- 4 files changed, 16 insertions(+), 14 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c index 3a573ddd..24f2b51f 100644 --- a/lib/libalpm/add.c +++ b/lib/libalpm/add.c @@ -412,7 +412,9 @@ static int extract_single_file(struct archive *archive, } else { /* go to the backup array and see if our conflict is there */ /* check newpkg first, so that adding backup files is retroactive */ - needbackup = alpm_list_find_str(alpm_pkg_get_backup(newpkg), entryname); + if(alpm_list_find_str(alpm_pkg_get_backup(newpkg), entryname) != NULL) { + needbackup = 1; + } /* check oldpkg for a backup entry, store the hash if available */ if(oldpkg) { diff --git a/lib/libalpm/alpm_list.c b/lib/libalpm/alpm_list.c index 69cd3479..a1e8861b 100644 --- a/lib/libalpm/alpm_list.c +++ b/lib/libalpm/alpm_list.c @@ -580,19 +580,19 @@ int SYMEXPORT alpm_list_count(const alpm_list_t *list) * @param haystack the list * @param fn the comparison function for searching (!= NULL) * - * @return 1 if `needle` is found, 0 otherwise + * @return `needle` if found, NULL otherwise */ -int SYMEXPORT alpm_list_find(const alpm_list_t *haystack, const void *needle, +void SYMEXPORT *alpm_list_find(const alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn) { const alpm_list_t *lp = haystack; while(lp) { if(lp->data && fn(lp->data, needle) == 0) { - return(1); + return(lp->data); } lp = lp->next; } - return(0); + return(NULL); } /* trivial helper function for alpm_list_find_ptr */ @@ -609,9 +609,9 @@ static int ptrcmp(const void *p, const void *q) * @param needle the data to search for (== comparison) * @param haystack the list * - * @return 1 if `needle` is found, 0 otherwise + * @return `needle` if found, NULL otherwise */ -int SYMEXPORT alpm_list_find_ptr(const alpm_list_t *haystack, const void *needle) +void SYMEXPORT *alpm_list_find_ptr(const alpm_list_t *haystack, const void *needle) { return(alpm_list_find(haystack, needle, ptrcmp)); } @@ -622,11 +622,11 @@ int SYMEXPORT alpm_list_find_ptr(const alpm_list_t *haystack, const void *needle * @param needle the string to search for * @param haystack the list * - * @return 1 if `needle` is found, 0 otherwise + * @return `needle` if found, NULL otherwise */ -int SYMEXPORT alpm_list_find_str(const alpm_list_t *haystack, const char *needle) +char SYMEXPORT *alpm_list_find_str(const alpm_list_t *haystack, const char *needle) { - return(alpm_list_find(haystack, (const void*)needle, (alpm_list_fn_cmp)strcmp)); + return((char *)alpm_list_find(haystack, (const void*)needle, (alpm_list_fn_cmp)strcmp)); } /** diff --git a/lib/libalpm/alpm_list.h b/lib/libalpm/alpm_list.h index 262d5e22..39cbdd30 100644 --- a/lib/libalpm/alpm_list.h +++ b/lib/libalpm/alpm_list.h @@ -73,9 +73,9 @@ void *alpm_list_getdata(const alpm_list_t *entry); /* misc */ int alpm_list_count(const alpm_list_t *list); -int alpm_list_find(const alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn); -int alpm_list_find_ptr(const alpm_list_t *haystack, const void *needle); -int alpm_list_find_str(const alpm_list_t *haystack, const char *needle); +void *alpm_list_find(const alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn); +void *alpm_list_find_ptr(const alpm_list_t *haystack, const void *needle); +char *alpm_list_find_str(const alpm_list_t *haystack, const char *needle); alpm_list_t *alpm_list_diff(const alpm_list_t *lhs, const alpm_list_t *rhs, alpm_list_fn_cmp fn); #ifdef __cplusplus diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index f6b130d2..065340c9 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -532,7 +532,7 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync conflict->package1); if(!local) { char *rmpkg = NULL; - int target, depend; + void *target, *depend; /* hmmm, package2 isn't installed, so it must be conflicting * with another package in our final list. For example: * -- cgit v1.2.3-24-g4f1b