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
|
/* Fitsy FITS header find routines.
*/
#include "xos.h"
#include "fitsy.h"
extern int ft_compare();
/* Find a FITS card in the header.
If the header has been indexed the index will be used
otherwise a sequential search will be done.
Returns
The card found or NULL if an exact match was not found.
*/
FITSCard ft_headfind(fits, name, n, add)
FITSHead fits; /* The FITS header to search. */
char *name; /* Name of the card keyword to search for. */
int n; /* keyword index number, if is zero no
index number is appended to the keyword.
*/
int add; /* If add is true the card will
be added to the header if it is
not found.
*/
{
FITSBuff key;
return ft_cardfind(fits, ft_cardkey(&key, name, n), add);
}
/* Index a header for use with #ft_headfind.
*/
void ft_headindex(fits)
FITSHead fits;
{
int i;
if ( fits->index ) (void)Free(fits->index);
Malloc(fits->index, sizeof(FITSCard *) * fits->ncard);
for ( i = 0; i < fits->ncard; i++ ) {
fits->index[i] = (FITSCard) &fits->cards[i];
}
qsort(fits->index, fits->ncard, sizeof(FITSCard *), ft_compare);
}
/* Find a FITS card in the header.
#headfindidx uses an index to find the card.
*/
FITSCard ft_headfindidx(fits, name, n, match)
FITSHead fits;
char *name;
int n;
int *match; /* Returns true if the card found is
an exact match for the keyword
requested.
*/
{
FITSBuff key;
return ft_cardfindidx(fits, ft_cardkey(&key, name, n), match);
}
/* Find a FITS card in the header.
Find a card in the header using sequential search.
If the requested card is a FITS indexed keyword and an exact match
is not found, the highest existing card of that type is returned and
match is set to 0.
*/
FITSCard ft_headfindseq(fits, name, n, match)
FITSHead fits;
char *name;
int n;
int *match;
{
FITSBuff key;
return ft_cardfindseq(fits, ft_cardkey(&key, name, n), match);
}
|