- if ((r = loop_read(random_fd, buf, buf_size, false)) <= 0)
- log_error("Failed to read new seed from /dev/urandom: %s", r < 0 ? strerror(errno) : "EOF");
- else {
- if ((r = loop_write(seed_fd, buf, (size_t) r, false)) <= 0)
- log_error("Failed to write new random seed file: %s", r < 0 ? strerror(errno) : "short write");
+ k = loop_read(random_fd, buf, buf_size, false);
+ if (k <= 0) {
+ log_error("Failed to read new seed from /dev/urandom: %s", r < 0 ? strerror(-r) : "EOF");
+ r = k == 0 ? -EIO : (int) k;
+ } else {
+ r = loop_write(seed_fd, buf, (size_t) k, false);
+ if (r <= 0) {
+ log_error("Failed to write new random seed file: %s", r < 0 ? strerror(-r) : "short write");
+ r = r == 0 ? -EIO : r;
+ }