Blame dirent/bug-readdir1.c

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