summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChantry Xavier <shiningxc@gmail.com>2007-12-02 23:48:12 +0100
committerDan McGee <dan@archlinux.org>2007-12-03 01:12:41 +0100
commit594f1fbbb1c6aa64368c01d92ab5d7533e4e9cfa (patch)
tree7a85f7815e6b41b395bc58ccfedac0316b1e677f
parent94aa8b1f163c88cb47c049da4f3c9935dc6da1e8 (diff)
downloadpacman-594f1fbbb1c6aa64368c01d92ab5d7533e4e9cfa.tar.gz
pacman-594f1fbbb1c6aa64368c01d92ab5d7533e4e9cfa.tar.xz
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>
-rw-r--r--lib/libalpm/add.c4
-rw-r--r--lib/libalpm/alpm_list.c18
-rw-r--r--lib/libalpm/alpm_list.h6
-rw-r--r--lib/libalpm/sync.c2
4 files changed, 16 insertions, 14 deletions
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:
*