1 8a3b2ceb 2004-04-24 devnull #include <u.h>
2 8a3b2ceb 2004-04-24 devnull #include <libc.h>
3 8a3b2ceb 2004-04-24 devnull #include <bio.h>
4 8a3b2ceb 2004-04-24 devnull #include "sky.h"
8 8a3b2ceb 2004-04-24 devnull char name[9];
9 8a3b2ceb 2004-04-24 devnull char offset;
10 8a3b2ceb 2004-04-24 devnull } Hproto[] =
12 8a3b2ceb 2004-04-24 devnull "ppo1", Pppo1,
13 8a3b2ceb 2004-04-24 devnull "ppo2", Pppo2,
14 8a3b2ceb 2004-04-24 devnull "ppo3", Pppo3,
15 8a3b2ceb 2004-04-24 devnull "ppo4", Pppo4,
16 8a3b2ceb 2004-04-24 devnull "ppo5", Pppo5,
17 8a3b2ceb 2004-04-24 devnull "ppo6", Pppo6,
19 8a3b2ceb 2004-04-24 devnull "amdx1", Pamdx1,
20 8a3b2ceb 2004-04-24 devnull "amdx2", Pamdx2,
21 8a3b2ceb 2004-04-24 devnull "amdx3", Pamdx3,
22 8a3b2ceb 2004-04-24 devnull "amdx4", Pamdx4,
23 8a3b2ceb 2004-04-24 devnull "amdx5", Pamdx5,
24 8a3b2ceb 2004-04-24 devnull "amdx6", Pamdx6,
25 8a3b2ceb 2004-04-24 devnull "amdx7", Pamdx7,
26 8a3b2ceb 2004-04-24 devnull "amdx8", Pamdx8,
27 8a3b2ceb 2004-04-24 devnull "amdx9", Pamdx9,
28 8a3b2ceb 2004-04-24 devnull "amdx10", Pamdx10,
29 8a3b2ceb 2004-04-24 devnull "amdx11", Pamdx11,
30 8a3b2ceb 2004-04-24 devnull "amdx12", Pamdx12,
31 8a3b2ceb 2004-04-24 devnull "amdx13", Pamdx13,
32 8a3b2ceb 2004-04-24 devnull "amdx14", Pamdx14,
33 8a3b2ceb 2004-04-24 devnull "amdx15", Pamdx15,
34 8a3b2ceb 2004-04-24 devnull "amdx16", Pamdx16,
35 8a3b2ceb 2004-04-24 devnull "amdx17", Pamdx17,
36 8a3b2ceb 2004-04-24 devnull "amdx18", Pamdx18,
37 8a3b2ceb 2004-04-24 devnull "amdx19", Pamdx19,
38 8a3b2ceb 2004-04-24 devnull "amdx20", Pamdx20,
40 8a3b2ceb 2004-04-24 devnull "amdy1", Pamdy1,
41 8a3b2ceb 2004-04-24 devnull "amdy2", Pamdy2,
42 8a3b2ceb 2004-04-24 devnull "amdy3", Pamdy3,
43 8a3b2ceb 2004-04-24 devnull "amdy4", Pamdy4,
44 8a3b2ceb 2004-04-24 devnull "amdy5", Pamdy5,
45 8a3b2ceb 2004-04-24 devnull "amdy6", Pamdy6,
46 8a3b2ceb 2004-04-24 devnull "amdy7", Pamdy7,
47 8a3b2ceb 2004-04-24 devnull "amdy8", Pamdy8,
48 8a3b2ceb 2004-04-24 devnull "amdy9", Pamdy9,
49 8a3b2ceb 2004-04-24 devnull "amdy10", Pamdy10,
50 8a3b2ceb 2004-04-24 devnull "amdy11", Pamdy11,
51 8a3b2ceb 2004-04-24 devnull "amdy12", Pamdy12,
52 8a3b2ceb 2004-04-24 devnull "amdy13", Pamdy13,
53 8a3b2ceb 2004-04-24 devnull "amdy14", Pamdy14,
54 8a3b2ceb 2004-04-24 devnull "amdy15", Pamdy15,
55 8a3b2ceb 2004-04-24 devnull "amdy16", Pamdy16,
56 8a3b2ceb 2004-04-24 devnull "amdy17", Pamdy17,
57 8a3b2ceb 2004-04-24 devnull "amdy18", Pamdy18,
58 8a3b2ceb 2004-04-24 devnull "amdy19", Pamdy19,
59 8a3b2ceb 2004-04-24 devnull "amdy20", Pamdy20,
61 8a3b2ceb 2004-04-24 devnull "pltscale", Ppltscale,
62 8a3b2ceb 2004-04-24 devnull "xpixelsz", Pxpixelsz,
63 8a3b2ceb 2004-04-24 devnull "ypixelsz", Pypixelsz,
65 8a3b2ceb 2004-04-24 devnull "pltrah", Ppltrah,
66 8a3b2ceb 2004-04-24 devnull "pltram", Ppltram,
67 8a3b2ceb 2004-04-24 devnull "pltras", Ppltras,
68 8a3b2ceb 2004-04-24 devnull "pltdecd", Ppltdecd,
69 8a3b2ceb 2004-04-24 devnull "pltdecm", Ppltdecm,
70 8a3b2ceb 2004-04-24 devnull "pltdecs", Ppltdecs,
75 8a3b2ceb 2004-04-24 devnull getheader(char *rgn)
77 8a3b2ceb 2004-04-24 devnull char rec[81], name[81], value[81];
79 8a3b2ceb 2004-04-24 devnull Biobuf *bin;
80 8a3b2ceb 2004-04-24 devnull Header hd, *h;
81 8a3b2ceb 2004-04-24 devnull int i, j, decsn, dss;
84 8a3b2ceb 2004-04-24 devnull sprint(rec, "/lib/sky/dssheaders/%s.hhh", rgn);
85 8a3b2ceb 2004-04-24 devnull bin = Bopen(unsharp(rec), OREAD);
87 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
88 8a3b2ceb 2004-04-24 devnull dss = 102;
89 8a3b2ceb 2004-04-24 devnull sprint(rec, "/n/juke/dss/dss.102/headers/%s.hhh", rgn);
90 8a3b2ceb 2004-04-24 devnull bin = Bopen(rec, OREAD);
92 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
93 8a3b2ceb 2004-04-24 devnull dss = 61;
94 8a3b2ceb 2004-04-24 devnull sprint(rec, "/n/juke/dss/dss.061/headers/%s.hhh", rgn);
95 8a3b2ceb 2004-04-24 devnull bin = Bopen(rec, OREAD);
98 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
99 8a3b2ceb 2004-04-24 devnull fprint(2, "cannot open %s\n", rgn);
100 8a3b2ceb 2004-04-24 devnull exits("file");
102 8a3b2ceb 2004-04-24 devnull if(debug)
103 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "reading %s\n", rec);
105 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "warning: reading %s from jukebox\n", rec);
107 8a3b2ceb 2004-04-24 devnull memset(&hd, 0, sizeof(hd));
109 8a3b2ceb 2004-04-24 devnull decsn = 0;
110 8a3b2ceb 2004-04-24 devnull for(;;) {
111 8a3b2ceb 2004-04-24 devnull if(dss) {
112 8a3b2ceb 2004-04-24 devnull if(Bread(bin, rec, 80) != 80)
114 8a3b2ceb 2004-04-24 devnull rec[80] = 0;
115 8a3b2ceb 2004-04-24 devnull } else {
116 8a3b2ceb 2004-04-24 devnull p = Brdline(bin, '\n');
117 8a3b2ceb 2004-04-24 devnull if(p == 0)
119 8a3b2ceb 2004-04-24 devnull p[Blinelen(bin)-1] = 0;
120 8a3b2ceb 2004-04-24 devnull strcpy(rec, p);
123 8a3b2ceb 2004-04-24 devnull p = strchr(rec, '/');
126 8a3b2ceb 2004-04-24 devnull p = strchr(rec, '=');
127 8a3b2ceb 2004-04-24 devnull if(p == 0)
128 8a3b2ceb 2004-04-24 devnull continue;
129 8a3b2ceb 2004-04-24 devnull *p++ = 0;
130 8a3b2ceb 2004-04-24 devnull if(getword(name, rec) == 0)
131 8a3b2ceb 2004-04-24 devnull continue;
132 8a3b2ceb 2004-04-24 devnull if(getword(value, p) == 0)
133 8a3b2ceb 2004-04-24 devnull continue;
134 8a3b2ceb 2004-04-24 devnull if(strcmp(name, "pltdecsn") == 0) {
135 8a3b2ceb 2004-04-24 devnull if(strchr(value, '-'))
136 8a3b2ceb 2004-04-24 devnull decsn = 1;
137 8a3b2ceb 2004-04-24 devnull continue;
139 8a3b2ceb 2004-04-24 devnull for(i=0; i<nelem(Hproto); i++) {
141 8a3b2ceb 2004-04-24 devnull if(j >= nelem(Hproto))
143 8a3b2ceb 2004-04-24 devnull if(strcmp(name, Hproto[j].name) == 0) {
144 8a3b2ceb 2004-04-24 devnull hd.param[(uchar)Hproto[j].offset] = atof(value);
149 8a3b2ceb 2004-04-24 devnull Bterm(bin);
151 8a3b2ceb 2004-04-24 devnull hd.param[Ppltra] = RAD(hd.param[Ppltrah]*15 +
152 8a3b2ceb 2004-04-24 devnull hd.param[Ppltram]/4 + hd.param[Ppltras]/240);
153 8a3b2ceb 2004-04-24 devnull hd.param[Ppltdec] = RAD(hd.param[Ppltdecd] +
154 8a3b2ceb 2004-04-24 devnull hd.param[Ppltdecm]/60 + hd.param[Ppltdecs]/3600);
155 8a3b2ceb 2004-04-24 devnull if(decsn)
156 8a3b2ceb 2004-04-24 devnull hd.param[Ppltdec] = -hd.param[Ppltdec];
157 8a3b2ceb 2004-04-24 devnull hd.amdflag = 0;
158 8a3b2ceb 2004-04-24 devnull for(i=Pamdx1; i<=Pamdx20; i++)
159 8a3b2ceb 2004-04-24 devnull if(hd.param[i] != 0) {
160 8a3b2ceb 2004-04-24 devnull hd.amdflag = 1;
163 8a3b2ceb 2004-04-24 devnull h = malloc(sizeof(*h));
164 8a3b2ceb 2004-04-24 devnull *h = hd;
165 8a3b2ceb 2004-04-24 devnull return h;
169 8a3b2ceb 2004-04-24 devnull getplates(void)
171 8a3b2ceb 2004-04-24 devnull char rec[81], *q;
172 8a3b2ceb 2004-04-24 devnull Plate *p;
173 8a3b2ceb 2004-04-24 devnull Biobuf *bin;
174 8a3b2ceb 2004-04-24 devnull int c, i, dss;
176 8a3b2ceb 2004-04-24 devnull dss = 0;
177 8a3b2ceb 2004-04-24 devnull sprint(rec, "/lib/sky/dssheaders/lo_comp.lis");
178 8a3b2ceb 2004-04-24 devnull bin = Bopen(rec, OREAD);
179 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
180 8a3b2ceb 2004-04-24 devnull dss = 102;
181 8a3b2ceb 2004-04-24 devnull sprint(rec, "%s/headers/lo_comp.lis", dssmount(dss));
182 8a3b2ceb 2004-04-24 devnull bin = Bopen(rec, OREAD);
184 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
185 8a3b2ceb 2004-04-24 devnull dss = 61;
186 8a3b2ceb 2004-04-24 devnull sprint(rec, "%s/headers/lo_comp.lis", dssmount(dss));
187 8a3b2ceb 2004-04-24 devnull bin = Bopen(rec, OREAD);
189 8a3b2ceb 2004-04-24 devnull if(bin == 0) {
190 8a3b2ceb 2004-04-24 devnull fprint(2, "can't open lo_comp.lis; try 9fs juke\n");
191 8a3b2ceb 2004-04-24 devnull exits("open");
193 8a3b2ceb 2004-04-24 devnull if(debug)
194 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "reading %s\n", rec);
196 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "warning: reading %s from jukebox\n", rec);
197 8a3b2ceb 2004-04-24 devnull for(nplate=0;;) {
198 8a3b2ceb 2004-04-24 devnull if(dss) {
199 8a3b2ceb 2004-04-24 devnull if(Bread(bin, rec, 80) != 80)
201 8a3b2ceb 2004-04-24 devnull rec[80] = 0;
202 8a3b2ceb 2004-04-24 devnull } else {
203 8a3b2ceb 2004-04-24 devnull q = Brdline(bin, '\n');
204 8a3b2ceb 2004-04-24 devnull if(q == 0)
206 8a3b2ceb 2004-04-24 devnull q[Blinelen(bin)-1] = 0;
207 8a3b2ceb 2004-04-24 devnull strcpy(rec, q);
209 8a3b2ceb 2004-04-24 devnull if(rec[0] == '#')
210 8a3b2ceb 2004-04-24 devnull continue;
211 8a3b2ceb 2004-04-24 devnull if(nplate < nelem(plate)) {
212 8a3b2ceb 2004-04-24 devnull p = &plate[nplate];
213 8a3b2ceb 2004-04-24 devnull memmove(p->rgn, rec+0, 5);
214 8a3b2ceb 2004-04-24 devnull if(p->rgn[4] == ' ')
215 8a3b2ceb 2004-04-24 devnull p->rgn[4] = 0;
216 8a3b2ceb 2004-04-24 devnull for(i=0; c=p->rgn[i]; i++)
217 8a3b2ceb 2004-04-24 devnull if(c >= 'A' && c <= 'Z')
218 8a3b2ceb 2004-04-24 devnull p->rgn[i] += 'a'-'A';
219 8a3b2ceb 2004-04-24 devnull p->ra = RAD(atof(rec+12)*15 +
220 8a3b2ceb 2004-04-24 devnull atof(rec+15)/4 +
221 8a3b2ceb 2004-04-24 devnull atof(rec+18)/240);
222 8a3b2ceb 2004-04-24 devnull p->dec = RAD(atof(rec+26) +
223 8a3b2ceb 2004-04-24 devnull atof(rec+29)/60 +
224 8a3b2ceb 2004-04-24 devnull atof(rec+32)/3600);
225 8a3b2ceb 2004-04-24 devnull if(rec[25] == '-')
226 8a3b2ceb 2004-04-24 devnull p->dec = -p->dec;
227 8a3b2ceb 2004-04-24 devnull p->disk = atoi(rec+53);
228 8a3b2ceb 2004-04-24 devnull if(p->disk == 0)
229 8a3b2ceb 2004-04-24 devnull continue;
231 8a3b2ceb 2004-04-24 devnull nplate++;
233 8a3b2ceb 2004-04-24 devnull Bterm(bin);
235 8a3b2ceb 2004-04-24 devnull if(nplate >= nelem(plate))
236 8a3b2ceb 2004-04-24 devnull fprint(2, "nplate too small %d %d\n", nelem(plate), nplate);
237 8a3b2ceb 2004-04-24 devnull if(debug)
238 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "%d plates\n", nplate);
242 8a3b2ceb 2004-04-24 devnull dssmount(int dskno)
244 8a3b2ceb 2004-04-24 devnull Bprint(&bout, "not mounting dss\n");
245 8a3b2ceb 2004-04-24 devnull return "/n/dss";