|
|
1.1 ! root 1: #include "scsi.h" ! 2: ! 3: static ! 4: table(drive, tab, data) ! 5: unsigned char *data; ! 6: { ! 7: int n, i; ! 8: ! 9: n = data[6]; ! 10: Fprint(1, "drive %d: alternate table %d (%d entries)\n", drive, tab, n); ! 11: for(data += 0x18, i = 0; i < n; data += 4, i++) ! 12: Fprint(1, "%lud%c", data[0]+256L*data[1]+256L*256*data[2], ! 13: (i%10 == 9)? '\n':' '); ! 14: if((i%10) && n) ! 15: Fputc(1, '\n'); ! 16: } ! 17: ! 18: s_alternate(drive) ! 19: { ! 20: struct scsi_i input; ! 21: struct scsi_o output; ! 22: int i; ! 23: ! 24: input.bus_id = scsi_id; ! 25: input.cmd[0] = 0xC3; ! 26: input.cmd[1] = drive<<5; ! 27: input.cmd[2] = 0; ! 28: input.cmd[3] = 0; ! 29: input.cmd[4] = 0; ! 30: input.cmd[5] = 0; ! 31: if(scsiio(&input, 0, &output, 4096, "alternate") < 0) ! 32: return(1); ! 33: if(CHECK(output)){ ! 34: prcheck(1, &output); ! 35: return(1); ! 36: } else { ! 37: for(i = 0; i < 4; i++) ! 38: table(drive, i+1, &output.data[i*1024]); ! 39: return(0); ! 40: } ! 41: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.