summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--glnx-dirfd.c18
-rw-r--r--glnx-dirfd.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/glnx-dirfd.c b/glnx-dirfd.c
index 6d1e2d2..0a63bcb 100644
--- a/glnx-dirfd.c
+++ b/glnx-dirfd.c
@@ -174,6 +174,24 @@ glnx_dirfd_iterator_next_dent (GLnxDirFdIterator *dfd_iter,
}
/**
+ * glnx_dirfd_iterator_rewind:
+ * @dfd_iter: A directory iterator
+ *
+ * Rewind to the beginning of @dfd_iter. The next call to
+ * glnx_dirfd_iterator_next_dent() will provide the first entry in the
+ * directory.
+ */
+void
+glnx_dirfd_iterator_rewind (GLnxDirFdIterator *dfd_iter)
+{
+ GLnxRealDirfdIterator *real_dfd_iter = (GLnxRealDirfdIterator*) dfd_iter;
+
+ g_return_if_fail (dfd_iter->initialized);
+
+ rewinddir (real_dfd_iter->d);
+}
+
+/**
* glnx_dirfd_iterator_next_dent_ensure_dtype:
* @dfd_iter: A directory iterator
* @out_dent: (out) (transfer none): Pointer to dirent; do not free
diff --git a/glnx-dirfd.h b/glnx-dirfd.h
index 0046ac8..d5773e7 100644
--- a/glnx-dirfd.h
+++ b/glnx-dirfd.h
@@ -66,6 +66,7 @@ gboolean glnx_dirfd_iterator_next_dent_ensure_dtype (GLnxDirFdIterator *dfd_ite
struct dirent **out_dent,
GCancellable *cancellable,
GError **error);
+void glnx_dirfd_iterator_rewind (GLnxDirFdIterator *dfd_iter);
void glnx_dirfd_iterator_clear (GLnxDirFdIterator *dfd_iter);
G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GLnxDirFdIterator, glnx_dirfd_iterator_clear)