diff options
author | Allan McRae <allan@archlinux.org> | 2011-07-04 11:17:12 +1000 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-07-05 10:22:11 -0500 |
commit | 24324ff0e12a3e19cada669a4c5c391e486790a3 (patch) | |
tree | bb211091670af259881bd326d5e034efea7eae26 | |
parent | 97103f860d48e1f6f9c0dd7c75568618f8ed5163 (diff) | |
download | pacman-24324ff0e12a3e19cada669a4c5c391e486790a3.tar.xz |
Simplify alpm_list_previous
We can readily detect the first node in a list by checking if
node->prev->next is NULL. So there is no need to pass the head
of the list to this function and its prototype now looks like
all the other item accessors.
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r-- | lib/libalpm/alpm_list.c | 7 | ||||
-rw-r--r-- | lib/libalpm/alpm_list.h | 2 | ||||
-rw-r--r-- | lib/libalpm/remove.c | 4 |
3 files changed, 6 insertions, 7 deletions
diff --git a/lib/libalpm/alpm_list.c b/lib/libalpm/alpm_list.c index 38cefa62..071cd994 100644 --- a/lib/libalpm/alpm_list.c +++ b/lib/libalpm/alpm_list.c @@ -547,11 +547,10 @@ inline alpm_list_t SYMEXPORT *alpm_list_next(const alpm_list_t *node) * * @return the previous element, or NULL when no previous element exist */ -inline alpm_list_t SYMEXPORT *alpm_list_previous(const alpm_list_t *list, - const alpm_list_t *node) +inline alpm_list_t SYMEXPORT *alpm_list_previous(const alpm_list_t *list) { - if(node && node != list) { - return node->prev; + if(list && list->prev->next) { + return list->prev; } else { return NULL; } diff --git a/lib/libalpm/alpm_list.h b/lib/libalpm/alpm_list.h index 824e8660..5e8ca460 100644 --- a/lib/libalpm/alpm_list.h +++ b/lib/libalpm/alpm_list.h @@ -69,7 +69,7 @@ alpm_list_t *alpm_list_reverse(alpm_list_t *list); /* item accessors */ alpm_list_t *alpm_list_nth(const alpm_list_t *list, size_t n); alpm_list_t *alpm_list_next(const alpm_list_t *list); -alpm_list_t *alpm_list_previous(const alpm_list_t *list, const alpm_list_t *node); +alpm_list_t *alpm_list_previous(const alpm_list_t *list); alpm_list_t *alpm_list_last(const alpm_list_t *list); void *alpm_list_getdata(const alpm_list_t *entry); diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c index 59374dcb..9b8517cb 100644 --- a/lib/libalpm/remove.c +++ b/lib/libalpm/remove.c @@ -329,7 +329,7 @@ int _alpm_upgraderemove_package(alpm_handle_t *handle, _alpm_log(handle, ALPM_LOG_DEBUG, "removing %ld files\n", (unsigned long)filenum); /* iterate through the list backwards, unlinking files */ - for(lp = alpm_list_last(files); lp; lp = alpm_list_previous(files, lp)) { + for(lp = alpm_list_last(files); lp; lp = alpm_list_previous(lp)) { unlink_file(handle, oldpkg, lp->data, skip_remove, 0); } FREELIST(skip_remove); @@ -406,7 +406,7 @@ int _alpm_remove_packages(alpm_handle_t *handle) pkg_count, (pkg_count - targcount + 1)); /* iterate through the list backwards, unlinking files */ - for(lp = alpm_list_last(files); lp; lp = alpm_list_previous(files, lp)) { + for(lp = alpm_list_last(files); lp; lp = alpm_list_previous(lp)) { int percent; unlink_file(handle, info, lp->data, NULL, trans->flags & ALPM_TRANS_FLAG_NOSAVE); |