(linenum→info "unix/slp.c:2238")

glibc/2.7/dirent/bug-readdir1.c

    1: #include <dirent.h>
    2: #include <errno.h>
    3: #include <errno.h>
    4: #include <stdio.h>
    5: #include <stdlib.h>
    6: #include <unistd.h>
    7: #include <sys/types.h>
    8: 
    9: 
   10: int
   11: main (void)
   12: {
   13:   DIR *dirp;
   14:   struct dirent* ent;
   15: 
   16:   /* open a dir stream */
   17:   dirp = opendir ("/tmp");
   18:   if (dirp == NULL)
   19:     {
   20:       if (errno == ENOENT)
   21:         exit (0);
   22: 
   23:       perror ("opendir");
   24:       exit (1);
   25:     }
   26: 
   27:   /* close the directory file descriptor, making it invalid */
   28:   if (close (dirfd (dirp)) != 0)
   29:     {
   30:       puts ("could not close directory file descriptor");
   31:       /* This is not an error.  It is not guaranteed this is possible.  */
   32:       return 0;
   33:     }
   34: 
   35:   ent = readdir (dirp);
   36: 
   37:   return ent != NULL || errno != EBADF;
   38: }
Syntax (Markdown)