|
|
1.1 ! root 1: #include "scsi.h" ! 2: ! 3: s_inquiry(id, drive) ! 4: { ! 5: struct scsi_i input; ! 6: struct scsi_o output; ! 7: ! 8: if(id >= 0) ! 9: input.bus_id = 1<<id; ! 10: else ! 11: input.bus_id = id; ! 12: input.cmd[0] = 0x12; ! 13: input.cmd[1] = drive<<5; ! 14: input.cmd[2] = 0; ! 15: input.cmd[3] = 0; ! 16: input.cmd[4] = 36; ! 17: input.cmd[5] = 0; ! 18: if(scsiio(&input, &output, 36, "inquiry") < 0) ! 19: return(1); ! 20: Fprint(1, "drive %d,%d: %s device, '%0.28s'\n", id, drive, ! 21: (output.data[0] == 0x4)? "WORM":"Unknown", &output.data[8]); ! 22: if(output.data[5]&0x80) ! 23: Fprint(1, "\tpower off (0x%x)\n", output.data[5]&0xFF); ! 24: else ! 25: Fprint(1, "\t%s,%s,%s,%s,%s (0x%x)\n", ! 26: (output.data[5]&0x40)?"no disk":"disk", ! 27: (output.data[5]&0x08)?"write protect":"writable", ! 28: (output.data[5]&0x04)?"no alternate":"", ! 29: (output.data[5]&0x02)?"drive error":"", ! 30: (output.data[5]&0x01)?"ready":"not ready", ! 31: output.data[5]&0xFF); ! 32: return(0); ! 33: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.