Annotation of researchv10dc/cmd/worm/oscsi/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       "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: }

unix.superglobalmegacorp.com

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