summaryrefslogtreecommitdiff
path: root/sys/src/cmd/eqn
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-03-11 18:57:22 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2013-03-11 18:57:22 +0100
commit25f04a68a168a948783618910e115316eb0ed3fc (patch)
treeb3cb88e49ef21b5855569918634937bdbf78b19e /sys/src/cmd/eqn
parent34ec2056041a193a471701dd50e2032dc300fb0e (diff)
ape: threadsafe errno
store errno on the private process stack so its always per process and not just per memory space. errno itself becomes a macro dereferencing int *_errnoloc; which is initialized from main9.s pointing to the private stack location. various fixes in programs that just imported errno variable with "extern int errno;" instead of including <errno.h>.
Diffstat (limited to 'sys/src/cmd/eqn')
-rw-r--r--sys/src/cmd/eqn/lex.c2
-rw-r--r--sys/src/cmd/eqn/main.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/sys/src/cmd/eqn/lex.c b/sys/src/cmd/eqn/lex.c
index e535b8699..454a39abc 100644
--- a/sys/src/cmd/eqn/lex.c
+++ b/sys/src/cmd/eqn/lex.c
@@ -1,6 +1,7 @@
#include "e.h"
#include "y.tab.h"
#include <ctype.h>
+#include <errno.h>
#define SSIZE 1000
char token[SSIZE];
@@ -234,7 +235,6 @@ void include(void)
char name[100];
FILE *fin;
int c;
- extern int errno;
while ((c = input()) == ' ')
;
diff --git a/sys/src/cmd/eqn/main.c b/sys/src/cmd/eqn/main.c
index 879b979e5..a0654d867 100644
--- a/sys/src/cmd/eqn/main.c
+++ b/sys/src/cmd/eqn/main.c
@@ -1,4 +1,5 @@
#include "e.h"
+#include <errno.h>
#define MAXLINE 3600 /* maximum input line */
@@ -92,7 +93,6 @@ getdata(void)
{
int i, type, ln;
char fname[100];
- extern int errno;
errno = 0;
curfile->lineno = 0;