aboutsummaryrefslogtreecommitdiffstats
path: root/src/util.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2017-01-12 11:27:40 +0100
committerMattias Andrée <maandree@kth.se>2017-01-12 11:27:40 +0100
commitbc7830ba80267a4a228ed1de62e0f65045b3d174 (patch)
tree31a8844a209b5fa0cfdaa84e20a2ec16bb99a3b4 /src/util.c
parentvu-from-image: fix sRGB to CIE XYZ conversion: deapply transfer function (diff)
downloadblind-bc7830ba80267a4a228ed1de62e0f65045b3d174.tar.gz
blind-bc7830ba80267a4a228ed1de62e0f65045b3d174.tar.bz2
blind-bc7830ba80267a4a228ed1de62e0f65045b3d174.tar.xz
Fix and improve vu-from-image
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/util.c')
-rw-r--r--src/util.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/util.c b/src/util.c
index 4654789..299dee8 100644
--- a/src/util.c
+++ b/src/util.c
@@ -112,18 +112,34 @@ int
writeall(int fd, void *buf, size_t n)
{
char *buffer = buf;
- size_t ptr = 0;
ssize_t r;
- while (ptr < n) {
+ while (n) {
r = write(fd, buffer, n);
if (r < 0)
return -1;
- buffer += (size_t)ptr;
- n -= (size_t)ptr;
+ buffer += (size_t)r;
+ n -= (size_t)r;
}
return 0;
}
+ssize_t
+readall(int fd, void *buf, size_t n)
+{
+ char *buffer = buf;
+ size_t ptr = 0;
+ ssize_t r;
+ for (;;) {
+ r = read(fd, buffer + ptr, n - ptr);
+ if (r < 0)
+ return -1;
+ if (r == 0)
+ break;
+ r += (size_t)r;
+ }
+ return r;
+}
+
static inline pid_t
enfork(int status)