aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bin/pg_dump/pg_backup_archiver.h4
-rw-r--r--src/bin/pg_dump/pg_backup_tar.c16
2 files changed, 15 insertions, 5 deletions
diff --git a/src/bin/pg_dump/pg_backup_archiver.h b/src/bin/pg_dump/pg_backup_archiver.h
index 73b5c29c329..078ecb9c983 100644
--- a/src/bin/pg_dump/pg_backup_archiver.h
+++ b/src/bin/pg_dump/pg_backup_archiver.h
@@ -17,7 +17,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.49 2002/10/25 01:33:17 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.50 2003/02/01 19:29:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -309,7 +309,7 @@ extern void InitArchiveFmt_Files(ArchiveHandle *AH);
extern void InitArchiveFmt_Null(ArchiveHandle *AH);
extern void InitArchiveFmt_Tar(ArchiveHandle *AH);
-extern int isValidTarHeader(char *header);
+extern bool isValidTarHeader(char *header);
extern OutputContext SetOutput(ArchiveHandle *AH, char *filename, int compression);
extern void ResetOutput(ArchiveHandle *AH, OutputContext savedContext);
diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c
index 867d55e467e..7003b4c6428 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.33 2003/01/10 23:49:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.34 2003/02/01 19:29:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -981,7 +981,7 @@ _tarChecksum(char *header)
return sum + 256; /* Assume 8 blanks in checksum field */
}
-int
+bool
isValidTarHeader(char *header)
{
int sum;
@@ -989,7 +989,17 @@ isValidTarHeader(char *header)
sscanf(&header[148], "%8o", &sum);
- return (sum == chk && strncmp(&header[257], "ustar ", 7) == 0);
+ if (sum != chk)
+ return false;
+
+ /* POSIX format */
+ if (strncmp(&header[257], "ustar00", 7) == 0)
+ return true;
+ /* older format */
+ if (strncmp(&header[257], "ustar ", 7) == 0)
+ return true;
+
+ return false;
}
/* Given the member, write the TAR header & copy the file */