Changeset View
Changeset View
Standalone View
Standalone View
head/lib/libc/gen/closedir.c
Show First 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | fdclosedir(DIR *dirp) | ||||
int fd; | int fd; | ||||
if (__isthreaded) | if (__isthreaded) | ||||
_pthread_mutex_lock(&dirp->dd_lock); | _pthread_mutex_lock(&dirp->dd_lock); | ||||
fd = dirp->dd_fd; | fd = dirp->dd_fd; | ||||
dirp->dd_fd = -1; | dirp->dd_fd = -1; | ||||
dirp->dd_loc = 0; | dirp->dd_loc = 0; | ||||
free((void *)dirp->dd_buf); | free((void *)dirp->dd_buf); | ||||
free(dirp->dd_compat_de); | |||||
_reclaim_telldir(dirp); | _reclaim_telldir(dirp); | ||||
if (__isthreaded) { | if (__isthreaded) { | ||||
_pthread_mutex_unlock(&dirp->dd_lock); | _pthread_mutex_unlock(&dirp->dd_lock); | ||||
_pthread_mutex_destroy(&dirp->dd_lock); | _pthread_mutex_destroy(&dirp->dd_lock); | ||||
} | } | ||||
free((void *)dirp); | free((void *)dirp); | ||||
return (fd); | return (fd); | ||||
} | } | ||||
int | int | ||||
closedir(DIR *dirp) | closedir(DIR *dirp) | ||||
{ | { | ||||
return (_close(fdclosedir(dirp))); | return (_close(fdclosedir(dirp))); | ||||
} | } |