summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-08-29 16:31:45 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-08-29 16:31:45 +0000
commited2af67b7ad796d3309bcb53987adf5e075cd0e0 (patch)
tree0415a64d2f78c0655b68820ae77d605653bcdbaf /src
parent4eaf0e311dbe872131f3cccb70c6689fac8354c5 (diff)
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.
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_dump/pg_backup_tar.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c
index b173cb9f426..84ee55a9076 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.56.2.2 2007/08/06 01:38:24 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.56.2.3 2007/08/29 16:31:45 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,29 +1067,30 @@ _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,
- "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);
}