mirror of
https://github.com/systemd/systemd.git
synced 2025-03-08 08:58:27 +03:00
util: minor simplification for loop_write() and loop_read()
This commit is contained in:
parent
0c3c42847d
commit
6ce830fa61
@ -2268,21 +2268,25 @@ ssize_t loop_read(int fd, void *buf, size_t nbytes, bool do_poll) {
|
||||
ssize_t k;
|
||||
|
||||
k = read(fd, p, nbytes);
|
||||
if (k < 0 && errno == EINTR)
|
||||
continue;
|
||||
if (k < 0) {
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
|
||||
if (k < 0 && errno == EAGAIN && do_poll) {
|
||||
if (errno == EAGAIN && do_poll) {
|
||||
|
||||
/* We knowingly ignore any return value here,
|
||||
* and expect that any error/EOF is reported
|
||||
* via read() */
|
||||
/* We knowingly ignore any return value here,
|
||||
* and expect that any error/EOF is reported
|
||||
* via read() */
|
||||
|
||||
fd_wait_for_event(fd, POLLIN, USEC_INFINITY);
|
||||
continue;
|
||||
fd_wait_for_event(fd, POLLIN, USEC_INFINITY);
|
||||
continue;
|
||||
}
|
||||
|
||||
return n > 0 ? n : -errno;
|
||||
}
|
||||
|
||||
if (k <= 0)
|
||||
return n > 0 ? n : (k < 0 ? -errno : 0);
|
||||
if (k == 0)
|
||||
return n;
|
||||
|
||||
p += k;
|
||||
nbytes -= k;
|
||||
@ -2294,7 +2298,6 @@ ssize_t loop_read(int fd, void *buf, size_t nbytes, bool do_poll) {
|
||||
|
||||
int loop_write(int fd, const void *buf, size_t nbytes, bool do_poll) {
|
||||
const uint8_t *p = buf;
|
||||
ssize_t n = 0;
|
||||
|
||||
assert(fd >= 0);
|
||||
assert(buf);
|
||||
@ -2305,26 +2308,27 @@ int loop_write(int fd, const void *buf, size_t nbytes, bool do_poll) {
|
||||
ssize_t k;
|
||||
|
||||
k = write(fd, p, nbytes);
|
||||
if (k < 0 && errno == EINTR)
|
||||
continue;
|
||||
if (k < 0) {
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
|
||||
if (k < 0 && errno == EAGAIN && do_poll) {
|
||||
if (errno == EAGAIN && do_poll) {
|
||||
/* We knowingly ignore any return value here,
|
||||
* and expect that any error/EOF is reported
|
||||
* via write() */
|
||||
|
||||
/* We knowingly ignore any return value here,
|
||||
* and expect that any error/EOF is reported
|
||||
* via write() */
|
||||
fd_wait_for_event(fd, POLLOUT, USEC_INFINITY);
|
||||
continue;
|
||||
}
|
||||
|
||||
fd_wait_for_event(fd, POLLOUT, USEC_INFINITY);
|
||||
continue;
|
||||
return -errno;
|
||||
}
|
||||
|
||||
if (k <= 0)
|
||||
/* We were not done yet, and a write error occured. */
|
||||
return errno ? -errno : -EIO;
|
||||
if (k == 0) /* Can't really happen */
|
||||
return -EIO;
|
||||
|
||||
p += k;
|
||||
nbytes -= k;
|
||||
n += k;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user