aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-08-29 16:31:51 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-08-29 16:31:51 +0000
commitc06e5bb7bbc6c1fb8e209f0c03da17dbffd55e2c (patch)
tree8cead91104a77f72d4bcbbc3abb1c694c8a7e8cb
parent2169ad2208f72f2d26704216c02d2aca30948c06 (diff)
downloadpostgresql-c06e5bb7bbc6c1fb8e209f0c03da17dbffd55e2c.tar.gz
postgresql-c06e5bb7bbc6c1fb8e209f0c03da17dbffd55e2c.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.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c
index 506c9a639be..5c25fdd659e 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.49.2.4 2007/08/06 01:38:32 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.49.2.5 2007/08/29 16:31:51 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1059,6 +1059,7 @@ _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
@@ -1066,13 +1067,12 @@ _tarAddFile(ArchiveHandle *AH, TAR_MEMBER *th)
*/
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,
"write error appending to tar archive (wrote %lu, attempted %lu)\n",
@@ -1081,15 +1081,16 @@ _tarAddFile(ArchiveHandle *AH, TAR_MEMBER *th)
}
if (fclose(tmp) != 0) /* This *should* delete it... */
- die_horribly(AH, modulename, "could not close tar member: %s\n", strerror(errno));
+ die_horribly(AH, modulename, "could not close tar member: %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);
}