#include "common.hh" #include "io.hh" #include #include namespace io { bool read_all(int fd, std::string* out) { char buf[32768]; while (true) { auto ret = read(fd, buf, sizeof(buf)); if (ret == 0) return true; if (ret < 0) { if (errno == EINTR) continue; return false; } out->append(buf, ret); } } bool write_all(int fd, std::string const& in) { size_t offset = 0; while (offset < in.size()) { auto ret = write(fd, in.data() + offset, in.size() - offset); if (ret == 0) return false; if (ret < 0) { if (errno == EINTR) continue; return false; } offset += ret; } return true; } } // namespace io