Changeset View
Changeset View
Standalone View
Standalone View
lib/libc/gen/rewinddir.c
Show First 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | |||||
void | void | ||||
rewinddir(dirp) | rewinddir(dirp) | ||||
DIR *dirp; | DIR *dirp; | ||||
{ | { | ||||
if (__isthreaded) | if (__isthreaded) | ||||
_pthread_mutex_lock(&dirp->dd_lock); | _pthread_mutex_lock(&dirp->dd_lock); | ||||
dirp->dd_flags &= ~__DTF_SKIPREAD; /* current contents are invalid */ | |||||
if (dirp->dd_flags & __DTF_READALL) | if (dirp->dd_flags & __DTF_READALL) | ||||
_filldir(dirp, false); | _filldir(dirp, false); | ||||
else { | else { | ||||
(void) lseek(dirp->dd_fd, 0, SEEK_SET); | (void) lseek(dirp->dd_fd, 0, SEEK_SET); | ||||
dirp->dd_seek = 0; | dirp->dd_seek = 0; | ||||
} | } | ||||
dirp->dd_loc = 0; | dirp->dd_loc = 0; | ||||
_reclaim_telldir(dirp); | _reclaim_telldir(dirp); | ||||
if (__isthreaded) | if (__isthreaded) | ||||
_pthread_mutex_unlock(&dirp->dd_lock); | _pthread_mutex_unlock(&dirp->dd_lock); | ||||
} | } |