public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: Andrey Albershteyn <aalbersh@redhat.com>
Cc: cem@kernel.org, linux-xfs@vger.kernel.org, hch@infradead.org
Subject: Re: [PATCH 2/2] xfs_db: add helper for flist_find_type for clearer field matching
Date: Tue, 16 Apr 2024 13:53:48 -0700	[thread overview]
Message-ID: <20240416205348.GE11948@frogsfrogsfrogs> (raw)
In-Reply-To: <20240416202841.725706-4-aalbersh@redhat.com>

On Tue, Apr 16, 2024 at 10:28:42PM +0200, Andrey Albershteyn wrote:
> Make flist_find_type() more readable by unloading field type
> matching to the helper.
> 
> Signed-off-by: Andrey Albershteyn <aalbersh@redhat.com>
> ---
>  db/flist.c | 59 ++++++++++++++++++++++++++++++++++--------------------
>  1 file changed, 37 insertions(+), 22 deletions(-)
> 
> diff --git a/db/flist.c b/db/flist.c
> index 0a6cc5fcee43..18052a744a65 100644
> --- a/db/flist.c
> +++ b/db/flist.c
> @@ -400,6 +400,40 @@ flist_split(
>  	return v;
>  }
>  
> +flist_t *
> +flist_field_match(

Is this function going to be used outside of this module, or should it
be declared static?

> +	const field_t		*field,
> +	fldt_t			type,
> +	void			*obj,
> +	int			startoff)
> +{
> +	flist_t			*fl;
> +	int			count;
> +	const ftattr_t		*fa;
> +
> +	fl = flist_make(field->name);
> +	fl->fld = field;
> +	if (field->ftyp == type)
> +		return fl;
> +	count = fcount(field, obj, startoff);
> +	if (!count)
> +		goto out;
> +	fa = &ftattrtab[field->ftyp];
> +	if (fa->subfld) {

You could do:

	if (!fa->subfld)
		goto out;

	nfl = flist_find_ftyp(...);

to reduce the indenting here.  But I think you were trying to make
before and after as identical as possible, right?

> +		flist_t *nfl;
> +
> +		nfl = flist_find_ftyp(fa->subfld, type, obj, startoff);
> +		if (nfl) {
> +			fl->child = nfl;
> +			return fl;
> +		}
> +	}
> +
> +out:
> +	flist_free(fl);
> +	return NULL;
> +}
> +
>  /*
>   * Given a set of fields, scan for a field of the given type.
>   * Return an flist leading to the first found field
> @@ -413,33 +447,14 @@ flist_find_ftyp(
>  	void		*obj,
>  	int		startoff)
>  {
> -	flist_t	*fl;
>  	const field_t	*f;
> -	int		count;
> -	const ftattr_t  *fa;
> +	flist_t		*fl;
>  
>  	for (f = fields; f->name; f++) {
> -		fl = flist_make(f->name);
> -		fl->fld = f;
> -		if (f->ftyp == type)
> +		if ((fl = flist_field_match(f, type, obj, startoff)) != NULL)
>  			return fl;

Normally these days we expand assign-and-check when not in a loop
control test:

		fl = flist_field_match(...);
		if (fl)
			return fl;

But those last two comments merely reflect my style preference; the
question I care most about is the one about the static attribute.

--D

> -		count = fcount(f, obj, startoff);
> -		if (!count) {
> -			flist_free(fl);
> -			continue;
> -		}
> -		fa = &ftattrtab[f->ftyp];
> -		if (fa->subfld) {
> -			flist_t *nfl;
> -
> -			nfl = flist_find_ftyp(fa->subfld, type, obj, startoff);
> -			if (nfl) {
> -				fl->child = nfl;
> -				return fl;
> -			}
> -		}
> -		flist_free(fl);
>  	}
> +
>  	return NULL;
>  }
>  
> -- 
> 2.42.0
> 
> 

  reply	other threads:[~2024-04-16 20:53 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-16 20:28 [PATCH 0/2] Refactoring from Coverity scan fixes Andrey Albershteyn
2024-04-16 20:28 ` [PATCH 1/2] xfs_fsr: replace atoi() with strtol() Andrey Albershteyn
2024-04-16 20:49   ` Darrick J. Wong
2024-04-16 20:28 ` [PATCH 2/2] xfs_db: add helper for flist_find_type for clearer field matching Andrey Albershteyn
2024-04-16 20:53   ` Darrick J. Wong [this message]
2024-04-17  5:03     ` Christoph Hellwig

Reply instructions:

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

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

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240416205348.GE11948@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=aalbersh@redhat.com \
    --cc=cem@kernel.org \
    --cc=hch@infradead.org \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox