diff options
Diffstat (limited to 'src/nix.cc')
-rw-r--r-- | src/nix.cc | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/src/nix.cc b/src/nix.cc index f5ca0b4d8793..ad4e6a468a0c 100644 --- a/src/nix.cc +++ b/src/nix.cc @@ -215,12 +215,7 @@ struct StdoutSink : DumpSink virtual void operator () (const unsigned char * data, unsigned int len) { - while (len) { - ssize_t res = write(STDOUT_FILENO, (char *) data, len); - if (res == -1) throw SysError("writing to stdout"); - len -= res; - data += res; - } + writeFull(STDOUT_FILENO, data, len); } }; @@ -247,15 +242,9 @@ static void opDump(Strings opFlags, Strings opArgs) /* A source that read restore intput to stdin. */ struct StdinSource : RestoreSource { - virtual void operator () (const unsigned char * data, unsigned int len) + virtual void operator () (unsigned char * data, unsigned int len) { - while (len) { - ssize_t res = read(STDIN_FILENO, (char *) data, len); - if (res == -1) throw SysError("reading from stdin"); - if (res == 0) throw Error("unexpected end-of-file on stdin"); - len -= res; - data += res; - } + readFull(STDIN_FILENO, data, len); } }; |