Annotation of researchv10dc/cmd/oworm/scsi/search.c, revision 1.1.1.1

1.1       root        1: #include       "scsi.h"
                      2: 
                      3: static
                      4: srch(drive, blk, nblk, blank)
                      5: {
                      6:        struct scsi_i input;
                      7:        struct scsi_o output;
                      8:        int addr;
                      9: 
                     10:        input.bus_id = scsi_id;
                     11:        input.cmd[0] = blank? 0x2C:0x2D;
                     12:        input.cmd[1] = drive<<5;
                     13:        input.cmd[2] = blk>>24;
                     14:        input.cmd[3] = blk>>16;
                     15:        input.cmd[4] = blk>>8;
                     16:        input.cmd[5] = blk;
                     17:        input.cmd[6] = 0;
                     18:        input.cmd[7] = 0;
                     19:        input.cmd[8] = 0;
                     20:        input.cmd[9] = 0;
                     21:        if(scsiio(&input, 0, &output, 6, "?search") < 0)
                     22:                return(-1);
                     23:        if(CHECK(output)){
                     24:                prcheck(1, &output);
                     25:                return(-1);
                     26:        }
                     27:        if(output.data[0] != 0x80){
                     28:                fprint(2, "%csearch error: ad %sval, class=0x%x code=0x%x\n",
                     29:                        blank?'b':'w', (output.data[0]&0x80)?"":"in",
                     30:                        (output.data[0]>>4)&7, output.data[0]&0xF);
                     31:                return(-1);
                     32:        }
                     33:        addr = ULONG((&output.data[2]))-blk;
                     34:        if(output.data[1]&0x01)
                     35:                if(addr < nblk)
                     36:                        return(addr);
                     37:        return(nblk);
                     38: }
                     39: 
                     40: s_bsearch(drive, base, nblk)
                     41: {
                     42:        return(srch(drive, base, nblk, 1));
                     43: }
                     44: 
                     45: s_wsearch(drive, base, nblk)
                     46: {
                     47:        return(srch(drive, base, nblk, 0));
                     48: }

unix.superglobalmegacorp.com

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