Hi! - small code cleanup and optimization for diskchange(), mediachk(), blk_Media(), bldbpb(), IoctlQueblk() and dskerr().
--- Begin Message ---diff -ruNp old/kernel/dsk.c new/kernel/dsk.c --- old/kernel/dsk.c 2004-06-11 03:15:38.000000000 +0000 +++ new/kernel/dsk.c 2004-06-11 03:25:56.000000000 +0000 @@ -209,8 +209,6 @@ STATIC WORD play_dj(ddt * pddt) STATIC WORD diskchange(ddt * pddt) { - COUNT result; - /* if it's a hard drive, media never changes */ if (hd(pddt->ddt_descflags)) return M_NOT_CHANGED; @@ -220,15 +218,18 @@ STATIC WORD diskchange(ddt * pddt) if (pddt->ddt_descflags & DF_CHANGELINE) /* if we can detect a change ... */ { - if ((result = fl_diskchanged(pddt->ddt_driveno)) == 1) + int ret = fl_diskchanged(pddt->ddt_driveno); + if (ret == 1) /* check if it has changed... */ return M_CHANGED; - else if (result == 0) + if (ret == 0) return M_NOT_CHANGED; } /* can not detect or error... */ - return tdelay(pddt, 37ul) ? M_DONT_KNOW : M_NOT_CHANGED; + if (tdelay(pddt, 37)) + return M_DONT_KNOW; + return M_NOT_CHANGED; } STATIC WORD mediachk(rqptr rp, ddt * pddt) @@ -244,19 +245,15 @@ STATIC WORD mediachk(rqptr rp, ddt * pdd pddt->ddt_descflags &= ~DF_DISKCHANGE; rp->r_mcretcode = M_DONT_KNOW; } - else + else if ((rp->r_mcretcode = diskchange(pddt)) == M_DONT_KNOW) { - rp->r_mcretcode = diskchange(pddt); - if (rp->r_mcretcode == M_DONT_KNOW) - { - /* don't know but can check serial number ... */ - ULONG serialno = pddt->ddt_serialno; - COUNT result = getbpb(pddt); - if (result != 0) - return (result); - if (serialno != pddt->ddt_serialno) - rp->r_mcretcode = M_CHANGED; - } + /* don't know but can check serial number ... */ + ULONG serialno = pddt->ddt_serialno; + int ret = getbpb(pddt); + if (ret) + return ret; + if (serialno != pddt->ddt_serialno) + rp->r_mcretcode = M_CHANGED; } return S_DONE; } @@ -338,8 +335,7 @@ STATIC WORD blk_Media(rqptr rp, ddt * pd if (hd(pddt->ddt_descflags)) return S_BUSY | S_DONE; /* Hard Drive */ - else - return S_DONE; /* Floppy */ + return S_DONE; /* Floppy */ } STATIC WORD getbpb(ddt * pddt) @@ -439,11 +435,9 @@ STATIC WORD getbpb(ddt * pddt) STATIC WORD bldbpb(rqptr rp, ddt * pddt) { - WORD result; - - if ((result = getbpb(pddt)) != 0) - return result; - + int ret = getbpb(pddt); + if (ret) + return ret; rp->r_bpptr = &pddt->ddt_bpb; return S_DONE; } @@ -453,22 +447,14 @@ STATIC WORD IoctlQueblk(rqptr rp, ddt * UNREFERENCED_PARAMETER(pddt); #ifdef WITHFAT32 - if (rp->r_cat == 8 || rp->r_cat == 0x48) + if ((UBYTE)(~0x40 & rp->r_cat) != 8 || /* 0x08,0x48 */ #else - if (rp->r_cat == 8) + if (rp->r_cat != 8 || #endif - { - switch (rp->r_fun) - { - case 0x46: - case 0x47: - case 0x60: - case 0x66: - case 0x67: - return S_DONE; - } - } - return failure(E_CMD); + (rp->r_fun != 0x60 && + (UBYTE)(~0x21 & rp->r_fun) != 0x46)) /* 0x46,0x47,0x66,0x67 */ + return failure(E_CMD); + return S_DONE; } STATIC COUNT Genblockio(ddt * pddt, UWORD mode, WORD head, WORD track, @@ -794,13 +780,9 @@ STATIC WORD dskerr(COUNT code) { case 1: /* invalid command - general failure */ if (code & 0x08) - return S_ERROR | E_NOTRDY; /* failure(E_NOTRDY); at least on yhe INT25 route, - 0x8002 is returned */ - else - return failure(E_CMD); - - case 2: /* address mark not found - general failure */ - return failure(E_FAILURE); + return S_ERROR | E_NOTRDY; /* failure(E_NOTRDY); at least on the + INT25 route, 0x8002 is returned */ + return failure(E_CMD); case 3: /* write protect */ return failure(E_WRPRT); @@ -808,14 +790,15 @@ STATIC WORD dskerr(COUNT code) default: if (code & 0x80) /* time-out */ return failure(E_NOTRDY); - else if (code & 0x40) /* seek error */ + if (code & 0x40) /* seek error */ return failure(E_SEEK); - else if (code & 0x10) /* CRC error */ + if (code & 0x10) /* CRC error */ return failure(E_CRC); - else if (code & 0x04) + if (code & 0x04) return failure(E_NOTFND); - else - return failure(E_FAILURE); + + case 2: /* address mark not found - general failure */ + return failure(E_FAILURE); } }
--- End Message ---
