]> Cypherpunks repositories - gostls13.git/commitdiff
gc: better windows detection
authorRuss Cox <rsc@golang.org>
Wed, 28 Apr 2010 00:19:15 +0000 (17:19 -0700)
committerRuss Cox <rsc@golang.org>
Wed, 28 Apr 2010 00:19:15 +0000 (17:19 -0700)
R=ken2
CC=golang-dev
https://golang.org/cl/944043

src/cmd/gc/go.h
src/cmd/gc/lex.c

index 8f7450ef480e4e42d601a448e6fcbb24a4c6682d..3051ebe2ba2b81a265ea8e159cf69472b5f27b27 100644 (file)
@@ -1241,10 +1241,3 @@ int      duintptr(Sym *s, int off, uint64 v);
 int    duintxx(Sym *s, int off, uint64 v, int wid);
 void   genembedtramp(Type*, Type*, Sym*);
 int    gen_as_init(Node*);
-
-
-enum {
-       SysUnix = 1<<1,
-       SysWindows = 1<<2,
-};
-int    systemtype(int);
index f6359da560010ea29bfd37fb40e6e0c17f01dfe2..7424f69671e7a72b6bb478685bbdfea9ea483b0a 100644 (file)
@@ -8,6 +8,8 @@
 #include <ar.h>
 
 extern int yychar;
+int windows;
+
 void lexfini(void);
 void yytinit(void);
 
@@ -81,7 +83,10 @@ main(int argc, char *argv[])
        if(getwd(pathname, 999) == 0)
                strcpy(pathname, "/???");
 
-       if(systemtype(SysWindows)) {
+       if(isalpha(pathname[0]) && pathname[1] == ':') {
+               // On Windows.
+               windows = 1;
+
                // Canonicalize path by converting \ to / (Windows accepts both).
                for(p=pathname; *p; p++)
                        if(*p == '\\')
@@ -247,9 +252,9 @@ addidir(char* dir)
 int
 islocalname(Strlit *name)
 {
-       if(systemtype(SysUnix) && name->len >= 1 && name->s[0] == '/')
+       if(!windows && name->len >= 1 && name->s[0] == '/')
                return 1;
-       if(systemtype(SysWindows) && name->len >= 3 &&
+       if(windows && name->len >= 3 &&
           isalpha(name->s[0]) && name->s[1] == ':' && name->s[2] == '/')
                return 1;
        if(name->len >= 2 && strncmp(name->s, "./", 2) == 0)
@@ -1673,13 +1678,3 @@ mkpackage(char* pkgname)
                outfile = smprint("%s.%c", namebuf, thechar);
        }
 }
-
-int
-systemtype(int sys)
-{
-#ifdef __MINGW32__
-       return sys&SysWindows;
-#else
-       return sys&SysUnix;
-#endif
-}