Blame dirent/bug-readdir1.c

Packit 6c4009
#include <dirent.h>
Packit 6c4009
#include <errno.h>
Packit 6c4009
#include <errno.h>
Packit 6c4009
#include <stdio.h>
Packit 6c4009
#include <stdlib.h>
Packit 6c4009
#include <unistd.h>
Packit 6c4009
#include <sys/types.h>
Packit 6c4009
Packit 6c4009
Packit 6c4009
int
Packit 6c4009
main (void)
Packit 6c4009
{
Packit 6c4009
  DIR *dirp;
Packit 6c4009
  struct dirent* ent;
Packit 6c4009
Packit 6c4009
  /* open a dir stream */
Packit 6c4009
  dirp = opendir ("/tmp");
Packit 6c4009
  if (dirp == NULL)
Packit 6c4009
    {
Packit 6c4009
      if (errno == ENOENT)
Packit 6c4009
	exit (0);
Packit 6c4009
Packit 6c4009
      perror ("opendir");
Packit 6c4009
      exit (1);
Packit 6c4009
    }
Packit 6c4009
Packit 6c4009
  /* close the directory file descriptor, making it invalid */
Packit 6c4009
  if (close (dirfd (dirp)) != 0)
Packit 6c4009
    {
Packit 6c4009
      puts ("could not close directory file descriptor");
Packit 6c4009
      /* This is not an error.  It is not guaranteed this is possible.  */
Packit 6c4009
      return 0;
Packit 6c4009
    }
Packit 6c4009
Packit 6c4009
  ent = readdir (dirp);
Packit 6c4009
Packit 6c4009
  return ent != NULL || errno != EBADF;
Packit 6c4009
}