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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
#include <funtools.h>
#include <stdlib.h>
#include <file.h>
extern char *optarg;
extern int optind;
#define DIM1 5
#define DIM2 8
#ifdef ANSI_FUNC
int
main (int argc, char **argv)
#else
main(argc, argv)
int argc;
char **argv;
#endif
{
int c;
int i;
int args;
int doext=0;
int doover=0;
int dim1=DIM1;
int dim2=DIM2;
int bitpix1=32;
int bitpix2=-32;
int buf1[DIM1*DIM2];
float buf2[DIM1*DIM2];
char *oname;
Fun ofun=NULL;
/* fill in data buffers */
for(i=0; i<DIM1*DIM2; i++){
buf1[i] = i;
buf2[i] = (float)(DIM1*DIM2)-(float)i;
}
/* exit on gio errors */
setgerror(2);
/* we want the args in the same order in which they arrived, and
gnu getopt sometimes changes things without this */
putenv("POSIXLY_CORRECT=true");
/* process switch arguments */
while ((c = getopt(argc, argv, "eo")) != -1){
switch(c){
case 'e':
doext=1;
break;
case 'o':
doover=1;
break;
default:
break;
}
}
/* check for required arguments */
args = argc - optind;
if( args < 1 )
gerror(stderr, "usage: %s fname\n", argv[0]);
oname = argv[optind++];
/* open the output FITS file */
if( oname ){
if( !(ofun = FunOpen(oname, "w", NULL)) )
gerror(stderr, "could not FunOpen output file: %s\n", argv[optind-1]);
}
/* write params, if necessary */
FunParamPuts(ofun, "", 0, "this is a comment", "Blank Keyword", 0);
FunParamPuts(ofun, " ", 0, "a 2nd comment", "Blank Keyword", 0);
FunParamPuts(ofun, "BPAR", 0, "", "Blank Param", 0);
FunParamPuts(ofun, "BPAR", 1, NULL, "Blank Param", 0);
FunParamPuti(ofun, "IPAR", 0, -100, "INTEGER Param", 0);
FunParamPuti(ofun, "IPAR", 1, -101, "INTEGER Param", 0);
FunParamPutd(ofun, "DPAR", 0, 123456789.9876, 12, "DOUBLE Param", 0);
FunParamPutd(ofun, "DPAR", 1, 123456.780, 4, "DOUBLE Param", 0);
FunParamPuts(ofun, "SPAR", 0, argv[0],
"long comment string that will test column alignment", 0);
FunParamPuts(ofun, "SPAR", 1, argv[1], "STRING Param", 0);
/* write the primary output image */
if( !FunImagePut(ofun, buf1, dim1, dim2, bitpix1, NULL) ){
gerror(stderr, "could not FunImagePut: %s\n", argv[2]);
}
if( doover ){
FunParamPuti(ofun, "IPAR", 1, 101, "OVERWRITTEN INT Param", 0);
FunParamPuts(ofun, "SPAR", 1, argv[0], "OVERWRITTEN STR Param", 0);
}
/* we have to finish the first image if we want to write a second one */
FunFlush(ofun, NULL);
/* write the image extension */
if( doext ){
FunParamPuts(ofun, "", 0, "this is a comment", "Blank Keyword", 0);
FunParamPuts(ofun, " ", 0, "a 2nd comment", "Blank Keyword", 0);
FunParamPuts(ofun, "XBPAR", 0, "", "Blank Param", 0);
FunParamPuts(ofun, "XBPAR", 1, NULL, "Blank Param", 0);
FunParamPuti(ofun, "XIPAR", 0, 100, "INTEGER Param", 0);
FunParamPuti(ofun, "XIPAR", 1, 101, "INTEGER Param", 0);
FunParamPutd(ofun, "XDPAR", 0, -123456789.9876, 12, "DOUBLE Param", 0);
FunParamPutd(ofun, "XDPAR", 1, -123456.780, 4, "DOUBLE Param", 0);
FunParamPuts(ofun, "XSPAR", 0, argv[0],
"long comment string that will test column alignment", 0);
FunParamPuts(ofun, "XSPAR", 1, argv[1], "STRING Param", 0);
if( !FunImagePut(ofun, buf2, dim1, dim2, bitpix2, NULL) ){
gerror(stderr, "could not FunImagePut: %s\n", argv[2]);
}
if( doover ){
FunParamPuti(ofun, "XIPAR", 1, -101, "OVERWRITTEN EXT INT Param", 0);
/* NB: this param does not exist in this header and should be ignored */
FunParamPuts(ofun, "SPAR", 1, argv[0], "OVERWRITTEN EXT STR Param", 0);
}
}
if( ofun ) FunClose(ofun);
return(0);
}
|