aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/file-descriptor.cc
diff options
context:
space:
mode:
authoreldritch horrors <pennae@lix.systems>2024-03-23 19:37:09 +0100
committereldritch horrors <pennae@lix.systems>2024-07-03 11:46:53 +0000
commitc65f5dd18e5f937e25cc16da9dac61e403ef5982 (patch)
treef55aa5d67b3bf77845bcba3355da9f22b114d462 /src/libutil/file-descriptor.cc
parentb252b3c6e3e99ead44e8af99101828c083d65cc0 (diff)
libutil: convert drainFD to a Bytes generator
the `*Source` name is a slight misnomer since we do also have a Source type, but we can probably live with this for time being. Change-Id: I54eb2e59a4009014e324797f16b80b962759c7d3
Diffstat (limited to 'src/libutil/file-descriptor.cc')
-rw-r--r--src/libutil/file-descriptor.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/libutil/file-descriptor.cc b/src/libutil/file-descriptor.cc
index a19ceaf2a..ab69b5754 100644
--- a/src/libutil/file-descriptor.cc
+++ b/src/libutil/file-descriptor.cc
@@ -81,12 +81,12 @@ std::string drainFD(int fd, bool block, const size_t reserveSize)
// the parser needs two extra bytes to append terminating characters, other users will
// not care very much about the extra memory.
StringSink sink(reserveSize + 2);
- drainFD(fd, sink, block);
+ sink << drainFDSource(fd, block);
return std::move(sink.s);
}
-void drainFD(int fd, Sink & sink, bool block)
+Generator<Bytes> drainFDSource(int fd, bool block)
{
// silence GCC maybe-uninitialized warning in finally
int saved = 0;
@@ -115,7 +115,7 @@ void drainFD(int fd, Sink & sink, bool block)
throw SysError("reading from file");
}
else if (rd == 0) break;
- else sink({(char *) buf.data(), (size_t) rd});
+ else co_yield std::span{(char *) buf.data(), (size_t) rd};
}
}