summaryrefslogtreecommitdiffstats
path: root/src/file.c
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2012-08-17 10:36:23 +0100
committerRichard W.M. Jones <rjones@redhat.com>2012-08-17 16:08:13 +0100
commit96d3ac28d636290e9478ac27226862e627682025 (patch)
tree31c462e7cd37b5b474140f928d44c3039075aec9 /src/file.c
parent9d85eba3c3c169478d1edf0dd7ef9495d4be19ce (diff)
downloadlibguestfs-96d3ac28d636290e9478ac27226862e627682025.tar.gz
libguestfs-96d3ac28d636290e9478ac27226862e627682025.tar.xz
libguestfs-96d3ac28d636290e9478ac27226862e627682025.zip
guestfs_read_file: Reimplement to avoid protocol limits.
Diffstat (limited to 'src/file.c')
-rw-r--r--src/file.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/file.c b/src/file.c
index ed157592..84edc403 100644
--- a/src/file.c
+++ b/src/file.c
@@ -51,6 +51,14 @@ sort_strings (char **argv, size_t len)
char *
guestfs__cat (guestfs_h *g, const char *path)
{
+ size_t size;
+
+ return guestfs_read_file (g, path, &size);
+}
+
+char *
+guestfs__read_file (guestfs_h *g, const char *path, size_t *size_r)
+{
int fd = -1;
size_t size;
char *tmpfile = NULL, *ret = NULL;
@@ -97,6 +105,10 @@ guestfs__cat (guestfs_h *g, const char *path)
goto err;
}
+ /* Mustn't touch *size_r until we are sure that we won't return any
+ * error (RHBZ#589039).
+ */
+ *size_r = size;
return ret;
err: