From 40e5a5811c6ffce9b0974e93cdd927cbcf60c157 Mon Sep 17 00:00:00 2001 From: Joe Hunkeler Date: Tue, 11 Aug 2015 16:51:37 -0400 Subject: Repatch (from linux) of OSX IRAF --- sys/fmtio/ctoi.x | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 sys/fmtio/ctoi.x (limited to 'sys/fmtio/ctoi.x') 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 + +# 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 -- cgit