aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSulev-Madis Silber <ketas@si.pri.ee>2026-05-29 16:58:50 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2026-05-29 16:58:50 +0000
commitee41a882054c0761853971f8742607b3eae06784 (patch)
tree62e85916c5f2a14dabf8eb8c5493d312e28ac884
parentaa029088ec130d71b406c4118346fbd933940826 (diff)
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
-rw-r--r--usr.sbin/spi/spi.c35
1 files 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: