aboutsummaryrefslogtreecommitdiff
path: root/sys/libc/atoi.c
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /sys/libc/atoi.c
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'sys/libc/atoi.c')
-rw-r--r--sys/libc/atoi.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/sys/libc/atoi.c b/sys/libc/atoi.c
new file mode 100644
index 00000000..6df13153
--- /dev/null
+++ b/sys/libc/atoi.c
@@ -0,0 +1,48 @@
+/* Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
+*/
+
+#define import_spp
+#define import_libc
+#define import_ctype
+#include <iraf.h>
+
+
+/* ATOI -- Ascii to integer. Convert a simple integer in decimal radix to
+** a binary integer value.
+*/
+int
+atoi (char *str)
+{
+ register char *ip = str;
+ register int ch, ival;
+ int neg;
+
+
+ if (*str == EOS)
+ return (0);
+
+ /* Skip leading whitespace. */
+ while (isspace (*ip))
+ ip++;
+
+ /* Check for indefinite. */
+ if ((ch = *ip) == 'I')
+ if (strncmp (ip, "INDEF", 5) == 0)
+ if (! (isalnum (ch = *(ip+5)) || ch == '_'))
+ return (INDEFI);
+
+ /* Check for leading + or - sign. */
+ neg = 0;
+ if (ch == '-') {
+ neg++;
+ ip++;
+ } else if (ch == '+')
+ ip++;
+
+ /* Accumulate sequence of digits. */
+ ival = 0;
+ while (isdigit (ch = *ip++))
+ ival = ival * 10 + tointeg(ch);
+
+ return (neg ? -ival : ival);
+}