]> granicus.if.org Git - postgresql/commitdiff
Changes of 6-Sep-02 broke pg_restore's ability to recognize tar-format
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 1 Feb 2003 19:29:26 +0000 (19:29 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 1 Feb 2003 19:29:26 +0000 (19:29 +0000)
files.  Fix it.

src/bin/pg_dump/pg_backup_archiver.h
src/bin/pg_dump/pg_backup_tar.c

index 73b5c29c3298f4b9e4e37c0a167552df0a949b54..030aeabbfe5cc7e088dc4b2279af513f3e53cfee 100644 (file)
@@ -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.49.2.1 2003/02/01 19:29:26 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);
index 84e45dfed8cb1517bf6bfc713b4b135d0421b2d7..93293fe8058ba3d2db4be222a5d6bc9a9c998c0b 100644 (file)
@@ -16,7 +16,7 @@
  *
  *
  * IDENTIFICATION
- *             $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.32.2.1 2003/01/10 23:51:46 tgl Exp $
+ *             $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.32.2.2 2003/02/01 19:29:26 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 */