Skip to content

Commit 330b4e4

Browse files
committed
Changes of 6-Sep-02 broke pg_restore's ability to recognize tar-format
files. Fix it.
1 parent 2116617 commit 330b4e4

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/bin/pg_dump/pg_backup_archiver.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*
1818
*
1919
* IDENTIFICATION
20-
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.49 2002/10/25 01:33:17 momjian Exp $
20+
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.50 2003/02/01 19:29:16 tgl Exp $
2121
*
2222
*-------------------------------------------------------------------------
2323
*/
@@ -309,7 +309,7 @@ extern void InitArchiveFmt_Files(ArchiveHandle *AH);
309309
extern void InitArchiveFmt_Null(ArchiveHandle *AH);
310310
extern void InitArchiveFmt_Tar(ArchiveHandle *AH);
311311

312-
extern int isValidTarHeader(char *header);
312+
extern bool isValidTarHeader(char *header);
313313

314314
extern OutputContext SetOutput(ArchiveHandle *AH, char *filename, int compression);
315315
extern void ResetOutput(ArchiveHandle *AH, OutputContext savedContext);

src/bin/pg_dump/pg_backup_tar.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*
1717
*
1818
* IDENTIFICATION
19-
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.33 2003/01/10 23:49:06 tgl Exp $
19+
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.34 2003/02/01 19:29:16 tgl Exp $
2020
*
2121
*-------------------------------------------------------------------------
2222
*/
@@ -981,15 +981,25 @@ _tarChecksum(char *header)
981981
return sum + 256; /* Assume 8 blanks in checksum field */
982982
}
983983

984-
int
984+
bool
985985
isValidTarHeader(char *header)
986986
{
987987
int sum;
988988
int chk = _tarChecksum(header);
989989

990990
sscanf(&header[148], "%8o", &sum);
991991

992-
return (sum == chk && strncmp(&header[257], "ustar ", 7) == 0);
992+
if (sum != chk)
993+
return false;
994+
995+
/* POSIX format */
996+
if (strncmp(&header[257], "ustar00", 7) == 0)
997+
return true;
998+
/* older format */
999+
if (strncmp(&header[257], "ustar ", 7) == 0)
1000+
return true;
1001+
1002+
return false;
9931003
}
9941004

9951005
/* Given the member, write the TAR header & copy the file */

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy