aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-08-29 16:31:36 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-08-29 16:31:36 +0000
commit3b5f5d9873d4b14063c647e0138c096b201bd330 (patch)
tree46f9e8b666523245f35dd8071f60f282ad7757b8
parentc7b6593042fb304555c45ce72142aae3e5101bd2 (diff)
downloadpostgresql-3b5f5d9873d4b14063c647e0138c096b201bd330.tar.gz
postgresql-3b5f5d9873d4b14063c647e0138c096b201bd330.zip
Fix aboriginal bug in _tarAddFile(): when complaining that the amount of data
read from the temp file didn't match the file length reported by ftello(), the wrong variable's value was printed, and so the message made no sense. Clean up a couple other coding infelicities while at it.
-rw-r--r--src/bin/pg_dump/pg_backup_tar.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c
index 38b1d5e66e8..8be6e5edf78 100644
--- a/src/bin/pg_dump/pg_backup_tar.c
+++ b/src/bin/pg_dump/pg_backup_tar.c
@@ -16,7 +16,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.59 2007/08/06 01:38:15 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.60 2007/08/29 16:31:36 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1059,36 +1059,38 @@ _tarAddFile(ArchiveHandle *AH, TAR_MEMBER *th)
*/
fseeko(tmp, 0, SEEK_END);
th->fileLen = ftello(tmp);
+ fseeko(tmp, 0, SEEK_SET);
/*
- * Some compilers with throw a warning knowing this test can never be true
- * because pgoff_t can't exceed the compared maximum.
+ * Some compilers will throw a warning knowing this test can never be true
+ * because pgoff_t can't exceed the compared maximum on their platform.
*/
if (th->fileLen > MAX_TAR_MEMBER_FILELEN)
die_horribly(AH, modulename, "archive member too large for tar format\n");
- fseeko(tmp, 0, SEEK_SET);
_tarWriteHeader(th);
- while ((cnt = fread(&buf[0], 1, 32767, tmp)) > 0)
+ while ((cnt = fread(buf, 1, sizeof(buf), tmp)) > 0)
{
- res = fwrite(&buf[0], 1, cnt, th->tarFH);
+ res = fwrite(buf, 1, cnt, th->tarFH);
if (res != cnt)
die_horribly(AH, modulename,
- "could not write to output file: %s\n", strerror(errno));
+ "could not write to output file: %s\n",
+ strerror(errno));
len += res;
}
if (fclose(tmp) != 0) /* This *should* delete it... */
- die_horribly(AH, modulename, "could not close temporary file: %s\n", strerror(errno));
+ die_horribly(AH, modulename, "could not close temporary file: %s\n",
+ strerror(errno));
if (len != th->fileLen)
{
- char buf1[100],
- buf2[100];
+ char buf1[32],
+ buf2[32];
snprintf(buf1, sizeof(buf1), INT64_FORMAT, (int64) len);
- snprintf(buf2, sizeof(buf2), INT64_FORMAT, (int64) th->pos);
+ snprintf(buf2, sizeof(buf2), INT64_FORMAT, (int64) th->fileLen);
die_horribly(AH, modulename, "actual file length (%s) does not match expected (%s)\n",
buf1, buf2);
}