예제 #1
0
int closedir(DIR *dirp)
{
      if (0 == dirp->dd_fd || _NDIRS < dirp->dd_fd)
      {
            DFerr = EBADF;
            return Error_;
      }
      FIND_END(dirp->dd_buf);
      memset(dirp, 0, sizeof(DIR));
      return Success_;
}
예제 #2
0
/*------------------------------------------------------------------------
 Close a directory <dirp> previously opened with a call to opendir().

 Returns 0 on success or -1 on failure.

 dirent_errno is set to 0 on success or to one of the following on error:
	EINVAL - Bad dirp, probably not opened or already closed. 
------------------------------------------------------------------------*/
int closedir(DIR *dirp)
{
	if (NULL == dirp) {
		dirent_errno = EINVAL;
		return -1;
	}
	FIND_END(&(dirp->d_buf));
	memset(dirp, 0, sizeof(DIR));
	free(dirp);
	dirent_errno = 0;
	return 0;
}