|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include "../scsi.h" ! 3: #include "../scsish.h" ! 4: #include "fns.h" ! 5: ! 6: static int ! 7: my_read(int lun, long blk, struct scsi_return *ret, char *err) ! 8: { ! 9: struct scsi_cmd cmd; ! 10: int n; ! 11: ! 12: cmd.bus_id = s_id; ! 13: set10(cmd, 0x28, lun<<5, blk>>24, blk>>16, blk>>8, blk, 0, 0, 1, 0); ! 14: n = ss_io(0, &cmd, 0, ret, 1024, err); ! 15: return(n); ! 16: } ! 17: ! 18: int ! 19: sony_readid(int niargs, int *iargs, int ncargs, char **cargs, char *err) ! 20: { ! 21: struct scsi_return ret; ! 22: char buf[128]; ! 23: int drive = iargs[0]; ! 24: long blk, lastb; ! 25: int pr = 0; ! 26: ! 27: #pragma ref ncargs ! 28: #pragma ref cargs ! 29: ! 30: buf[0] = 0; ! 31: if(niargs == 2){ ! 32: if((blk = iargs[1]) < 0){ ! 33: blk = -blk; ! 34: pr = 1; ! 35: } ! 36: } else { ! 37: if(my_read(drive, 0L, &ret, err) == 0) ! 38: goto done; ! 39: blk = 1; ! 40: } ! 41: for(lastb = -1;;){ ! 42: if(pr){ ! 43: printf("%d: ", blk); ! 44: } ! 45: if(my_read(drive, blk, &ret, err)) ! 46: break; ! 47: lastb = blk; ! 48: blk = ((long *)ret.data)[9]; ! 49: } ! 50: if(lastb < 0){ ! 51: printf("read(blk=%d) failed\n", blk); ! 52: return(1); ! 53: } ! 54: if(my_read(drive, lastb, &ret, err) != 0) ! 55: return(1); ! 56: done: ! 57: strncpy(buf, (char *)&ret.data[42], 128); ! 58: buf[127] = 0; ! 59: printf("(%d,%d): '%s'\n", s_id, drive, buf); ! 60: return(0); ! 61: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.