diff options
author | Tom Lane | 2007-10-28 21:55:52 +0000 |
---|---|---|
committer | Tom Lane | 2007-10-28 21:55:52 +0000 |
commit | 27c033ed98d0ed8ee05caf440ae648f42fa5f9d6 (patch) | |
tree | 5e4bda42662ec4fb2237e3ee25b5bd0b3e97f452 | |
parent | 006f42c74d46505b2b4dc753be25c91b0f9efec5 (diff) |
Make pg_dump and friends consistently report both the filename and the
errno string when complaining of fopen failures. Per gripe from Bob
Pawley, it's not always instantly obvious to the user which name we
tried to open.
-rw-r--r-- | src/bin/pg_dump/pg_backup_archiver.c | 26 | ||||
-rw-r--r-- | src/bin/pg_dump/pg_backup_custom.c | 27 | ||||
-rw-r--r-- | src/bin/pg_dump/pg_backup_files.c | 37 | ||||
-rw-r--r-- | src/bin/pg_dump/pg_backup_tar.c | 33 | ||||
-rw-r--r-- | src/bin/pg_dump/pg_dumpall.c | 10 |
5 files changed, 95 insertions, 38 deletions
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index c35d5436fdb..16ed5f0e313 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -15,7 +15,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.147 2007/10/13 20:18:41 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.148 2007/10/28 21:55:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -799,8 +799,8 @@ SortTocFromFile(Archive *AHX, RestoreOptions *ropt) /* Setup the file */ fh = fopen(ropt->tocFile, PG_BINARY_R); if (!fh) - die_horribly(AH, modulename, "could not open TOC file: %s\n", - strerror(errno)); + die_horribly(AH, modulename, "could not open TOC file \"%s\": %s\n", + ropt->tocFile, strerror(errno)); while (fgets(buf, sizeof(buf), fh) != NULL) { @@ -957,7 +957,14 @@ SetOutput(ArchiveHandle *AH, char *filename, int compression) } if (!AH->OF) - die_horribly(AH, modulename, "could not open output file: %s\n", strerror(errno)); + { + if (filename) + die_horribly(AH, modulename, "could not open output file \"%s\": %s\n", + filename, strerror(errno)); + else + die_horribly(AH, modulename, "could not open output file: %s\n", + strerror(errno)); + } return sav; } @@ -1512,12 +1519,17 @@ _discoverArchiveFormat(ArchiveHandle *AH) { wantClose = 1; fh = fopen(AH->fSpec, PG_BINARY_R); + if (!fh) + die_horribly(AH, modulename, "could not open input file \"%s\": %s\n", + AH->fSpec, strerror(errno)); } else + { fh = stdin; - - if (!fh) - die_horribly(AH, modulename, "could not open input file: %s\n", strerror(errno)); + if (!fh) + die_horribly(AH, modulename, "could not open input file: %s\n", + strerror(errno)); + } cnt = fread(sig, 1, 5, fh); diff --git a/src/bin/pg_dump/pg_backup_custom.c b/src/bin/pg_dump/pg_backup_custom.c index 923acce55a9..5791ec78128 100644 --- a/src/bin/pg_dump/pg_backup_custom.c +++ b/src/bin/pg_dump/pg_backup_custom.c @@ -19,7 +19,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_custom.c,v 1.39 2007/08/06 01:38:14 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_custom.c,v 1.40 2007/10/28 21:55:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -169,23 +169,38 @@ InitArchiveFmt_Custom(ArchiveHandle *AH) if (AH->mode == archModeWrite) { if (AH->fSpec && strcmp(AH->fSpec, "") != 0) + { AH->FH = fopen(AH->fSpec, PG_BINARY_W); + if (!AH->FH) + die_horribly(AH, modulename, "could not open output file \"%s\": %s\n", + AH->fSpec, strerror(errno)); + } else + { AH->FH = stdout; - - if (!AH->FH) - die_horribly(AH, modulename, "could not open output file \"%s\": %s\n", AH->fSpec, strerror(errno)); + if (!AH->FH) + die_horribly(AH, modulename, "could not open output file: %s\n", + strerror(errno)); + } ctx->hasSeek = checkSeek(AH->FH); } else { if (AH->fSpec && strcmp(AH->fSpec, "") != 0) + { AH->FH = fopen(AH->fSpec, PG_BINARY_R); + if (!AH->FH) + die_horribly(AH, modulename, "could not open input file \"%s\": %s\n", + AH->fSpec, strerror(errno)); + } else + { AH->FH = stdin; - if (!AH->FH) - die_horribly(AH, modulename, "could not open input file \"%s\": %s\n", AH->fSpec, strerror(errno)); + if (!AH->FH) + die_horribly(AH, modulename, "could not open input file: %s\n", + strerror(errno)); + } ctx->hasSeek = checkSeek(AH->FH); diff --git a/src/bin/pg_dump/pg_backup_files.c b/src/bin/pg_dump/pg_backup_files.c index 6520ca227aa..47a4ddd77cb 100644 --- a/src/bin/pg_dump/pg_backup_files.c +++ b/src/bin/pg_dump/pg_backup_files.c @@ -20,7 +20,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_files.c,v 1.33 2007/08/06 01:38:15 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_files.c,v 1.34 2007/10/28 21:55:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -121,12 +121,19 @@ InitArchiveFmt_Files(ArchiveHandle *AH) " normal use. Files will be written in the current working directory.\n"); if (AH->fSpec && strcmp(AH->fSpec, "") != 0) + { AH->FH = fopen(AH->fSpec, PG_BINARY_W); + if (AH->FH == NULL) + die_horribly(NULL, modulename, "could not open output file \"%s\": %s\n", + AH->fSpec, strerror(errno)); + } else + { AH->FH = stdout; - - if (AH->FH == NULL) - die_horribly(NULL, modulename, "could not open output file: %s\n", strerror(errno)); + if (AH->FH == NULL) + die_horribly(NULL, modulename, "could not open output file: %s\n", + strerror(errno)); + } ctx->hasSeek = checkSeek(AH->FH); @@ -139,12 +146,19 @@ InitArchiveFmt_Files(ArchiveHandle *AH) { /* Read Mode */ if (AH->fSpec && strcmp(AH->fSpec, "") != 0) + { AH->FH = fopen(AH->fSpec, PG_BINARY_R); + if (AH->FH == NULL) + die_horribly(NULL, modulename, "could not open input file \"%s\": %s\n", + AH->fSpec, strerror(errno)); + } else + { AH->FH = stdin; - - if (AH->FH == NULL) - die_horribly(NULL, modulename, "could not open input file: %s\n", strerror(errno)); + if (AH->FH == NULL) + die_horribly(NULL, modulename, "could not open input file: %s\n", + strerror(errno)); + } ctx->hasSeek = checkSeek(AH->FH); @@ -242,7 +256,8 @@ _StartData(ArchiveHandle *AH, TocEntry *te) #endif if (tctx->FH == NULL) - die_horribly(AH, modulename, "could not open output file: %s\n", strerror(errno)); + die_horribly(AH, modulename, "could not open output file \"%s\": %s\n", + tctx->filename, strerror(errno)); } static size_t @@ -286,7 +301,8 @@ _PrintFileData(ArchiveHandle *AH, char *filename, RestoreOptions *ropt) #endif if (AH->FH == NULL) - die_horribly(AH, modulename, "could not open input file: %s\n", strerror(errno)); + die_horribly(AH, modulename, "could not open input file \"%s\": %s\n", + filename, strerror(errno)); while ((cnt = GZREAD(buf, 1, 4095, AH->FH)) > 0) { @@ -507,7 +523,8 @@ _StartBlob(ArchiveHandle *AH, TocEntry *te, Oid oid) #endif if (tctx->FH == NULL) - die_horribly(AH, modulename, "could not open large object file for input: %s\n", strerror(errno)); + die_horribly(AH, modulename, "could not open large object file \"%s\" for input: %s\n", + fname, strerror(errno)); } /* diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c index 8be6e5edf78..380e0184ef4 100644 --- a/src/bin/pg_dump/pg_backup_tar.c +++ b/src/bin/pg_dump/pg_backup_tar.c @@ -16,7 +16,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.60 2007/08/29 16:31:36 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.61 2007/10/28 21:55:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -172,15 +172,22 @@ InitArchiveFmt_Tar(ArchiveHandle *AH) */ if (AH->mode == archModeWrite) { - if (AH->fSpec && strcmp(AH->fSpec, "") != 0) + { ctx->tarFH = fopen(AH->fSpec, PG_BINARY_W); + if (ctx->tarFH == NULL) + die_horribly(NULL, modulename, + "could not open TOC file \"%s\" for output: %s\n", + AH->fSpec, strerror(errno)); + } else + { ctx->tarFH = stdout; - - if (ctx->tarFH == NULL) - die_horribly(NULL, modulename, - "could not open TOC file for output: %s\n", strerror(errno)); + if (ctx->tarFH == NULL) + die_horribly(NULL, modulename, + "could not open TOC file for output: %s\n", + strerror(errno)); + } ctx->tarFHpos = 0; @@ -210,14 +217,20 @@ InitArchiveFmt_Tar(ArchiveHandle *AH) } else { /* Read Mode */ - if (AH->fSpec && strcmp(AH->fSpec, "") != 0) + { ctx->tarFH = fopen(AH->fSpec, PG_BINARY_R); + if (ctx->tarFH == NULL) + die_horribly(NULL, modulename, "could not open TOC file \"%s\" for input: %s\n", + AH->fSpec, strerror(errno)); + } else + { ctx->tarFH = stdin; - - if (ctx->tarFH == NULL) - die_horribly(NULL, modulename, "could not open TOC file for input: %s\n", strerror(errno)); + if (ctx->tarFH == NULL) + die_horribly(NULL, modulename, "could not open TOC file for input: %s\n", + strerror(errno)); + } /* * Make unbuffered since we will dup() it, and the buffers screw each diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index 59f1ddbcfba..319f2952281 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.93 2007/10/13 20:18:41 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.94 2007/10/28 21:55:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -398,8 +398,8 @@ main(int argc, char *argv[]) OPF = fopen(filename, PG_BINARY_W); if (!OPF) { - fprintf(stderr, _("%s: could not open the output file \"%s\"\n"), - progname, filename); + fprintf(stderr, _("%s: could not open the output file \"%s\": %s\n"), + progname, filename, strerror(errno)); exit(1); } } @@ -1210,8 +1210,8 @@ dumpDatabases(PGconn *conn) OPF = fopen(filename, PG_BINARY_A); if (!OPF) { - fprintf(stderr, _("%s: could not re-open the output file \"%s\"\n"), - progname, filename); + fprintf(stderr, _("%s: could not re-open the output file \"%s\": %s\n"), + progname, filename, strerror(errno)); exit(1); } } |