diff options
author | Stephen Frost <sfrost@snowman.net> | 2014-02-09 18:28:14 -0500 |
---|---|---|
committer | Stephen Frost <sfrost@snowman.net> | 2014-02-09 18:28:14 -0500 |
commit | dfb1e9bdc0d0a506899b11038c7fce9631cac9fe (patch) | |
tree | 0a99ee38ef25b3313435b24b88d2892f0102980f /src | |
parent | 5e8e794e3be9fbeddf6f2e2c0515dd0f04c784ec (diff) | |
download | postgresql-dfb1e9bdc0d0a506899b11038c7fce9631cac9fe.tar.gz postgresql-dfb1e9bdc0d0a506899b11038c7fce9631cac9fe.zip |
Further pg_dump / ftello improvements
Make ftello error-checking consistent to all calls and remove a
bit of ftello-related code which has been #if 0'd out since 2001.
Note that we are not concerned with the ftello() call under
snprintf() failing as it is just building a string to call
exit_horribly() with; printing -1 in such a case is fine.
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/pg_dump/pg_backup_archiver.c | 3 | ||||
-rw-r--r-- | src/bin/pg_dump/pg_backup_tar.c | 17 |
2 files changed, 4 insertions, 16 deletions
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index 8ea40ea7b76..2b36e455335 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -3347,9 +3347,8 @@ checkSeek(FILE *fp) #endif /* Check that ftello works on this file */ - errno = 0; tpos = ftello(fp); - if (errno) + if (tpos < 0) return false; /* diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c index 06005ae8682..3bdbf868189 100644 --- a/src/bin/pg_dump/pg_backup_tar.c +++ b/src/bin/pg_dump/pg_backup_tar.c @@ -1068,6 +1068,9 @@ _tarAddFile(ArchiveHandle *AH, TAR_MEMBER *th) */ fseeko(tmp, 0, SEEK_END); th->fileLen = ftello(tmp); + if (th->fileLen < 0) + exit_horribly(modulename, "could not determine seek position in file: %s\n", + strerror(errno)); fseeko(tmp, 0, SEEK_SET); /* @@ -1212,20 +1215,6 @@ _tarGetHeader(ArchiveHandle *AH, TAR_MEMBER *th) while (!gotBlock) { -#if 0 - if (ftello(ctx->tarFH) != ctx->tarFHpos) - { - char buf1[100], - buf2[100]; - - snprintf(buf1, sizeof(buf1), INT64_FORMAT, (int64) ftello(ctx->tarFH)); - snprintf(buf2, sizeof(buf2), INT64_FORMAT, (int64) ftello(ctx->tarFHpos)); - exit_horribly(modulename, - "mismatch in actual vs. predicted file position (%s vs. %s)\n", - buf1, buf2); - } -#endif - /* Save the pos for reporting purposes */ hPos = ctx->tarFHpos; |