diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /sys/fmtio/ctoi.x | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'sys/fmtio/ctoi.x')
-rw-r--r-- | sys/fmtio/ctoi.x | 48 |
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 |