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

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #8139: initdb: Misleading error message when current user not in /etc/passwd
Дата
Msg-id 296.1367950228@sss.pgh.pa.us
обсуждение исходный текст
Ответ на BUG #8139: initdb: Misleading error message when current user not in /etc/passwd  (nicolas@marchildon.net)
Ответы Re: BUG #8139: initdb: Misleading error message when current user not in /etc/passwd
Список pgsql-bugs
nicolas@marchildon.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

В списке pgsql-bugs по дате отправления:

Предыдущее
От: nicolas@marchildon.net
Дата:
Сообщение: BUG #8139: initdb: Misleading error message when current user not in /etc/passwd
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: BUG #8139: initdb: Misleading error message when current user not in /etc/passwd