s3:net_idmap_delete do not lock two records at the same time
[Samba/gebeck_regimport.git] / lib / ccan / read_write_all / read_write_all.c
blobc66d5215980c9386641f5d053a875587b42ce90f
1 /* Licensed under LGPLv2+ - see LICENSE file for details */
2 #include "read_write_all.h"
3 #include <unistd.h>
4 #include <errno.h>
6 bool write_all(int fd, const void *data, size_t size)
8 while (size) {
9 ssize_t done;
11 done = write(fd, data, size);
12 if (done < 0 && errno == EINTR)
13 continue;
14 if (done <= 0)
15 return false;
16 data = (const char *)data + done;
17 size -= done;
20 return true;
23 bool read_all(int fd, void *data, size_t size)
25 while (size) {
26 ssize_t done;
28 done = read(fd, data, size);
29 if (done < 0 && errno == EINTR)
30 continue;
31 if (done <= 0)
32 return false;
33 data = (char *)data + done;
34 size -= done;
37 return true;