feat(dirent): directory iteration
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <dirent.h>
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
#include "../internal/syscall.h"
|
||||
#include "dirent_impl.h"
|
||||
|
||||
/*
|
||||
* rewinddir (todo 24): return the stream to the start of the directory.
|
||||
* SYS_lseek back to offset 0 resets the kernel's per-fd directory
|
||||
* position; the cached records (if any) are dropped and the stored seek
|
||||
* cookie is reset, so the next readdir refills from the first entry.
|
||||
* rewinddir has no error return; a failed lseek leaves the stream
|
||||
* positioned wherever the kernel is.
|
||||
*/
|
||||
void
|
||||
rewinddir(DIR *dir)
|
||||
{
|
||||
struct vlibc_DIR *d = dir;
|
||||
|
||||
syscall_ret(__syscall3(SYS_lseek, d->fd, 0, SEEK_SET));
|
||||
d->buf_pos = 0;
|
||||
d->buf_end = 0;
|
||||
d->de.d_off = 0;
|
||||
}
|
||||
Reference in New Issue
Block a user