aboutsummaryrefslogtreecommitdiff
path: root/src/bin/pg_rewind/file_ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/pg_rewind/file_ops.c')
-rw-r--r--src/bin/pg_rewind/file_ops.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/bin/pg_rewind/file_ops.c b/src/bin/pg_rewind/file_ops.c
index 94bcc13ae86..0bd110f9b00 100644
--- a/src/bin/pg_rewind/file_ops.c
+++ b/src/bin/pg_rewind/file_ops.c
@@ -289,6 +289,7 @@ slurpFile(const char *datadir, const char *path, size_t *filesize)
struct stat statbuf;
char fullpath[MAXPGPATH];
int len;
+ int r;
snprintf(fullpath, sizeof(fullpath), "%s/%s", datadir, path);
@@ -304,9 +305,16 @@ slurpFile(const char *datadir, const char *path, size_t *filesize)
buffer = pg_malloc(len + 1);
- if (read(fd, buffer, len) != len)
- pg_fatal("could not read file \"%s\": %s\n",
- fullpath, strerror(errno));
+ r = read(fd, buffer, len);
+ if (r != len)
+ {
+ if (r < 0)
+ pg_fatal("could not read file \"%s\": %s\n",
+ fullpath, strerror(errno));
+ else
+ pg_fatal("could not read file \"%s\": read %d of %zu\n",
+ fullpath, r, (Size) len);
+ }
close(fd);
/* Zero-terminate the buffer. */