aboutsummaryrefslogtreecommitdiff
path: root/sys/fmtio/ctoi.x
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /sys/fmtio/ctoi.x
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'sys/fmtio/ctoi.x')
-rw-r--r--sys/fmtio/ctoi.x48
1 files changed, 48 insertions, 0 deletions
diff --git a/sys/fmtio/ctoi.x b/sys/fmtio/ctoi.x
new file mode 100644
index 00000000..ce791222
--- /dev/null
+++ b/sys/fmtio/ctoi.x
@@ -0,0 +1,48 @@
+# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+
+include <ctype.h>
+
+# CTOI -- Simple character to integer (decimal radix).
+
+int procedure ctoi (str, ip, ival)
+
+char str[ARB] # decimal encoded numeric string
+int ip # starting index in string (input/output)
+int ival # decoded integer value (output)
+
+bool neg
+int sum
+int ip_start
+int strncmp()
+
+begin
+ while (IS_WHITE (str[ip]))
+ ip = ip + 1
+ ip_start = ip
+
+ # Check for "INDEF".
+ if (str[ip] == 'I')
+ if (strncmp (str[ip], "INDEF", 5) == 0)
+ if (!IS_ALNUM (str[ip+5])) {
+ ival = INDEFI
+ ip = ip + 5
+ return (5)
+ }
+
+ neg = (str[ip] == '-')
+ if (neg)
+ ip = ip + 1
+
+ sum = 0
+ while (IS_DIGIT (str[ip])) {
+ sum = sum * 10 + TO_INTEG (str[ip])
+ ip = ip + 1
+ }
+
+ if (neg)
+ ival = -sum
+ else
+ ival = sum
+
+ return (ip - ip_start)
+end