replaced atol definition
authorceriel <none@none>
Wed, 18 Dec 1991 16:15:18 +0000 (16:15 +0000)
committerceriel <none@none>
Wed, 18 Dec 1991 16:15:18 +0000 (16:15 +0000)
mach/proto/cg/fillem.c
mach/proto/ncg/fillem.c

index f29e3d6..aab981c 100644 (file)
@@ -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();
index af15297..ad107a4 100644 (file)
@@ -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();