$SUBJ: "Implement" On 05/04/2018 04:21 PM, Stefan Berger wrote: > Implement virFileReadOffsetQuiet() that reads a given maximum number > of bytes into a buffer that will be allocated. The reading starts > from a given offset. > > Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxxxxxxxxxx> > --- > src/libvirt_private.syms | 1 + > src/util/virfile.c | 14 +++++++++++++- > src/util/virfile.h | 3 +++ > 3 files changed, 17 insertions(+), 1 deletion(-) > > diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms > index 92b5e0f..f2a4921 100644 > --- a/src/libvirt_private.syms > +++ b/src/libvirt_private.syms > @@ -1807,6 +1807,7 @@ virFileReadHeaderFD; > virFileReadHeaderQuiet; > virFileReadLimFD; > virFileReadLink; > +virFileReadOffsetQuiet; > virFileReadValueBitmap; > virFileReadValueInt; > virFileReadValueScaledInt; > diff --git a/src/util/virfile.c b/src/util/virfile.c > index 40f106d..526b9ad 100644 > --- a/src/util/virfile.c > +++ b/src/util/virfile.c > @@ -1432,12 +1432,18 @@ virFileReadAll(const char *path, int maxlen, char **buf) > } > Two blank lines between functions is the new normal... > int > -virFileReadAllQuiet(const char *path, int maxlen, char **buf) > +virFileReadOffsetQuiet(const char *path, off_t offset, > + int maxlen, char **buf) ...and each argument on it's own line... > { > int fd = open(path, O_RDONLY); > if (fd < 0) > return -errno; > > + if (offset > 0 && lseek(fd, offset, SEEK_SET) < 0) { > + VIR_FORCE_CLOSE(fd); > + return -errno; > + } > + > int len = virFileReadLimFD(fd, maxlen, buf); > VIR_FORCE_CLOSE(fd); > if (len < 0) > @@ -1446,6 +1452,12 @@ virFileReadAllQuiet(const char *path, int maxlen, char **buf) > return len; > } > > +int > +virFileReadAllQuiet(const char *path, int maxlen, char **buf) ... here too (as well as the 2 empty lines on either side since we're touching the code). With the adjustments, Reviewed-by: John Ferlan <jferlan@xxxxxxxxxx> but I do have some other concerns later in patch 7 when this is used as to whether it's necessary. John > +{ > + return virFileReadOffsetQuiet(path, 0, maxlen, buf); > +} > + > /* Read @file into preallocated buffer @buf of size @len. > * Return value is -errno in case of errors and size > * of data read (no trailing zero) in case of success. > diff --git a/src/util/virfile.h b/src/util/virfile.h > index 341320b..13d3cf6 100644 > --- a/src/util/virfile.h > +++ b/src/util/virfile.h > @@ -137,6 +137,9 @@ int virFileReadLimFD(int fd, int maxlen, char **buf) > ATTRIBUTE_RETURN_CHECK ATTRIBUTE_NONNULL(3); > int virFileReadAll(const char *path, int maxlen, char **buf) > ATTRIBUTE_RETURN_CHECK ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3); > +int virFileReadOffsetQuiet(const char *path, off_t offset, > + int maxlen, char **buf) > + ATTRIBUTE_RETURN_CHECK ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4); > int virFileReadAllQuiet(const char *path, int maxlen, char **buf) > ATTRIBUTE_RETURN_CHECK ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3); > int virFileReadBufQuiet(const char *file, char *buf, int len) > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list