From 594f1fbbb1c6aa64368c01d92ab5d7533e4e9cfa Mon Sep 17 00:00:00 2001
From: Chantry Xavier <shiningxc@gmail.com>
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 <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
---
 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/libalpm')

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-70-g09d2