|
|
1.1 root 1: #include <stdio.h>
2: #include "../scsi.h"
3: #include "../scsish.h"
4: #include "../tcl.h"
5: #include "fns.h"
6:
7: extern char *gen_rmb[2];
8: extern char *gen_devtype[256];
9:
10: int
11: gen_display(ClientData cd, Tcl_Interp *it, int argc, char **argv)
12: {
13: struct scsi_cmd cmd;
14: struct scsi_return ret;
15: int n, i, old_id;
16: int retv = TCL_OK;
17: char rev[100], vendor[100], product[100];
18:
19: #pragma ref argc
20: #pragma ref argv
21:
22: old_id = s_id;
23: for(s_id = 0; s_id < 8; s_id++){
24: printf("target %d:\n");
25: set6(cmd, 0x00, 0, 0, 0, 0, 0);
26: if(s_io(0, &cmd, 0, &ret, 0, cd->err))
27: continue;
28: printf("responded to test unit ready\n");
29: continue;
30: for(i = 0; i < 8; i++){
31: set6(cmd, 0x12, i<<5, 0, 0, 36, 0);
32: if(s_io(0, &cmd, 0, &ret, -36, cd->err)){
33: it->result = cd->err;
34: retv = TCL_ERROR;
35: break;
36: }
37: if(ret.nread >= 16)
38: fixedstr(&ret.data[8], 8, vendor);
39: else
40: sprintf(vendor, "??");
41: if(ret.nread >= 32)
42: fixedstr(&ret.data[16], 16, product);
43: else
44: sprintf(product, "??");
45: if(ret.nread >= 16)
46: fixedstr(&ret.data[32], 4, rev);
47: else
48: sprintf(vendor, "??");
49: printf("\tlun(%d): %s %s, %s/%s rev=%s\n", i,
50: gen_rmb[ret.data[1]>>7], gen_devtype[ret.data[0]],
51: vendor, product, rev);
52: }
53: }
54: s_id = old_id;
55: return(retv);
56: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.