mirror of
https://github.com/postgres/postgres.git
synced 2025-05-09 18:21:05 +03:00
Fix initdb to not generate misleading error messages when postgres.bki
or other share-directory files are inaccessible for some reason other than not existing. Inspired by trouble report from Simon Kinsella.
This commit is contained in:
parent
61f621b506
commit
068bf6534f
@ -42,7 +42,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
* Portions taken from FreeBSD.
|
* Portions taken from FreeBSD.
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.129 2007/01/20 17:04:58 momjian Exp $
|
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.130 2007/01/31 18:52:49 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1041,13 +1041,29 @@ check_input(char *path)
|
|||||||
{
|
{
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
|
|
||||||
if (stat(path, &statbuf) != 0 || !S_ISREG(statbuf.st_mode))
|
if (stat(path, &statbuf) != 0)
|
||||||
{
|
{
|
||||||
|
if (errno == ENOENT)
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
_("%s: file \"%s\" does not exist\n"
|
_("%s: file \"%s\" does not exist\n"
|
||||||
"This means you have a corrupted installation or identified\n"
|
"This means you have a corrupted installation or identified\n"
|
||||||
"the wrong directory with the invocation option -L.\n"),
|
"the wrong directory with the invocation option -L.\n"),
|
||||||
progname, path);
|
progname, path);
|
||||||
|
else
|
||||||
|
fprintf(stderr,
|
||||||
|
_("%s: could not access file \"%s\": %s\n"
|
||||||
|
"This may mean you have a corrupted installation or identified\n"
|
||||||
|
"the wrong directory with the invocation option -L.\n"),
|
||||||
|
progname, path, strerror(errno));
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
if (!S_ISREG(statbuf.st_mode))
|
||||||
|
{
|
||||||
|
fprintf(stderr,
|
||||||
|
_("%s: file \"%s\" is not a regular file\n"
|
||||||
|
"This means you have a corrupted installation or identified\n"
|
||||||
|
"the wrong directory with the invocation option -L.\n"),
|
||||||
|
progname, path);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user