Re: BUG #8139: initdb: Misleading error message when current user not in /etc/passwd

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: nicolas(at)marchildon(dot)net
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #8139: initdb: Misleading error message when current user not in /etc/passwd
Date: 2013-05-07 18:10:28
Message-ID: 296.1367950228@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

nicolas(at)marchildon(dot)net writes:
> "initdb: could not obtain information about current user: Success"

> The misleading part is the "Success". This comes from errno:

> pw = getpwuid(geteuid());
> if (!pw)
> {
> fprintf(stderr,
> _("%s: could not obtain information about current
> user: %s\n"),
> progname, strerror(errno));
> exit(1);
> }

> The man page says:

> RETURN VALUE
> The getpwnam() and getpwuid() functions return a pointer to a
> passwd
> structure, or NULL if the matching entry is not found or an
> error
> occurs. If an error occurs, errno is set appropriately. If one
> wants
> to check errno after the call, it should be set to zero before
> the
> call.

AFAICS, getpwuid is not honoring its specification here: it failed to
set errno. I don't see that suppressing the strerror result would add
anything much.

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Alvaro Herrera 2013-05-07 18:19:05 Re: BUG #8139: initdb: Misleading error message when current user not in /etc/passwd
Previous Message nicolas 2013-05-07 15:42:51 BUG #8139: initdb: Misleading error message when current user not in /etc/passwd