diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 1e1dd84d45..ed56103a17 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1288,6 +1288,7 @@ virFileOpenAs; virFileOpenTty; virFilePrintf; virFileReadAll; +virFileReadAllQuiet; virFileReadHeaderFD; virFileReadLimFD; virFileRelLinkPointsTo; diff --git a/src/util/virfile.c b/src/util/virfile.c index 9e17504546..463064ca9d 100644 --- a/src/util/virfile.c +++ b/src/util/virfile.c @@ -1301,6 +1301,21 @@ virFileReadAll(const char *path, int maxlen, char **buf) return len; } +int +virFileReadAllQuiet(const char *path, int maxlen, char **buf) +{ + int fd = open(path, O_RDONLY); + if (fd < 0) + return -errno; + + int len = virFileReadLimFD(fd, maxlen, buf); + VIR_FORCE_CLOSE(fd); + if (len < 0) + return -errno; + + return len; +} + /* Truncate @path and write @str to it. If @mode is 0, ensure that @path exists; otherwise, use @mode if @path must be created. Return 0 for success, nonzero for failure. diff --git a/src/util/virfile.h b/src/util/virfile.h index 5fee407572..36d3fe7e8b 100644 --- a/src/util/virfile.h +++ b/src/util/virfile.h @@ -129,6 +129,8 @@ 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 virFileReadAllQuiet(const char *path, int maxlen, char **buf) + ATTRIBUTE_RETURN_CHECK ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3); int virFileWriteStr(const char *path, const char *str, mode_t mode) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;