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 ---

Reply via email to