diff options
| author | Leah Rowe <leah@libreboot.org> | 2026-03-14 00:40:00 +0000 |
|---|---|---|
| committer | Leah Rowe <leah@libreboot.org> | 2026-03-26 06:59:41 +0000 |
| commit | 4a5a3bae457798752f4ea016d71c8f4857c138d7 (patch) | |
| tree | e1a32f890f67db218ff52a9d2baa363281cdf8f2 /util/nvmutil | |
| parent | fe959f9fb86af1c54cd0d111ead67b3f80ce9682 (diff) | |
util/nvmutil: tidy up prw()
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'util/nvmutil')
| -rw-r--r-- | util/nvmutil/nvmutil.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index 62c5ee2a..85b6d4ed 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -1681,7 +1681,7 @@ prw(int fd, void *mem, size_t nrw, ssize_t r; int saved_errno; int flags; - int positional_rw = 0; + int positional_rw; if (mem == NULL) goto err_prw; @@ -1695,16 +1695,19 @@ prw(int fd, void *mem, size_t nrw, r = -1; -try_rw_again: - - if (rw_type == IO_WRITE) - r = write(fd, mem, nrw); - else if (rw_type == IO_READ) - r = read(fd, mem, nrw); + if (rw_type >= IO_PREAD) + positional_rw = 1; /* pread/pwrite */ else - positional_rw = 1; + positional_rw = 0; /* read/write */ + +try_rw_again: if (!positional_rw) { + if (rw_type == IO_WRITE) + r = write(fd, mem, nrw); + else if (rw_type == IO_READ) + r = read(fd, mem, nrw); + if (r == -1 && (errno == EINTR || errno == err_eagain(loop_eagain))) goto try_rw_again; |
