Re: replace strtok()

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Ranier Vilela <ranier.vf@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-06-22T15:04:11Z
Lists: pgsql-hackers
On 18.06.24 13:43, Ranier Vilela wrote:
> But I would like to see more const char * where this is possible.
> 
> For example, in pg_locale.c
> IMO, the token variable can be const char *.
> 
> At least strchr expects a const char * as the first parameter.

This would not be future-proof.  In C23, if you pass a const char * into 
strchr(), you also get a const char * as a result.  And in this case, we 
do write into the area pointed to by the result.  So with a const char 
*token, this whole thing would not compile cleanly under C23.

> I found another implementation of strsep, it seems lighter to me.
> I will attach it for consideration, however, I have not done any testing.

Yeah, surely there are many possible implementations.  I'm thinking, 
since we already took other str*() functions from OpenBSD, it makes 
sense to do this here as well, so we have only one source to deal with.




Commits

  1. Fix memory leaks from incorrect strsep() uses

  2. Fix strsep() use for SCRAM secrets parsing

  3. Replace remaining strtok() with strtok_r()

  4. Windows replacement for strtok_r()

  5. Replace some strtok() with strsep()

  6. Add port/ replacement for strsep()