Annotation of researchv10dc/cmd/worm/scsi/sony/readid.c, revision 1.1.1.1

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: static int
                      8: my_read(int lun, long blk, struct scsi_return *ret, char *err)
                      9: {
                     10:        struct scsi_cmd cmd;
                     11:        int n;
                     12: 
                     13:        cmd.bus_id = s_id;
                     14:        set10(cmd, 0x28, lun<<5, blk>>24, blk>>16, blk>>8, blk, 0, 0, 1, 0);
                     15:        n = ss_io(0, &cmd, 0, ret, 1024, err);
                     16:        return(n);
                     17: }
                     18: 
                     19: int
                     20: sony_readid(ClientData cd, Tcl_Interp *it, int argc, char **argv)
                     21: {
                     22:        struct scsi_return ret;
                     23:        char buf[128];
                     24:        int drive;
                     25:        long blk, lastb, zero;
                     26:        int pr = 0;
                     27:        int c;
                     28:        extern int optind;
                     29:        extern char *optarg;
                     30: 
                     31:        zero = 0;
                     32:        while((c = getopt(argc, argv, "vz:")) != -1)
                     33:                switch(c)
                     34:                {
                     35:                case 'v':       pr = 1; break;
                     36:                case 'z':       zero = atol(optarg); break;
                     37:                default:        USAGE_RETURN
                     38:                }
                     39:        if(optind >= argc)
                     40:                argv[--optind] = "0";
                     41:        for(; optind < argc; optind++){
                     42:                drive = atoi(argv[optind]);
                     43:                buf[0] = 0;
                     44:                blk = zero;
                     45:                if(blk == 0){
                     46:                        if(my_read(drive, blk, &ret, cd->err) == 0)
                     47:                                goto done;
                     48:                        blk++;
                     49:                }
                     50:                for(lastb = -1;;){
                     51:                        if(pr){
                     52:                                printf("%d: ", blk);
                     53:                                fflush(stdout);
                     54:                        }
                     55:                        if(my_read(drive, blk, &ret, cd->err))
                     56:                                break;
                     57:                        lastb = blk;
                     58:                        blk = ((long *)ret.data)[9];
                     59:                }
                     60:                if(lastb < 0){
                     61:                        printf("read(blk=%d) failed\n", blk);
                     62:                        ERR_RETURN
                     63:                }
                     64:                if(my_read(drive, lastb, &ret, cd->err) != 0)
                     65:                        ERR_RETURN
                     66:        done:
                     67:                strncpy(buf, (char *)&ret.data[42], 128);
                     68:                buf[127] = 0;
                     69:                printf("(%d,%d): '%s'\n", s_id, drive, buf);
                     70:                fflush(stdout);
                     71:        }
                     72:        return(TCL_OK);
                     73: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.