From 2aefc0a8f267ddb57804755af9095d3cd5ceb0d7 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 9 Jun 2011 21:59:52 +0200 Subject: build-sys: use top-level directory for libmount rather than shlibs/mount Signed-off-by: Karel Zak --- libmount/src/iter.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 libmount/src/iter.c (limited to 'libmount/src/iter.c') diff --git a/libmount/src/iter.c b/libmount/src/iter.c new file mode 100644 index 000000000..99fedd17b --- /dev/null +++ b/libmount/src/iter.c @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2009 Karel Zak + * + * This file may be redistributed under the terms of the + * GNU Lesser General Public License. + */ + +/** + * SECTION: iter + * @title: Iterator + * @short_description: unified iterator + * + * The iterator keeps direction and last position for access to the internal + * library tables/lists. + */ +#include +#include +#include + +#include "mountP.h" + +/** + * mnt_new_iter: + * @direction: MNT_INTER_{FOR,BACK}WARD direction + * + * Returns: newly allocated generic libmount iterator. + */ +struct libmnt_iter *mnt_new_iter(int direction) +{ + struct libmnt_iter *itr = calloc(1, sizeof(*itr)); + if (!itr) + return NULL; + itr->direction = direction; + return itr; +} + +/** + * mnt_free_iter: + * @itr: iterator pointer + * + * Deallocates iterator. + */ +void mnt_free_iter(struct libmnt_iter *itr) +{ + free(itr); +} + +/** + * mnt_reset_iter: + * @itr: iterator pointer + * @direction: MNT_INTER_{FOR,BACK}WARD or -1 to keep the derection unchanged + * + * Resets iterator. + */ +void mnt_reset_iter(struct libmnt_iter *itr, int direction) +{ + assert(itr); + + if (direction == -1) + direction = itr->direction; + + if (itr) { + memset(itr, 0, sizeof(*itr)); + itr->direction = direction; + } +} + +/** + * mnt_iter_get_direction: + * @itr: iterator pointer + * + * Returns: MNT_INTER_{FOR,BACK}WARD or negative number in case of error. + */ +int mnt_iter_get_direction(struct libmnt_iter *itr) +{ + assert(itr); + return itr ? itr->direction : -EINVAL; +} -- cgit v1.2.3-55-g7522