aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2002-10-25 01:33:17 +0000
committerBruce Momjian <bruce@momjian.us>2002-10-25 01:33:17 +0000
commitfc5c577e34a53af8104415bae63d315fee2b125a (patch)
tree8c997ff545de26936a0d532acbaac8ff7a6f2fe8 /src
parent2908a838ac2cf8cdccaa115249f8399eef8a731e (diff)
downloadpostgresql-fc5c577e34a53af8104415bae63d315fee2b125a.tar.gz
postgresql-fc5c577e34a53af8104415bae63d315fee2b125a.zip
Allow fseeko in pg_dump only if fseeko() will work for all supported file
sizes.
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_dump/common.c4
-rw-r--r--src/bin/pg_dump/pg_backup_archiver.c28
-rw-r--r--src/bin/pg_dump/pg_backup_archiver.h4
-rw-r--r--src/bin/pg_dump/pg_backup_custom.c6
-rw-r--r--src/bin/pg_dump/pg_backup_files.c6
-rw-r--r--src/bin/pg_dump/pg_backup_tar.c6
6 files changed, 41 insertions, 13 deletions
diff --git a/src/bin/pg_dump/common.c b/src/bin/pg_dump/common.c
index 7870a0d66d2..a703660aa24 100644
--- a/src/bin/pg_dump/common.c
+++ b/src/bin/pg_dump/common.c
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.71 2002/10/09 16:20:25 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.72 2002/10/25 01:33:17 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -290,7 +290,7 @@ flagInhAttrs(TableInfo *tblinfo, int numTables,
* attr with the same name, then only dump it if:
*
* - it is NOT NULL and zero parents are NOT NULL
- * OR
+ * OR
* - it has a default value AND the default value does not match
* all parent default values, or no parents specify a default.
*
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
index d56ebdcd06c..c5cfa2f405e 100644
--- a/src/bin/pg_dump/pg_backup_archiver.c
+++ b/src/bin/pg_dump/pg_backup_archiver.c
@@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.59 2002/10/22 19:15:23 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.60 2002/10/25 01:33:17 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2338,6 +2338,32 @@ ReadHead(ArchiveHandle *AH)
}
+/*
+ * checkSeek
+ * check to see if fseek can be performed.
+ */
+
+bool
+checkSeek(FILE *fp)
+{
+
+ if (fseek(fp, 0, SEEK_CUR) != 0)
+ return false;
+ else if (sizeof(off_t) > sizeof(long))
+ /*
+ * At this point, off_t is too large for long, so we return
+ * based on whether an off_t version of fseek is available.
+ */
+#ifdef HAVE_FSEEKO
+ return true;
+#else
+ return false;
+#endif
+ else
+ return true;
+}
+
+
static void
_SortToc(ArchiveHandle *AH, TocSortCompareFn fn)
{
diff --git a/src/bin/pg_dump/pg_backup_archiver.h b/src/bin/pg_dump/pg_backup_archiver.h
index 980d262e93d..73b5c29c329 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.48 2002/10/22 19:15:23 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.49 2002/10/25 01:33:17 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -27,6 +27,7 @@
#include "postgres_fe.h"
+#include <stdio.h>
#include <time.h>
#include <errno.h>
@@ -284,6 +285,7 @@ extern void ReadToc(ArchiveHandle *AH);
extern void WriteDataChunks(ArchiveHandle *AH);
extern int TocIDRequired(ArchiveHandle *AH, int id, RestoreOptions *ropt);
+extern bool checkSeek(FILE *fp);
/*
* Mandatory routines for each supported format
diff --git a/src/bin/pg_dump/pg_backup_custom.c b/src/bin/pg_dump/pg_backup_custom.c
index 873bfb59ce8..c2fcef7536e 100644
--- a/src/bin/pg_dump/pg_backup_custom.c
+++ b/src/bin/pg_dump/pg_backup_custom.c
@@ -19,7 +19,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_custom.c,v 1.22 2002/10/22 19:15:23 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_custom.c,v 1.23 2002/10/25 01:33:17 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -179,7 +179,7 @@ InitArchiveFmt_Custom(ArchiveHandle *AH)
if (!AH->FH)
die_horribly(AH, modulename, "could not open archive file %s: %s\n", AH->fSpec, strerror(errno));
- ctx->hasSeek = (fseeko(AH->FH, 0, SEEK_CUR) == 0);
+ ctx->hasSeek = checkSeek(AH->FH);
}
else
{
@@ -190,7 +190,7 @@ InitArchiveFmt_Custom(ArchiveHandle *AH)
if (!AH->FH)
die_horribly(AH, modulename, "could not open archive file %s: %s\n", AH->fSpec, strerror(errno));
- ctx->hasSeek = (fseeko(AH->FH, 0, SEEK_CUR) == 0);
+ ctx->hasSeek = checkSeek(AH->FH);
ReadHead(AH);
ReadToc(AH);
diff --git a/src/bin/pg_dump/pg_backup_files.c b/src/bin/pg_dump/pg_backup_files.c
index 1bcb16ca002..3a4914828a5 100644
--- a/src/bin/pg_dump/pg_backup_files.c
+++ b/src/bin/pg_dump/pg_backup_files.c
@@ -20,7 +20,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_files.c,v 1.20 2002/10/22 19:15:23 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_files.c,v 1.21 2002/10/25 01:33:17 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -129,7 +129,7 @@ InitArchiveFmt_Files(ArchiveHandle *AH)
if (AH->FH == NULL)
die_horribly(NULL, modulename, "could not open output file: %s\n", strerror(errno));
- ctx->hasSeek = (fseeko(AH->FH, 0, SEEK_CUR) == 0);
+ ctx->hasSeek = checkSeek(AH->FH);
if (AH->compression < 0 || AH->compression > 9)
AH->compression = Z_DEFAULT_COMPRESSION;
@@ -147,7 +147,7 @@ InitArchiveFmt_Files(ArchiveHandle *AH)
if (AH->FH == NULL)
die_horribly(NULL, modulename, "could not open input file: %s\n", strerror(errno));
- ctx->hasSeek = (fseeko(AH->FH, 0, SEEK_CUR) == 0);
+ ctx->hasSeek = checkSeek(AH->FH);
ReadHead(AH);
ReadToc(AH);
diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c
index fdfcc95d4b1..6bbd1ba2a3d 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.31 2002/10/22 19:15:23 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.32 2002/10/25 01:33:17 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -190,7 +190,7 @@ InitArchiveFmt_Tar(ArchiveHandle *AH)
*/
/* setvbuf(ctx->tarFH, NULL, _IONBF, 0); */
- ctx->hasSeek = (fseeko(ctx->tarFH, 0, SEEK_CUR) == 0);
+ ctx->hasSeek = checkSeek(ctx->tarFH);
if (AH->compression < 0 || AH->compression > 9)
AH->compression = Z_DEFAULT_COMPRESSION;
@@ -227,7 +227,7 @@ InitArchiveFmt_Tar(ArchiveHandle *AH)
ctx->tarFHpos = 0;
- ctx->hasSeek = (fseeko(ctx->tarFH, 0, SEEK_CUR) == 0);
+ ctx->hasSeek = checkSeek(ctx->tarFH);
/*
* Forcibly unmark the header as read since we use the lookahead