All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Senna Tschudin <peter.senna@linux.intel.com>
To: Lucas De Marchi <lucas.demarchi@intel.com>,
	igt-dev@lists.freedesktop.org
Subject: Re: [CI i-g-t 08/10] runner/settings: Add helpers to serialize/parse array
Date: Sat, 8 Feb 2025 14:08:26 +0100	[thread overview]
Message-ID: <4cbd97a1-c354-415a-8d49-816d4850398b@linux.intel.com> (raw)
In-Reply-To: <20250207231039.2883195-10-lucas.demarchi@intel.com>



On 08.02.2025 00:09, Lucas De Marchi wrote:
> Prepare parser/serialize to handle arrays.
> 

Tested-by: Peter Senna Tschudin <peter.senna@linux.intel.com>
Reviewed-by: Peter Senna Tschudin <peter.senna@linux.intel.com>
> Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> ---
>  runner/settings.c | 28 ++++++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
> 
> diff --git a/runner/settings.c b/runner/settings.c
> index 97b62ed36..1da005806 100644
> --- a/runner/settings.c
> +++ b/runner/settings.c
> @@ -1127,6 +1127,15 @@ static ssize_t unescape_str(char *buf, size_t *n_src)
>  			fputc('\n', f);		\
>  		}				\
>  	} while (0)
> +#define SERIALIZE_STR_ARRAY(f, s, name, name_len)		\
> +	do {							\
> +		SERIALIZE_INT(f, s, name_len);			\
> +		for (int _i = 0; _i < s->name_len; _i++) {	\
> +			fprintf(f, #name "[%d] : ", _i);	\
> +			escape_str(s->name[_i], f);		\
> +			fputc('\n', f);				\
> +		}						\
> +	} while (0)
>  bool serialize_settings(struct settings *settings)
>  {
>  	FILE *f;
> @@ -1223,6 +1232,7 @@ bool serialize_settings(struct settings *settings)
>  	close(dirfd);
>  	return true;
>  }
> +#undef SERIALIZE_STR_ARRAY
>  #undef SERIALIZE_STR
>  #undef SERIALIZE_UL
>  #undef SERIALIZE_INT
> @@ -1260,9 +1270,25 @@ static char *parse_str(char **val)
>  		s->field = _f(val);		\
>  		goto cleanup;			\
>  	}
> +#define PARSE_LINE_ARRAY(s, name, val, field, field_len, _f)		\
> +	do {								\
> +		int idx;						\
> +		if (!strcmp(name, #field_len)) {			\
> +			s->field_len = parse_int(val);			\
> +			s->field = calloc(s->field_len,			\
> +					  sizeof(*s->field));		\
> +			goto cleanup;					\
> +		} else if (sscanf(name, #field "[%u]", &idx) == 1 &&	\
> +			   idx < s->field_len) {			\
> +			s->field[idx] = _f(val);			\
> +			goto cleanup;					\
> +		}							\
> +	} while (0)
>  #define PARSE_INT(s, name, val, field) PARSE_LINE(s, name, &val, field, parse_int)
>  #define PARSE_UL(s, name, val, field)  PARSE_LINE(s, name, &val, field, parse_ul)
>  #define PARSE_STR(s, name, val, field) PARSE_LINE(s, name, &val, field, parse_str)
> +#define PARSE_STR_ARRAY(s, name, val, field, field_len) \
> +	PARSE_LINE_ARRAY(s, name, &val, field, field_len, parse_str)
>  bool read_settings_from_file(struct settings *settings, FILE *f)
>  {
>  	char *name = NULL, *val = NULL;
> @@ -1315,9 +1341,11 @@ cleanup:
>  
>  	return true;
>  }
> +#undef PARSE_STR_ARRAY
>  #undef PARSE_STR
>  #undef PARSE_UL
>  #undef PARSE_INT
> +#undef PARSE_LINE_ARRAY
>  #undef PARSE_LINE
>  
>  /**


  reply	other threads:[~2025-02-08 13:08 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-07 23:09 [CI i-g-t 00/10] Add igt_runner's cmdline to results Lucas De Marchi
2025-02-07 23:09 ` [CI i-g-t 01/10] runner/settings: Fix code_coverage_script leak Lucas De Marchi
2025-02-07 23:09 ` [CI i-g-t 02/10] runner: Free settings at the end Lucas De Marchi
2025-02-07 23:09 ` [CI i-g-t 03/10] runner/settings: Deduplicate cleanup Lucas De Marchi
2025-02-07 23:09 ` [CI i-g-t 04/10] runner/settings: Use wrapper macros for each type Lucas De Marchi
2025-02-08 13:07   ` Peter Senna Tschudin
2025-02-07 23:09 ` [CI i-g-t 05/10] runner/settings: Match serialization to parse Lucas De Marchi
2025-02-08 13:07   ` Peter Senna Tschudin
2025-02-07 23:09 ` [CI i-g-t 06/10] runner/settings: Drop extra strdup Lucas De Marchi
2025-02-07 23:09 ` [CI i-g-t 07/10] runner: Fix use of newline on arguments Lucas De Marchi
2025-02-08 13:08   ` Peter Senna Tschudin
2025-02-07 23:09 ` [CI i-g-t 08/10] runner/settings: Add helpers to serialize/parse array Lucas De Marchi
2025-02-08 13:08   ` Peter Senna Tschudin [this message]
2025-02-07 23:09 ` [CI i-g-t 09/10] runner/settings: Serialize command line Lucas De Marchi
2025-02-08 13:08   ` Peter Senna Tschudin
2025-02-07 23:09 ` [CI i-g-t 10/10] runner/resultgen: Add cmdline to results.json Lucas De Marchi
2025-02-08  3:47 ` ✓ Xe.CI.BAT: success for Add igt_runner's cmdline to results (rev6) Patchwork
2025-02-08  4:00 ` ✓ i915.CI.BAT: " Patchwork
2025-02-08 13:10 ` [CI i-g-t 00/10] Add igt_runner's cmdline to results Peter Senna Tschudin
2025-02-08 19:39 ` ✗ i915.CI.Full: failure for Add igt_runner's cmdline to results (rev6) Patchwork
2025-02-08 21:19 ` ✗ Xe.CI.Full: " Patchwork
2025-02-10 19:27 ` [CI i-g-t 00/10] Add igt_runner's cmdline to results Lucas De Marchi

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=4cbd97a1-c354-415a-8d49-816d4850398b@linux.intel.com \
    --to=peter.senna@linux.intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=lucas.demarchi@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.