This is the mail archive of the
cygwin-apps
mailing list for the Cygwin project.
Re: 1.7 installation failed (on network drive?)
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