This is the mail archive of the cygwin-apps 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]

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


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