aboutsummaryrefslogtreecommitdiff
path: root/sys/imio/iki/stf/stfget.x
blob: bacbc8d7d07c735f59f8405ba1e3cf30b54fb87c (plain) (blame)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

include	<ctype.h>
include	"stf.h"

# STF_GETI -- Return the integer value of a FITS encoded card.

procedure stf_geti (card, ival)

char	card[ARB]		# card to be decoded
int	ival			# receives integer value

int	ip, ctoi()
char	sval[FITS_SZVALSTR]

begin
	call stf_gets (card, sval, FITS_SZVALSTR)
	ip = 1
	if (ctoi (sval, ip, ival) <= 0)
	    ival = 0
end


# STF_GETB -- Return the boolean/integer value of a FITS encoded card.

procedure stf_getb (card, bval)

char	card[ARB]		# card to be decoded
int	bval			# receives YES/NO

char	sval[FITS_SZVALSTR]

begin
	call stf_gets (card, sval, FITS_SZVALSTR)
	if (sval[1] == 'T')
	    bval = YES
	else
	    bval = NO
end


# STF_GETS -- Get the string value of a FITS encoded card.  Strip leading
# and trailing whitespace and any quotes.

procedure stf_gets (card, outstr, maxch)

char	card[ARB]		# FITS card to be decoded
char	outstr[ARB]		# output string to receive parameter value
int	maxch

int	ip, op
int	ctowrd(), strlen()

begin
	ip = FITS_STARTVALUE
	if (ctowrd (card, ip, outstr, maxch) > 0) {
	    # Strip trailing whitespace.
	    op = strlen (outstr)
	    while (op > 0 && (IS_WHITE(outstr[op]) || outstr[op] == '\n'))
		op = op - 1
	    outstr[op+1] = EOS
	} else
	    outstr[1] = EOS
end


# STF_GETCMT -- Get the comment field of a FITS encoded card.

procedure stf_getcmt (card, comment, maxch)

char	card[ARB]		#I FITS card to be decoded
char	comment[ARB]		#O output string to receive comment
int	maxch			#I max chars out

int	ip, op
int	lastch

begin
	# Find the slash which marks the beginning of the comment field.
	ip = FITS_ENDVALUE + 1
	while (card[ip] != EOS && card[ip] != '\n' && card[ip] != '/')
	    ip = ip + 1

	# Copy the comment to the output string, omitting the /, any
	# trailing blanks, and the newline.

	lastch = 0
	do op = 1, maxch {
	    if (card[ip] == EOS)
		break
	    ip = ip + 1
	    comment[op] = card[ip]
	    if (card[ip] > ' ')
		lastch = op
	}
	comment[lastch+1] = EOS
end