Re: more POSIX 2008 cleanup: strnlen(), rindex()

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Tom Lane <tgl@sss.pgh.pa.us>, Jelte Fennema-Nio <postgres@jeltef.nl>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-01-08T08:38:16Z
Lists: pgsql-hackers
On 03.01.26 18:42, Tom Lane wrote:
> Jelte Fennema-Nio <postgres@jeltef.nl> writes:
>> On Sat, 3 Jan 2026 at 10:52, Peter Eisentraut <peter@eisentraut.org> wrote:
>>> It has previously been established that POSIX 2008 is the baseline for
>>> PostgreSQL code (modulo Windows).  Looking through the POSIX 2008
>>> changes, I found a few more things we can clean up with respect to that.
> 
>> Both changes look sensible to me
> 
> +1.  I also checked the buildfarm and confirm that no animals report
> not having strnlen().

committed

> I'm a little disturbed by the rindex bit, because that's not hoary old
> code: it came in with JIT in v11, only about 8 years ago.  How can we
> prevent similar mistakes in future?

AFAICT, rindex() doesn't exist on Windows, so we only got away with it 
because the JIT code is not compiled under Windows.  So in general this 
should regulate itself.




Commits

  1. Remove use of rindex() function

  2. strnlen() is now required

  3. Add pg_strnlen() a portable implementation of strlen.