summaryrefslogtreecommitdiff
path: root/src/cmd/cc
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-03-24 12:12:57 -0700
committerRuss Cox <rsc@golang.org>2009-03-24 12:12:57 -0700
commit57ba0222ea5643ab726e9d924b19c73c2bfd6f5f (patch)
tree317ec13c2b4759fab9b0d8319bdc9dad9b663285 /src/cmd/cc
parent87efb27f42c7230b89097f296935058492f40b52 (diff)
downloadgolang-57ba0222ea5643ab726e9d924b19c73c2bfd6f5f.tar.gz
throw away most of the compat.h compatibility layer
in favor of the lib9 compatibility layer. no need for two. now that mycreate is gone, .6 files are 0644 not 0755. TBR=r OCL=26679 CL=26679
Diffstat (limited to 'src/cmd/cc')
-rw-r--r--src/cmd/cc/cc.h21
-rw-r--r--src/cmd/cc/lex.c82
-rw-r--r--src/cmd/cc/macbody2
3 files changed, 72 insertions, 33 deletions
diff --git a/src/cmd/cc/cc.h b/src/cmd/cc/cc.h
index 42341a70c..2ebea6f5f 100644
--- a/src/cmd/cc/cc.h
+++ b/src/cmd/cc/cc.h
@@ -32,7 +32,6 @@
#include <libc.h>
#include <bio.h>
#include <ctype.h>
-#include "compat.h"
#pragma lib "../cc/cc.a$O"
@@ -542,17 +541,8 @@ extern uint32 thash[];
/*
* compat.c/unix.c/windows.c
*/
-int mywait(int*);
-int mycreat(char*, int);
int systemtype(int);
int pathchar(void);
-int myaccess(char*);
-char* mygetwd(char*, int);
-int myexec(char*, char*[]);
-int mydup(int, int);
-int myfork(void);
-int mypipe(int*);
-void* mysbrk(uint32);
/*
* parser
@@ -794,3 +784,14 @@ int machcap(Node*);
#pragma varargck type "O" int
#pragma varargck type "T" Type*
#pragma varargck type "|" int
+
+enum
+{
+ Plan9 = 1<<0,
+ Unix = 1<<1,
+ Windows = 1<<2,
+};
+int pathchar(void);
+int systemtype(int);
+void* alloc(int32 n);
+void* allocn(void*, int32, int32);
diff --git a/src/cmd/cc/lex.c b/src/cmd/cc/lex.c
index c5126b7ed..b3216af44 100644
--- a/src/cmd/cc/lex.c
+++ b/src/cmd/cc/lex.c
@@ -35,6 +35,19 @@
#define CPP "/bin/cpp"
#endif
+int
+systemtype(int sys)
+{
+
+ return sys&Plan9;
+}
+
+int
+pathchar(void)
+{
+ return '/';
+}
+
/*
* known debug flags
* -a acid declaration output
@@ -67,7 +80,7 @@ void
main(int argc, char *argv[])
{
char *defs[50], *p;
- int nproc, nout, status, i, c, ndef;
+ int nproc, nout, i, c, ndef;
memset(debug, 0, sizeof(debug));
tinit();
@@ -132,18 +145,13 @@ main(int argc, char *argv[])
c = 0;
nout = 0;
for(;;) {
+ Waitmsg *w;
+
while(nout < nproc && argc > 0) {
- i = myfork();
+ i = fork();
if(i < 0) {
- i = mywait(&status);
- if(i < 0) {
- print("cannot create a process\n");
- errorexit();
- }
- if(status)
- c++;
- nout--;
- continue;
+ print("cannot create a process\n");
+ errorexit();
}
if(i == 0) {
fprint(2, "%s:\n", *argv);
@@ -155,13 +163,13 @@ main(int argc, char *argv[])
argc--;
argv++;
}
- i = mywait(&status);
- if(i < 0) {
+ w = wait();
+ if(w == nil) {
if(c)
errorexit();
exits(0);
}
- if(status)
+ if(w->msg[0])
c++;
nout--;
}
@@ -236,7 +244,7 @@ compile(char *file, char **defs, int ndef)
dup(2, 1);
}
} else {
- c = mycreate(outfile, 0664);
+ c = create(outfile, OWRITE, 0664);
if(c < 0) {
diag(Z, "cannot open %s - %r", outfile);
outfile = 0;
@@ -254,21 +262,21 @@ compile(char *file, char **defs, int ndef)
diag(Z, "-p option not supported on windows");
errorexit();
}
- if(myaccess(file) < 0) {
+ if(access(file, AREAD) < 0) {
diag(Z, "%s does not exist", file);
errorexit();
}
- if(mypipe(fd) < 0) {
+ if(pipe(fd) < 0) {
diag(Z, "pipe failed");
errorexit();
}
- switch(myfork()) {
+ switch(fork()) {
case -1:
diag(Z, "fork failed");
errorexit();
case 0:
close(fd[0]);
- mydup(fd[1], 1);
+ dup(fd[1], 1);
close(fd[1]);
av[0] = CPP;
i = 1;
@@ -296,7 +304,7 @@ compile(char *file, char **defs, int ndef)
fprint(2, "%s ", av[c]);
fprint(2, "\n");
}
- myexec(av[0], av);
+ exec(av[0], av);
fprint(2, "can't exec C preprocessor %s: %r\n", CPP);
errorexit();
default:
@@ -1266,9 +1274,9 @@ cinit(void)
dclstack = D;
pathname = allocn(pathname, 0, 100);
- if(mygetwd(pathname, 99) == 0) {
+ if(getwd(pathname, 99) == 0) {
pathname = allocn(pathname, 100, 900);
- if(mygetwd(pathname, 999) == 0)
+ if(getwd(pathname, 999) == 0)
strcpy(pathname, "/???");
}
@@ -1540,3 +1548,33 @@ setinclude(char *p)
p = e+1;
}
}
+
+void*
+alloc(int32 n)
+{
+ void *p;
+
+ p = malloc(n);
+ if(p == nil) {
+ print("alloc out of mem\n");
+ exit(1);
+ }
+ memset(p, 0, n);
+ return p;
+}
+
+void*
+allocn(void *p, int32 n, int32 d)
+{
+
+ if(p == nil)
+ return alloc(d);
+ p = realloc(p, n+d);
+ if(p == nil) {
+ print("allocn out of mem\n");
+ exit(1);
+ }
+ if(d > 0)
+ memset((char*)p+n, 0, d);
+ return p;
+}
diff --git a/src/cmd/cc/macbody b/src/cmd/cc/macbody
index e23d1bdc9..64f04129f 100644
--- a/src/cmd/cc/macbody
+++ b/src/cmd/cc/macbody
@@ -579,7 +579,7 @@ macinc(void)
if(strcmp(symb, "./") == 0)
symb[0] = 0;
strcat(symb, str);
- f = myopen(symb);
+ f = open(symb, OREAD);
if(f >= 0)
break;
}