Re: pg_check_dir comments and implementation mismatch

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Noah Misch <noah(at)leadboat(dot)com>, Marco Nenciarini <marco(dot)nenciarini(at)2ndquadrant(dot)it>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pg_check_dir comments and implementation mismatch
Date: 2015-02-23 00:57:41
Message-ID: 23007.1424653061@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Robert Haas <robertmhaas(at)gmail(dot)com> writes:
> On Fri, Feb 20, 2015 at 12:59 AM, Noah Misch <noah(at)leadboat(dot)com> wrote:
>> On Mon, Feb 02, 2015 at 03:48:33PM -0500, Robert Haas wrote:
>>> If readir() fails and closedir() succeeds, the return will be -1 but
>>> errno will be 0.

>> Out of curiosity, have you seen a closedir() implementation behave that way?
>> It would violate C99 ("The value of errno is zero at program startup, but is
>> never set to zero by any library function.") and POSIX.

> No. Good point, I didn't think about that. I think this way is safer, though.

While the spec forbids library functions from setting errno to zero, there
is no restriction on them changing errno in other ways despite returning
success; their exit-time value of errno is only well-defined if they fail.
So we do need to preserve errno explicitly across closedir(), or we may
report the wrong failure from readdir().

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2015-02-23 01:20:44 Re: restrict global access to be readonly
Previous Message Tom Lane 2015-02-23 00:53:33 Re: Precedence of standard comparison operators