File: ctoi.x

package info (click to toggle)
iraf 2.18.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 86,000 kB
  • sloc: ansic: 115,890; fortran: 74,576; lisp: 18,888; yacc: 5,642; sh: 961; lex: 596; makefile: 509; asm: 159; csh: 54; xml: 33; sed: 4
file content (48 lines) | stat: -rw-r--r-- 854 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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