# HG changeset patch
# User jfp <jf.pieronne@laposte.net>
# Date 1675351569 -3600
#      Thu Feb 02 16:26:09 2023 +0100
# Node ID 844e1bd3c32874e46c5c2e21b7957334eea3e2ba
# Parent  a859d12265019f7826b512420cb53b92d3391019
rule02: make code simple to read
rule04: starlet.device_scan always returns 4 values

diff --git a/secrules/rules02.py b/secrules/rules02.py
--- a/secrules/rules02.py
+++ b/secrules/rules02.py
@@ -46,7 +46,10 @@
                 )[2][
                     ossdef.OSS__PROTECTION
                 ]  # type:ignore
-                if not ((sec & 0x8000) and (sec & 0x2000)):
+                wprot = (sec & 0xF000) >> 12
+                wbit = 0x2
+                dbit = 0x8
+                if wprot & wbit == 0 or wprot & dbit == 0:
                     if fmt:
                         print('0201"2"', fn, file=fo)
                     else:
@@ -90,7 +93,10 @@
             )[2][
                 ossdef.OSS__PROTECTION
             ]  # type:ignore
-            if not ((sec & 0x800) and (sec & 0x200)):
+            gprot = (sec & 0x0F00) >> 8
+            wbit = 0x2
+            dbit = 0x8
+            if gprot & wbit == 0 or gprot & dbit == 0:
                 if fmt:
                     print('0202"3"', fn.decode(), file=fo)   # type:ignore
                 else:
diff --git a/secrules/rules04.py b/secrules/rules04.py
--- a/secrules/rules04.py
+++ b/secrules/rules04.py
@@ -103,7 +103,7 @@
 
     while True:
         try:
-            sts, device, devCtx = starlet.device_scan(b'*', devItm, devCtx)
+            sts, device, devCtx, d = starlet.device_scan(b'*', devItm, devCtx)
         except:
             break
         if not lib.getdvi(dvidef.DVI__MNT, device_name=device)[1]:
@@ -138,13 +138,13 @@
                         print(fn.decode(), prot.decode(), file=fo)
 
     devCtx = 0
-    devItm = [
+    devItm = (
         itemList.itemList(code=dvsdef.DVS__DEVCLASS, value=dcdef.DC__DISK),
-    ]
+    )
 
     while True:
         try:
-            sts, device, devCtx = starlet.device_scan(b'*', devItm, devCtx)
+            sts, device, devCtx, d = starlet.device_scan(b'*', devItm, devCtx)
         except:
             break
         if not lib.getdvi(dvidef.DVI__MNT, device_name=device)[1]:
@@ -307,7 +307,7 @@
 
     while True:
         try:
-            sts, device, devCtx = starlet.device_scan(b'*', devItm, devCtx)
+            sts, device, devCtx, d = starlet.device_scan(b'*', devItm, devCtx)
         except:
             break
         if not lib.getdvi(dvidef.DVI__MNT, device_name=device)[1]: