aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bin/pg_dump/pg_backup_tar.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c
index b18f4856e88..5b38d4615b4 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.47 2005/01/25 22:44:31 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.48 2005/06/22 02:00:47 neilc Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1155,7 +1155,6 @@ _tarGetHeader(ArchiveHandle *AH, TAR_MEMBER *th)
size_t len;
unsigned long ullen;
off_t hPos;
- int i;
bool gotBlock = false;
while (!gotBlock)
@@ -1178,7 +1177,7 @@ _tarGetHeader(ArchiveHandle *AH, TAR_MEMBER *th)
hPos = ctx->tarFHpos;
/* Read a 512 byte block, return EOF, exit if short */
- len = _tarReadRaw(AH, &h[0], 512, NULL, ctx->tarFH);
+ len = _tarReadRaw(AH, h, 512, NULL, ctx->tarFH);
if (len == 0) /* EOF */
return 0;
@@ -1188,20 +1187,22 @@ _tarGetHeader(ArchiveHandle *AH, TAR_MEMBER *th)
(unsigned long) len);
/* Calc checksum */
- chk = _tarChecksum(&h[0]);
+ chk = _tarChecksum(h);
+ sscanf(&h[148], "%8o", &sum);
/*
- * If the checksum failed, see if it is a null block. If so, then
- * just try with next block...
+ * If the checksum failed, see if it is a null block. If so,
+ * silently continue to the next block.
*/
-
if (chk == sum)
gotBlock = true;
else
{
+ int i;
+
for (i = 0; i < 512; i++)
{
- if (h[0] != 0)
+ if (h[i] != 0)
{
gotBlock = true;
break;
@@ -1213,7 +1214,6 @@ _tarGetHeader(ArchiveHandle *AH, TAR_MEMBER *th)
sscanf(&h[0], "%99s", tag);
sscanf(&h[124], "%12lo", &ullen);
len = (size_t) ullen;
- sscanf(&h[148], "%8o", &sum);
{
char buf[100];