$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@linux.vnet.ibm.com>
> ---
> 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@redhat.com>
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@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list