The branch main has been updated by adrian:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=ee41a882054c0761853971f8742607b3eae06784

commit ee41a882054c0761853971f8742607b3eae06784
Author:     Sulev-Madis Silber <[email protected]>
AuthorDate: 2026-05-29 16:58:50 +0000
Commit:     Adrian Chadd <[email protected]>
CommitDate: 2026-05-29 16:58:50 +0000

    spi: switch to switch
    
    use recommended switch with default case to catch invalid values
    
    Reviewed by:    kevans, adrian
    Differential Revision:  https://reviews.freebsd.org/D54759
---
 usr.sbin/spi/spi.c | 35 +++++++++++++++--------------------
 1 file changed, 15 insertions(+), 20 deletions(-)

diff --git a/usr.sbin/spi/spi.c b/usr.sbin/spi/spi.c
index 1ced2371e3d0..bbbc3d322b00 100644
--- a/usr.sbin/spi/spi.c
+++ b/usr.sbin/spi/spi.c
@@ -30,6 +30,7 @@
 #include <sys/spigenio.h>
 #include <sys/sysctl.h>
 
+#include <assert.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <inttypes.h>
@@ -364,30 +365,24 @@ main(int argc, char *argv[], char *envp[] __unused)
 
        /* do data transfer */
 
-       if (stream) {
-               while (!err && !feof(stdin)) {
-                       if (fdir == DIR_READ) {
-                               err = perform_read(hdev, &opt);
-                       }
-                       else if (fdir == DIR_WRITE) {
-                               err = perform_write(hdev, &opt);
-                       }
-                       else if (fdir == DIR_READWRITE) {
-                               err = perform_readwrite(hdev, &opt);
-                       }
-               }
-       }
-       else {
-               if (fdir == DIR_READ) {
+       assert(fdir != DIR_NONE);
+       do {
+               switch (fdir) {
+               case DIR_READ:
                        err = perform_read(hdev, &opt);
-               }
-               else if (fdir == DIR_WRITE) {
+                       break;
+               case DIR_WRITE:
                        err = perform_write(hdev, &opt);
-               }
-               else if (fdir == DIR_READWRITE) {
+                       break;
+               case DIR_READWRITE:
                        err = perform_readwrite(hdev, &opt);
+                       break;
+               default:
+                       fprintf(stderr, "Invalid state (%d)\n", fdir);
+                       err = EINVAL;
+                       break;
                }
-       }
+       } while (stream && !err && !feof(stdin));
 
 the_end:
 

Reply via email to