diff options
| author | Michael Biebl <biebl@debian.org> | 2018-10-20 01:30:31 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2018-10-20 01:30:31 +0200 |
| commit | 6518e361171f64bcaaa4bf868139362ed95cc2e0 (patch) | |
| tree | d2d5b53faf80646a40ec2c0c7f2a42b3959612f5 /shared/c-list/src/c-list.h | |
| parent | e126f3e804c35480c4f075777430419d6ece23da (diff) | |
New upstream version 1.14.2 upstream/1.14.2
Diffstat (limited to 'shared/c-list/src/c-list.h')
| -rw-r--r-- | shared/c-list/src/c-list.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/shared/c-list/src/c-list.h b/shared/c-list/src/c-list.h index ff434d8d..3d44e330 100644 --- a/shared/c-list/src/c-list.h +++ b/shared/c-list/src/c-list.h @@ -367,6 +367,25 @@ static inline CList *c_list_last(CList *list) { _safe = c_list_entry((_safe)->_m.next, __typeof__(*_iter), _m)) \ /** + * c_list_flush() - flush all entries from a list + * @list: list to flush + * + * This unlinks all entries from the given list @list and reinitializes their + * link-nodes via C_LIST_INIT(). + * + * Note that the entries are not modified in any other way, nor is their memory + * released. This function just unlinks them and resets all the list nodes. It + * is particularly useful with temporary lists on the stack in combination with + * the GCC-extension __attribute__((__cleanup__(arg))). + */ +static inline void c_list_flush(CList *list) { + CList *iter, *safe; + + c_list_for_each_safe_unlink(iter, safe, list) + /* empty */ ; +} + +/** * c_list_length() - return number of linked entries, excluding the head * @list: list to operate on * |