aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-08-29 16:32:05 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-08-29 16:32:05 +0000
commit92cb599bd6e5f08d42cfb41f930aa95cba9790f6 (patch)
tree987703f7266e5892f89d6f473c445d976e9ad8b5
parent5a94a5fd0b026f5503eac244bdff5c408e82834c (diff)
downloadpostgresql-92cb599bd6e5f08d42cfb41f930aa95cba9790f6.tar.gz
postgresql-92cb599bd6e5f08d42cfb41f930aa95cba9790f6.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.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c
index 75fef857f76..7395a3f43fe 100644
--- a/src/bin/pg_dump/pg_backup_tar.c
+++ b/src/bin/pg_dump/pg_backup_tar.c
@@ -16,7 +16,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.38.2.2 2007/08/06 01:38:49 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.38.2.3 2007/08/29 16:32:05 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1022,15 +1022,16 @@ _tarAddFile(ArchiveHandle *AH, TAR_MEMBER *th)
*/
fseeko(tmp, 0, SEEK_END);
th->fileLen = ftello(tmp);
+ fseeko(tmp, 0, SEEK_SET);
+
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",
@@ -1039,15 +1040,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);
}