OSDN Git Service

* include/sys/cygwin.h (CW_SETERRNO): Define.
authorcgf <cgf>
Fri, 9 Jan 2009 05:18:01 +0000 (05:18 +0000)
committercgf <cgf>
Fri, 9 Jan 2009 05:18:01 +0000 (05:18 +0000)
* external.cc (CW_SETERRNO): Implement.
* include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 192 to reflect the
above change.
* path.cc (path_prefix_p): Treat X: as equivalent to x:.
* mkglobals_h: Remove unneeded #define.
* spawn.cc (spawn_guts): Avoid overly wordy initialization to zero.

winsup/cygwin/ChangeLog
winsup/cygwin/external.cc
winsup/cygwin/include/cygwin/version.h
winsup/cygwin/include/sys/cygwin.h
winsup/cygwin/mkglobals_h
winsup/cygwin/path.cc
winsup/cygwin/spawn.cc

index 46eddfa..a2c604c 100644 (file)
@@ -1,3 +1,16 @@
+2009-01-09  Christopher Faylor  <me+cygwin@cgf.cx>
+
+       * include/sys/cygwin.h (CW_SETERRNO): Define.
+       * external.cc (CW_SETERRNO): Implement.
+       * include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 192 to
+       reflect the above change.
+
+       * path.cc (path_prefix_p): Treat X: as equivalent to x:.
+
+       * mkglobals_h: Remove unneeded #define.
+
+       * spawn.cc (spawn_guts): Avoid overly wordy initialization to zero.
+
 2009-01-08  Corinna Vinschen  <corinna@vinschen.de>
 
        * libc/fts.c (fts_build): Use DT_DIR case on Cygwin.
index b880e07..0157fc0 100644 (file)
@@ -363,6 +363,13 @@ cygwin_internal (cygwin_getinfo_types t, ...)
          const char *passwd = va_arg (arg, const char *);
          return setlsapwd (passwd);
        }
+      case CW_SETERRNO:
+       {
+         const char *file = va_arg (arg, const char *);
+         int line = va_arg (arg, int);
+         seterrno(file, line);
+       }
+       break;
 
       default:
        break;
index b919e1c..2de3d49 100644 (file)
@@ -340,12 +340,13 @@ details. */
       190: Export fgetwc, fgetws, fputwc, fputws, fwide, getwc, getwchar,
           putwc, putwchar, ungetwc.
       191: Export glob_pattern_p
+      192: CW_SETERRNO added
      */
 
      /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
 
 #define CYGWIN_VERSION_API_MAJOR 0
-#define CYGWIN_VERSION_API_MINOR 191
+#define CYGWIN_VERSION_API_MINOR 192
 
      /* There is also a compatibity version number associated with the
        shared memory regions.  It is incremented when incompatible
index 8c11010..7ad0bcd 100644 (file)
@@ -141,7 +141,8 @@ typedef enum
     CW_SYNC_WINENV,
     CW_CYGTLS_PADSIZE,
     CW_SET_DOS_FILE_WARNING,
-    CW_SET_PRIV_KEY
+    CW_SET_PRIV_KEY,
+    CW_SETERRNO
   } cygwin_getinfo_types;
 
 #define CW_NEXTPID     0x80000000      /* or with pid to get next one */
index 61cfef3..1e409e0 100755 (executable)
@@ -18,7 +18,6 @@ print <<PRELUDE,$_,"#endif /*_GLOBALS_H*/\n";
 /* $target - Autogenerated from @argv.  Look there for comments. */
 
 #ifndef _GLOBALS_H
-#define _GLOBALS_H 1
 PRELUDE
 close $target_fd;
 sub munge($) {
index da96cde..f736be4 100644 (file)
@@ -169,8 +169,20 @@ path_prefix_p (const char *path1, const char *path2, int len1,
     return isdirsep (path2[0]) && !isdirsep (path2[1]);
 
   if (isdirsep (path2[len1]) || path2[len1] == 0 || path1[len1 - 1] == ':')
-    return caseinsensitive ? strncasematch (path1, path2, len1)
-                          : !strncmp (path1, path2, len1);
+    {
+      if (len1 < 2 || (path1[1] != ':') || (path2[1] != ':'))
+       /* nothing */;
+      else if (tolower (*path1) != tolower(*path2))
+       return 0;
+      else
+       {
+         path1 += 2;
+         path2 += 2;
+         len1 -= 2;
+       }
+      return caseinsensitive ? strncasematch (path1, path2, len1)
+                            : !strncmp (path1, path2, len1);
+    }
 
   return 0;
 }
index bb8a75f..121655d 100644 (file)
@@ -310,8 +310,7 @@ spawn_guts (const char *prog_arg, const char *const *argv,
   cygheap_exec_info *moreinfo;
 
   bool null_app_name = false;
-  STARTUPINFOW si = {0, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL,
-                    NULL, NULL, NULL};
+  STARTUPINFOW si = {};
   int looped = 0;
   HANDLE orig_wr_proc_pipe = NULL;