6 #define JUKEFS "tcp!jukefs" /* dial string for jukebox; was il!jukefs */
63 "pltscale", Ppltscale,
64 "xpixelsz", Pxpixelsz,
65 "ypixelsz", Pypixelsz,
79 char rec[81], name[81], value[81];
86 sprint(rec, "/lib/sky/dssheaders/%s.hhh", rgn);
87 bin = Bopen(rec, OREAD);
90 sprint(rec, "/n/juke/dss/dss.102/headers/%s.hhh", rgn);
91 bin = Bopen(rec, OREAD);
95 sprint(rec, "/n/juke/dss/dss.061/headers/%s.hhh", rgn);
96 bin = Bopen(rec, OREAD);
99 fprint(2, "cannot open %s\n", rgn);
103 Bprint(&bout, "reading %s\n", rec);
105 Bprint(&bout, "warning: reading %s from jukebox\n", rec);
107 memset(&hd, 0, sizeof(hd));
112 if(Bread(bin, rec, 80) != 80)
116 p = Brdline(bin, '\n');
119 p[Blinelen(bin)-1] = 0;
123 p = strchr(rec, '/');
126 p = strchr(rec, '=');
130 if(getword(name, rec) == 0)
132 if(getword(value, p) == 0)
134 if(strcmp(name, "pltdecsn") == 0) {
135 if(strchr(value, '-'))
139 for(i=0; i<nelem(Hproto); i++) {
141 if(j >= nelem(Hproto))
143 if(strcmp(name, Hproto[j].name) == 0) {
144 hd.param[Hproto[j].offset] = atof(value);
151 hd.param[Ppltra] = RAD(hd.param[Ppltrah]*15 +
152 hd.param[Ppltram]/4 + hd.param[Ppltras]/240);
153 hd.param[Ppltdec] = RAD(hd.param[Ppltdecd] +
154 hd.param[Ppltdecm]/60 + hd.param[Ppltdecs]/3600);
156 hd.param[Ppltdec] = -hd.param[Ppltdec];
158 for(i=Pamdx1; i<=Pamdx20; i++)
159 if(hd.param[i] != 0) {
163 h = malloc(sizeof(*h));
177 sprint(rec, "/lib/sky/dssheaders/lo_comp.lis");
178 bin = Bopen(rec, OREAD);
181 sprint(rec, "%s/headers/lo_comp.lis", dssmount(dss));
182 bin = Bopen(rec, OREAD);
186 sprint(rec, "%s/headers/lo_comp.lis", dssmount(dss));
187 bin = Bopen(rec, OREAD);
190 fprint(2, "can't open lo_comp.lis; try 9fs juke\n");
194 Bprint(&bout, "reading %s\n", rec);
196 Bprint(&bout, "warning: reading %s from jukebox\n", rec);
199 if(Bread(bin, rec, 80) != 80)
203 q = Brdline(bin, '\n');
206 q[Blinelen(bin)-1] = 0;
211 if(nplate < nelem(plate)) {
213 memmove(p->rgn, rec+0, 5);
216 for(i=0; c=p->rgn[i]; i++)
217 if(c >= 'A' && c <= 'Z')
218 p->rgn[i] += 'a'-'A';
219 p->ra = RAD(atof(rec+12)*15 +
222 p->dec = RAD(atof(rec+26) +
227 p->disk = atoi(rec+53);
235 if(nplate >= nelem(plate))
236 fprint(2, "nplate too small %d %d\n", nelem(plate), nplate);
238 Bprint(&bout, "%d plates\n", nplate);
246 static int sdiskno = -1;
253 unmount(nil, "/n/njuke");
254 unmount(nil, "/n/dss");
255 sprint(dssname, "/n/njuke/juke/dss/dss.%.3d", dskno);
258 * start nfs jukebox server
260 s1 = open("/srv/" JUKEFS, ORDWR);
263 execl("/bin/srv", "srv", "-q", JUKEFS, nil);
267 s1 = open("/srv/" JUKEFS, ORDWR);
269 Bprint(&bout, "can't open /srv/%s: %r\n", JUKEFS);
275 * mount nfs jukebox server
277 if(mount(s1, -1, "/n/njuke", 0, "") < 0) {
279 Bprint(&bout, "\"mount /srv/%s /n/juke\" failed: %r\n", JUKEFS);
286 s2 = open("/srv/9660", ORDWR);
289 execl("/bin/9660srv", "9660srv", nil);
293 s2 = open("/srv/9660", ORDWR);
295 Bprint(&bout, "can't open /srv/9660: %r\n");
303 if(mount(s2, -1, "/n/dss", 0, dssname) < 0) {
306 // do it again so /n/njuke is in 9660's namespace
308 remove("/srv/" JUKEFS);
312 Bprint(&bout, "\"mount /srv/9660 /n/dss %s\" failed %r\n", dssname);
316 // print("mount %s\n", dssname);