summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar default2023-01-24 14:57:04 +0100
committerGravatar default2023-01-24 14:57:04 +0100
commit4baf56c4ce2c02363ed04cf11c068c6cbffcf199 (patch)
treeeacfd0f3fb1df28963dff4f9987728f8d70882da
parentUpdated RELEASE_NOTES. (diff)
downloadpenes-snac2-4baf56c4ce2c02363ed04cf11c068c6cbffcf199.tar.gz
penes-snac2-4baf56c4ce2c02363ed04cf11c068c6cbffcf199.tar.xz
penes-snac2-4baf56c4ce2c02363ed04cf11c068c6cbffcf199.zip
Backport from xs.
-rw-r--r--xs.h18
-rw-r--r--xs_version.h2
2 files changed, 14 insertions, 6 deletions
diff --git a/xs.h b/xs.h
index 800e407..993aa04 100644
--- a/xs.h
+++ b/xs.h
@@ -76,7 +76,9 @@ d_char *xs_list_del(d_char *list, int num);
76d_char *xs_list_insert(d_char *list, int num, const char *data); 76d_char *xs_list_insert(d_char *list, int num, const char *data);
77d_char *xs_list_insert_sorted(d_char *list, const char *str); 77d_char *xs_list_insert_sorted(d_char *list, const char *str);
78d_char *xs_list_set(d_char *list, int num, const char *data); 78d_char *xs_list_set(d_char *list, int num, const char *data);
79d_char *xs_list_pop(d_char *list, char **data); 79d_char *xs_list_dequeue(d_char *list, char **data, int last);
80#define xs_list_pop(list, data) xs_list_dequeue(list, data, 1)
81#define xs_list_shift(list, data) xs_list_dequeue(list, data, 0)
80int xs_list_in(char *list, const char *val); 82int xs_list_in(char *list, const char *val);
81d_char *xs_join(char *list, const char *sep); 83d_char *xs_join(char *list, const char *sep);
82d_char *xs_split_n(const char *str, const char *sep, int times); 84d_char *xs_split_n(const char *str, const char *sep, int times);
@@ -665,13 +667,19 @@ d_char *xs_list_set(d_char *list, int num, const char *data)
665} 667}
666 668
667 669
668d_char *xs_list_pop(d_char *list, char **data) 670d_char *xs_list_dequeue(d_char *list, char **data, int last)
669/* pops the last element from the list */ 671/* gets a copy of the first or last element of a list, shrinking it */
670{ 672{
671 char *p = list, *v = NULL; 673 char *p = list, *v = NULL;
672 674
673 /* iterate to the end */ 675 if (!last) {
674 while (xs_list_iter(&p, &v)); 676 /* get the first */
677 xs_list_iter(&p, &v);
678 }
679 else {
680 /* iterate to the end */
681 while (xs_list_iter(&p, &v));
682 }
675 683
676 if (v != NULL) { 684 if (v != NULL) {
677 *data = xs_dup(v); 685 *data = xs_dup(v);
diff --git a/xs_version.h b/xs_version.h
index 261706a..87a8874 100644
--- a/xs_version.h
+++ b/xs_version.h
@@ -1 +1 @@
/* 366ce5817597e9f4d735bced6b8c40ecc897608e */ /* e8b70248081aa9086f64861bc85a67f390c41afb */