From 5ccd8303476a78d6595920081048c2c206835fbd Mon Sep 17 00:00:00 2001
From: ceriel <none@none>
Date: Wed, 18 Dec 1991 16:15:18 +0000
Subject: [PATCH] replaced atol definition

---
 mach/proto/cg/fillem.c  | 24 +++++++++++++++++++++++-
 mach/proto/ncg/fillem.c | 25 ++++++++++++++++++++++++-
 2 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/mach/proto/cg/fillem.c b/mach/proto/cg/fillem.c
index f29e3d647..aab981c34 100644
--- a/mach/proto/cg/fillem.c
+++ b/mach/proto/cg/fillem.c
@@ -82,9 +82,31 @@ int regallowed=0;
 
 extern char em_flag[];
 extern short em_ptyp[];
-extern long atol();
 extern double atof();
 
+/* Own version of atol that continues computing on overflow.
+   We don't know that about the ANSI C one.
+*/
+long atol(s)
+register char *s;
+{
+  register long total = 0;
+  register unsigned digit;
+  int minus = 0;
+
+  while (*s == ' ' || *s == '\t') s++;
+  if (*s == '+') s++;
+  else if (*s == '-') {
+	s++;
+	minus = 1;
+  }
+  while ((digit = *s++ - '0') < 10) {
+	total *= 10;
+	total += digit;
+  }
+  return(minus ? -total : total);
+}
+
 #define sp_cstx sp_cst2
 
 string tostring();
diff --git a/mach/proto/ncg/fillem.c b/mach/proto/ncg/fillem.c
index af152979d..ad107a44d 100644
--- a/mach/proto/ncg/fillem.c
+++ b/mach/proto/ncg/fillem.c
@@ -80,9 +80,32 @@ int regallowed=0;
 
 extern char em_flag[];
 extern short em_ptyp[];
-extern long atol();
 extern double atof();
 
+/* Own version of atol that continues computing on overflow.
+   We don't know that about the ANSI C one.
+*/
+long atol(s)
+register char *s;
+{
+  register long total = 0;
+  register unsigned digit;
+  int minus = 0;
+
+  while (*s == ' ' || *s == '\t') s++;
+  if (*s == '+') s++;
+  else if (*s == '-') {
+        s++;
+        minus = 1;
+  }
+  while ((digit = *s++ - '0') < 10) {
+        total *= 10;
+        total += digit;
+  }
+  return(minus ? -total : total);
+}
+
+
 #define sp_cstx sp_cst2
 
 string tostring();