public inbox for [email protected]  
help / color / mirror / Atom feed
From: Nathan Bossart <[email protected]>
To: Chao Li <[email protected]>
Cc: Rahila Syed <[email protected]>
Cc: Robert Haas <[email protected]>
Cc: PostgreSQL Hackers <[email protected]>
Subject: pgindent versus struct members and typedefs
Date: Tue, 2 Dec 2025 16:00:51 -0600
Message-ID: <aS9hkwnkWf3dZIA_@nathan> (raw)

On Mon, Dec 01, 2025 at 05:04:23PM -0600, Nathan Bossart wrote:
> On Tue, Dec 02, 2025 at 05:35:34AM +0800, Chao Li wrote:
>> ```
>> +		else if (entry->type == DSMR_ENTRY_TYPE_DSH &&
>> +				 entry->dsh.dsa_handle !=DSA_HANDLE_INVALID)
>> ```
>> 
>> Missing a white space after !=.
> 
> I agree, but for some reason, pgindent insists on removing that space.  I'm
> leaving that for another thread.

So, this seems to have something to do with the struct member having the
same name as a typedef.  If I rename the member, pgindent adds the space as
expected.  Interestingly, changing the != to a == also fixes the spacing.
There are a couple of other examples in the code:

src/backend/storage/ipc/dsm_registry.c:				 entry->dsh.dsa_handle !=DSA_HANDLE_INVALID)
src/backend/replication/logical/logicalfuncs.c:			ctx->options.output_type !=OUTPUT_PLUGIN_TEXTUAL_OUTPUT)
src/bin/pg_basebackup/pg_basebackup.c:	if (state.manifest_file !=NULL)
src/bin/pg_basebackup/pg_basebackup.c:					state->manifest_file !=NULL)
src/bin/pg_basebackup/pg_basebackup.c:				else if (state->manifest_file !=NULL)

I used the following command to find these:

	grep -E "!=[A-Za-z]" ./* -rI

AFAICT this is a special case of the note added to pgindent's README by
commit c4133ec:

	pgindent will mangle both declaration and definition of a C function whose
	name matches a typedef.  Currently the best workaround is to choose
	non-conflicting names.

I tried to fix pgindent for a few, but the code is basically impenetrable.
I didn't find any fixes upstream [0], either.  As noted above, we could
also fix it by avoiding the naming conflicts.  However, I can't imagine
that's worth the churn, and I've already spent way too much time on this,
so IMHO the best thing to do here is nothing.

[0] https://github.com/freebsd/freebsd-src/tree/main/usr.bin/indent

-- 
nathan





view thread (22+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected], [email protected]
  Subject: Re: pgindent versus struct members and typedefs
  In-Reply-To: <aS9hkwnkWf3dZIA_@nathan>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox