On Dec 15 15:25, Thomas Wolff wrote: > Corinna Vinschen schrieb: > >On Dec 11 12:52, Thomas Wolff wrote: > >>Corinna Vinschen wrote: > >>#define STATUS_OBJECT_PATH_NOT_FOUND ((NTSTATUS)0xC000003AL) > >>#define STATUS_OBJECT_PATH_SYNTAX_BAD ((NTSTATUS)0xC000003BL) > >> > >>However, before the fatal error occurs, it's just > >>"STATUS_ACCESS_DENIED" in both cases. > >> > >>... > >>Starting cygwin install, version 2.662 > >>filemanip:NtCreateFile -> C000003B > >This one might be the actual problem. What's the actual path given > >to NtCreateFile (in uname)? Does it contain slashes maybe? > There is "\??\/var" and occasional double and triple backslashes; I > wonder what "\??" means.
\?? is a shortcut for the DOS device subdirectory in the native NT namespace. "C:\foo" in DOS is "\??\C:\foo" in native NT speak. "\\server\share" in DOS is "\??\UNC\server\share". The problem is that the native NT namespace does not recognize / as path separator anymore. So / must be converted to \ before calling native NT functions. Multiple backslashes are also not allowed, the path must be normalized already. This is all the job of the caller. Try the below patch, please. I installed to an H:\cygwin directory fresh from scratch and it worked fine for me. I'm wondering what bugs will remain for you. Please note that a couple of the "no such file or directory" style messages are a result of setup trying to find the setting files (like "setup.rc") from a former run. If they don't exist yet, you get "these No such file" messages, but they are not important. Corinna Index: filemanip.cc =================================================================== RCS file: /cvs/cygwin-apps/setup/filemanip.cc,v retrieving revision 2.26 diff -u -p -r2.26 filemanip.cc --- filemanip.cc 3 Jun 2009 08:16:21 -0000 2.26 +++ filemanip.cc 15 Dec 2009 16:14:45 -0000 @@ -183,12 +183,12 @@ backslash(const std::string& s) } wchar_t tfx_chars[] = { - 0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, '!', 0xf000 | '"', '#', '$', '%', '&', 39, - '(', ')', 0xf000 | '*', '+', ',', '-', '.', '\\', + 0, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, + 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, + 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, + 0xf018, 0xf019, 0xf01a, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f, + ' ', '!', 0xf000 | '"', '#', '$', '%', '&', 39, + '(', ')', 0xf000 | '*', '+', ',', '-', '.', '\\', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 0xf000 | ':', ';', 0xf000 | '<', '=', 0xf000 | '>', 0xf000 | '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', Index: UserSettings.cc =================================================================== RCS file: /cvs/cygwin-apps/setup/UserSettings.cc,v retrieving revision 2.14 diff -u -p -r2.14 UserSettings.cc --- UserSettings.cc 28 Jun 2009 16:40:22 -0000 2.14 +++ UserSettings.cc 15 Dec 2009 16:14:45 -0000 @@ -62,12 +62,15 @@ UserSettings::extend_table (ssize_t i) table[i] = NULL; } +#define isslash(c) ((c) == '\\' || (c) == '/') + io_stream * UserSettings::open_settings (const char *filename, std::string &pathname) { pathname = "file://"; pathname += cwd; - pathname += "//"; + if (!isslash (cwd[cwd.size () - 1]) && !isslash (filename[0])) + pathname += "/"; pathname += filename; io_stream *f = io_stream::open(pathname, "rt"); if (!f) Index: localdir.cc =================================================================== RCS file: /cvs/cygwin-apps/setup/localdir.cc,v retrieving revision 2.31 diff -u -p -r2.31 localdir.cc --- localdir.cc 8 Dec 2009 22:26:44 -0000 2.31 +++ localdir.cc 15 Dec 2009 16:14:45 -0000 @@ -81,7 +81,7 @@ LocalDirSetting::save () else { theLog->clearFiles(); - mkdir_p (0, "/var/log", 01777); + mkdir_p (0, cygpath ("/var/log").c_str (), 01777); theLog->setFile (LOG_BABBLE, cygpath ("/var/log/setup.log.full"), false); theLog->setFile (0, cygpath ("/var/log/setup.log"), true); } -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat