+ lseek(mf, (long)nl[X_HZ].n_value, L_SET);
+ read(mf, &hz, sizeof hz);
+ lseek(mf, (long)nl[X_PHZ].n_value, L_SET);
+ read(mf, &phz, sizeof phz);
+ if (phz)
+ hz = phz;
+ lseek(mf, (long)nl[X_DK_MSPW].n_value, L_SET);
+ read(mf, dk_mspw, dk_ndrive*sizeof (dk_mspw));
+ /*
+ * Choose drives to be displayed. Priority
+ * goes to (in order) drives supplied as arguments,
+ * default drives. If everything isn't filled
+ * in and there are drives not taken care of,
+ * display the first few that fit.
+ */
+ ndrives = 0;
+ while (argc > 0 && !isdigit(argv[0][0])) {
+ for (i = 0; i < dk_ndrive; i++) {
+ if (strcmp(dr_name[i], argv[0]))
+ continue;
+ dr_select[i] = 1;
+ ndrives++;
+ }
+ argc--, argv++;
+ }
+ for (i = 0; i < dk_ndrive && ndrives < 4; i++) {
+ if (dr_select[i] || dk_mspw[i] == 0.0)
+ continue;
+ for (cp = defdrives; *cp; cp++)
+ if (strcmp(dr_name[i], *cp) == 0) {
+ dr_select[i] = 1;
+ ndrives++;
+ break;
+ }
+ }
+ for (i = 0; i < dk_ndrive && ndrives < 4; i++) {
+ if (dr_select[i])
+ continue;
+ dr_select[i] = 1;
+ ndrives++;
+ }
+ if (argc > 1)
+ iter = atoi(argv[1]);
+ signal(SIGCONT, printhdr);