-/* Even on files, we can get partial writes due to signals. */
-bool tdb_pwrite_all(int fd, const void *buf, size_t len, tdb_off_t off)
-{
- while (len) {
- ssize_t ret;
- ret = pwrite(fd, buf, len, off);
- if (ret < 0)
- return false;
- if (ret == 0) {
- errno = ENOSPC;
- return false;
- }
- buf = (char *)buf + ret;
- off += ret;
- len -= ret;
- }
- return true;
-}
-
-/* Even on files, we can get partial reads due to signals. */
-bool tdb_pread_all(int fd, void *buf, size_t len, tdb_off_t off)
-{
- while (len) {
- ssize_t ret;
- ret = pread(fd, buf, len, off);
- if (ret < 0)
- return false;
- if (ret == 0) {
- /* ETOOSHORT? */
- errno = EWOULDBLOCK;
- return false;
- }
- buf = (char *)buf + ret;
- off += ret;
- len -= ret;
- }
- return true;
-}
-
-bool tdb_read_all(int fd, void *buf, size_t len)
-{
- while (len) {
- ssize_t ret;
- ret = read(fd, buf, len);
- if (ret < 0)
- return false;
- if (ret == 0) {
- /* ETOOSHORT? */
- errno = EWOULDBLOCK;
- return false;
- }
- buf = (char *)buf + ret;
- len -= ret;
- }
- return true;
-}
-