- if (ndrives == 0) {
- lseek(kmem, (long)nlst[X_DK_MSPW].n_value, L_SET);
- read(kmem, dk_mspw, sizeof (dk_mspw));
- for (i = 0; i < DK_NDRIVE; i++)
- if (dk_mspw[i] != 0.0)
- sprintf(dr_name[i], "dk%d", i), ndrives++;
-#ifdef vax
- read_names(nlst[X_MBDINIT].n_value, nlst[X_UBDINIT].n_value);
-#endif
- }
- if (hz == 0) {
- lseek(kmem, (long)nlst[X_HZ].n_value, L_SET);
- read(kmem, &hz, sizeof hz);
- }
- for (i = 0; i < DK_NDRIVE; i++)
- dk_select[i] = 1;
+ if (! dkinit())
+ return(0);
+ if (dk_ndrive) {
+#define allocate(e, t) \
+ s./**/e = (t *)calloc(dk_ndrive, sizeof (t)); \
+ s1./**/e = (t *)calloc(dk_ndrive, sizeof (t));
+ allocate(dk_time, long);
+ allocate(dk_wds, long);
+ allocate(dk_seek, long);
+ allocate(dk_xfer, long);
+#undef allocate
+ }
+ return(1);