diff options
-rw-r--r-- | shlibs/mount/src/iter.c | 17 | ||||
-rw-r--r-- | shlibs/mount/src/mount.h.in | 1 | ||||
-rw-r--r-- | shlibs/mount/src/mount.sym | 1 |
3 files changed, 18 insertions, 1 deletions
diff --git a/shlibs/mount/src/iter.c b/shlibs/mount/src/iter.c index d64f2d40d..4baa7ffb4 100644 --- a/shlibs/mount/src/iter.c +++ b/shlibs/mount/src/iter.c @@ -39,7 +39,7 @@ void mnt_free_iter(mnt_iter *itr) /** * mnt_reset_iter: * @itr: iterator pointer - * @direction: MNT_INTER_{FOR,BACK}WARD iterator direction + * @direction: MNT_INTER_{FOR,BACK}WARD or -1 to keep the derection unchanged * * Resets iterator. */ @@ -47,8 +47,23 @@ void mnt_reset_iter(mnt_iter *itr, int direction) { assert(itr); + if (direction == -1) + direction = itr->direction; + if (itr) { memset(itr, 0, sizeof(struct _mnt_iter)); itr->direction = direction; } } + +/** + * mnt_iter_get_direction: + * @itr: iterator pointer + * + * Returns: MNT_INTER_{FOR,BACK}WARD or -1 in case of error. + */ +int mnt_iter_get_direction(mnt_iter *itr) +{ + assert(itr); + return itr ? itr->direction : -1; +} diff --git a/shlibs/mount/src/mount.h.in b/shlibs/mount/src/mount.h.in index 8e71213aa..585b9fca3 100644 --- a/shlibs/mount/src/mount.h.in +++ b/shlibs/mount/src/mount.h.in @@ -147,6 +147,7 @@ enum { extern mnt_iter *mnt_new_iter(int direction); extern void mnt_free_iter(mnt_iter *mi); extern void mnt_reset_iter(mnt_iter *mi, int direction); +extern int mnt_iter_get_direction(mnt_iter *itr); /* optmap.c */ enum { diff --git a/shlibs/mount/src/mount.sym b/shlibs/mount/src/mount.sym index 3bc32ecdd..6740bbcd3 100644 --- a/shlibs/mount/src/mount.sym +++ b/shlibs/mount/src/mount.sym @@ -46,6 +46,7 @@ global: mnt_fstype_is_pseudofs; mnt_get_builtin_optmap; mnt_get_library_version; + mnt_iter_get_direction; mnt_lock_file; mnt_lock_get_linkfile; mnt_lock_get_lockfile; |