summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2011-07-03 10:10:36 +1000
committerDan McGee <dan@archlinux.org>2011-07-03 13:42:24 -0500
commitab79b13079ea6c0c7b66e4c5d14686f06ba759ae (patch)
treee9489277d1815be0ba0972dc4ee989a1792d5c53 /lib
parentf612e5ede7f76458911b78adca3323c61a669dd0 (diff)
downloadpacman-ab79b13079ea6c0c7b66e4c5d14686f06ba759ae.tar.xz
Add alpm_list_previous method
Helper function to get the previous item in a list Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/libalpm/alpm_list.c18
-rw-r--r--lib/libalpm/alpm_list.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/libalpm/alpm_list.c b/lib/libalpm/alpm_list.c
index c2b30adc..1976e13d 100644
--- a/lib/libalpm/alpm_list.c
+++ b/lib/libalpm/alpm_list.c
@@ -556,6 +556,24 @@ inline alpm_list_t SYMEXPORT *alpm_list_next(const alpm_list_t *node)
}
/**
+ * @brief Get the previous element of a list.
+ *
+ * @param list the list head
+ * @param node the list 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)
+{
+ if(node && node != list) {
+ return node->prev;
+ } else {
+ return NULL;
+ }
+}
+
+/**
* @brief Get the last item in the list.
*
* @param list the list
diff --git a/lib/libalpm/alpm_list.h b/lib/libalpm/alpm_list.h
index 1f6393a6..27a76d12 100644
--- a/lib/libalpm/alpm_list.h
+++ b/lib/libalpm/alpm_list.h
@@ -70,6 +70,7 @@ alpm_list_t *alpm_list_reverse(alpm_list_t *list);
alpm_list_t *alpm_list_first(const alpm_list_t *list);
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_last(const alpm_list_t *list);
void *alpm_list_getdata(const alpm_list_t *entry);