Index: usr.sbin/spi/spi.c =================================================================== --- usr.sbin/spi/spi.c +++ usr.sbin/spi/spi.c @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -364,30 +365,15 @@ /* 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 { + if (fdir == DIR_READ) err = perform_read(hdev, &opt); - } - else if (fdir == DIR_WRITE) { + else if (fdir == DIR_WRITE) err = perform_write(hdev, &opt); - } - else if (fdir == DIR_READWRITE) { + else if (fdir == DIR_READWRITE) err = perform_readwrite(hdev, &opt); - } - } + } while (stream && !err && !feof(stdin)); the_end: