This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

readdir after rewinddir not working in 20060128 snapshot


After a rewinddir, readdir seems to return as many empty entries as there
were actual entries left to read, followed by . and ..

$ cat rewdir.c
#include <stdio.h>
#include <dirent.h>
#include <errno.h>
#include <string.h>

void readentries(DIR *dh, int limit) {
  struct dirent *de;
  int count;

  for (count = 0; count < limit; ++count) {
    errno = 0;
    if ((de = readdir(dh)) == NULL) {
      if (errno != 0) printf ("read error: %s\n", strerror (errno));
      break;
    }
    printf ("got: %s\n", de->d_name);
  }
}

int main(int argc, char **argv)
{
  DIR *dh;

  if (argc != 2) return 1;

  if ( (dh = opendir (argv[1])) == NULL ) {
    fprintf (stderr, "couldn't open '%s': %s\n", argv[1], strerror (errno));
    return 1;
  }

  readentries (dh, 4);

  printf ("rewinding.\n");
  errno = 0;
  rewinddir (dh);
  if (errno != 0) printf ("unexpected errno: %d\n", errno);

  readentries (dh, 9999);

  return 0;
}

$ rm -rf foo; mkdir foo; touch foo/{bar,baz,quux,quuux,quuuux}

$ ./rewdir foo
got: .
got: ..
got: bar
got: baz
rewinding.
got:
got:
got:
got: .
got: ..

Attachment: cygcheck.out
Description: Text document

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]