open() giving ENOENT when trying to create files with control chars

Yitzchak Scott-Thoennes sthoenna@efn.org
Fri Dec 2 20:31:00 GMT 2005


I'm trying to create a file (on NTFS) with a CR in the name and getting
ENOENT; is it possible for this to work (without a managed mount)?

Trying all possible characters:

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <ctype.h>

int main(int argc, char **argv)
{
  int fd, c, err;
  char filename[4] = "foo";
  char buf[12];

  for (c = 1; c <= 255; ++c) {
    filename[1] = c;
    fd = open (filename, O_WRONLY|O_CREAT|O_EXCL, 0640);
    if (fd < 0) {
      err = errno;
      printf ("%02x%s: %s\n", c,
              (iscntrl (c) ? "" : (sprintf (buf, " (%c)", c), buf)),
              strerror (err));
    } else {
      close (fd);
      if (unlink (filename))
        fprintf (stderr, "%x: unlink failed: %s\n", c, strerror (errno));
    } 
  }
  return 0;
}

shows all control characters and just a few others not working (obviously
/ and : are out):

01: No such file or directory
02: No such file or directory
03: No such file or directory
04: No such file or directory
05: No such file or directory
06: No such file or directory
07: No such file or directory
08: No such file or directory
09: No such file or directory
0a: No such file or directory
0b: No such file or directory
0c: No such file or directory
0d: No such file or directory
0e: No such file or directory
0f: No such file or directory
10: No such file or directory
11: No such file or directory
12: No such file or directory
13: No such file or directory
14: No such file or directory
15: No such file or directory
16: No such file or directory
17: No such file or directory
18: No such file or directory
19: No such file or directory
1a: No such file or directory
1b: No such file or directory
1c: No such file or directory
1d: No such file or directory
1e: No such file or directory
1f: No such file or directory
22 ("): No such file or directory
2a (*): No such file or directory
2f (/): No such file or directory
3a (:): No such file or directory
3c (<): No such file or directory
3e (>): No such file or directory
3f (?): No such file or directory
5c (\): No such file or directory
7c (|): No such file or directory

--
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/



More information about the Cygwin mailing list