xref: /original-bsd/lib/libc/gen/closedir.c (revision 3d13a774)
1cd91020bSdist /*
2*3d13a774Sbostic  * Copyright (c) 1983, 1993
3*3d13a774Sbostic  *	Regents of the University of California.  All rights reserved.
4b93cb091Sbostic  *
5be25273bSbostic  * %sccs.include.redist.c%
6cd91020bSdist  */
7cd91020bSdist 
8432efd2dSdonn #if defined(LIBC_SCCS) && !defined(lint)
9*3d13a774Sbostic static char sccsid[] = "@(#)closedir.c	8.1 (Berkeley) 06/10/93";
10b93cb091Sbostic #endif /* LIBC_SCCS and not lint */
11f510e74dSmckusick 
1229f6e5f0Sbostic #include <sys/types.h>
13a0a99e1fSmckusick #include <dirent.h>
14ae227ee3Sdonn #include <stdlib.h>
15ae227ee3Sdonn #include <unistd.h>
16f510e74dSmckusick 
17f510e74dSmckusick /*
18f510e74dSmckusick  * close a directory.
19f510e74dSmckusick  */
20ae227ee3Sdonn int
closedir(dirp)21f510e74dSmckusick closedir(dirp)
22ca95b856Smckusic 	register DIR *dirp;
23f510e74dSmckusick {
2429f6e5f0Sbostic 	int fd;
25a4770fe4Smckusick 
26bd142deeSmckusick 	seekdir(dirp, dirp->dd_rewind);	/* free seekdir storage */
2729f6e5f0Sbostic 	fd = dirp->dd_fd;
28ca95b856Smckusic 	dirp->dd_fd = -1;
29ca95b856Smckusic 	dirp->dd_loc = 0;
3029f6e5f0Sbostic 	(void)free((void *)dirp->dd_buf);
3129f6e5f0Sbostic 	(void)free((void *)dirp);
3229f6e5f0Sbostic 	return(close(fd));
33f510e74dSmckusick }
34