Re: replace strtok()

Alexander Law <exclusion@gmail.com>

From: Alexander Lakhin <exclusion@gmail.com>
To: Ranier Vilela <ranier.vf@gmail.com>, Peter Eisentraut <peter@eisentraut.org>
Cc: David Steele <david@pgmasters.net>, Michael Paquier <michael@paquier.xyz>, Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-10-17T10:30:00Z
Lists: pgsql-hackers
Hello Ranier,

16.10.2024 14:14, Ranier Vilela wrote:
> Em qua., 16 de out. de 2024 às 04:45, Peter Eisentraut <peter@eisentraut.org> escreveu:
>
>
>     This wouldn't fix anything, I think.  If colors is NULL, then strsep()
>     already returns NULL, so the added code does nothing.
>
> If *colors* is NULL, then the delimiter is not found and strsep will return the entire
> string /*stringp, so the token becomes invalid/.
>
> IMO, I think it must be necessary to check if *colors* are NULL too.
>

I've tested your proposed change and what I'm seeing is that:
PG_COLOR=always PG_COLORS="error=01;31" initdb
doesn't color the "error" word:

while with only Peter's patch it works as expected:


Does your change work differently for you?

Best regards,
Alexander

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()