[libvirt] [PATCH 12/23] virfile: Add helpers for reading simple values

Michal Privoznik mprivozn at redhat.com
Mon Mar 27 07:58:11 UTC 2017


On 24.03.2017 20:00, Martin Kletzander wrote:
> These helpers are doing just a read and covert the value, but they
> properly size the read limit, handle additional whitespace characters,
> and unify error reporting.
>
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
>  src/libvirt_private.syms |  3 ++
>  src/util/virfile.c       | 83 ++++++++++++++++++++++++++++++++++++++++++++++++
>  src/util/virfile.h       |  6 ++++
>  3 files changed, 92 insertions(+)
>
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index ddeca239bb9c..27fbca589faa 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1626,6 +1626,9 @@ virFileReadBufQuiet;
>  virFileReadHeaderFD;
>  virFileReadLimFD;
>  virFileReadLink;
> +virFileReadValueBitmap;
> +virFileReadValueInt;
> +virFileReadValueUint;
>  virFileRelLinkPointsTo;
>  virFileRemove;
>  virFileRemoveLastComponent;
> diff --git a/src/util/virfile.c b/src/util/virfile.c
> index 41cdca953b28..e0e6f3c91581 100644
> --- a/src/util/virfile.c
> +++ b/src/util/virfile.c
> @@ -65,6 +65,7 @@
>  #endif
>
>  #include "configmake.h"
> +#include "intprops.h"
>  #include "viralloc.h"
>  #include "vircommand.h"
>  #include "virerror.h"
> @@ -3794,3 +3795,85 @@ virFileComparePaths(const char *p1, const char *p2)
>      VIR_FREE(res2);
>      return ret;
>  }
> +
> +
> +int
> +virFileReadValueInt(const char *path, int *value)
> +{
> +    char *str = NULL;
> +    char *endp = NULL;
> +
> +    if (!virFileExists(path))
> +        return -2;
> +
> +    if (virFileReadAll(path, INT_STRLEN_BOUND(*value), &str) < 0)
> +        return -1;
> +
> +    if (virStrToLong_i(str, &endp, 10, value) < 0 ||
> +        (endp && !c_isspace(*endp))) {
> +        virReportError(VIR_ERR_INTERNAL_ERROR,
> +                       _("Invalid integer value '%s' in file '%s'"),
> +                       str, path);
> +        return -1;
> +    }
> +
> +    VIR_FREE(str);
> +
> +    return 0;
> +}

I'd expect some comment for these. Esp. on retvals.

Michal




More information about the libvir-list mailing list