Thread: initdb: Improve error recovery.
Hello there, I would like to improve error recovery of initdb when the password file is empty. The present code declares "Error 0" as the cause of failure. It suffices to use ferrer() since fgets() returns NULL also at a premature EOF. In addition, a minor case is the need of a line feed in order to print the error message on a line of its own seems desirable. Best regards, Mats Erik Andersson
On Thu, Nov 27, 2014 at 7:28 AM, Mats Erik Andersson <bsd@gisladisker.se> wrote: > I would like to improve error recovery of initdb when the > password file is empty. The present code declares "Error 0" > as the cause of failure. It suffices to use ferrer() since > fgets() returns NULL also at a premature EOF. > > In addition, a minor case is the need of a line feed in > order to print the error message on a line of its own > seems desirable. > > Best regards, > Mats Erik Andersson Please add your patch here so that it doesn't get forgotten about: https://commitfest.postgresql.org/action/commitfest_view/open Also, note that the PostgreSQL project prefers for patches to be attached rather than inline, as mailers have a tendency to mangle them. Thanks, -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
On 11/27/2014 02:28 PM, Mats Erik Andersson wrote: > Hello there, > > I would like to improve error recovery of initdb when the > password file is empty. The present code declares "Error 0" > as the cause of failure. It suffices to use ferrer() since > fgets() returns NULL also at a premature EOF. Thanks, committed. > In addition, a minor case is the need of a line feed in > order to print the error message on a line of its own > seems desirable. Hmm. If you've piped stdout somewhere else, that produces a spurious empty line in stderr: $ bin/initdb -D data-foo > /dev/null initdb: input file "/home/heikki/pgsql.master/share/postgres.bki" does not belong to PostgreSQL 9.5devel Check your installation or specify the correct path using the option -L. initdb: removing data directory "data-foo" I think the newline needs to go to stdout instead. But in any case, that's just one error out of many similar ones that can happen during initdb. If we care enough to fix this, we should fix them all. Not sure it's worth the churn, though, unless you can come up with some kind of a simple wholesale solution, rather than adding fprintf(stdout, "\n") calls to every error condition. - Heikki