git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 08/12] userdiff.c: use designated initializers for "struct userdiff_driver"

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Feb 24, 2022, 09:33 UTC
Message-ID
<patch-08.12-9becff4bae7-20220224T092805Z-avarab@gmail.com>
In-Reply-To
<cover-00.12-00000000000-20220224T092805Z-avarab@gmail.com>

Change the "struct userdiff_driver" assignmentns to use designated initializers, but let's keep the PATTERNS() and IPATTERN() convenience macros to avoid churn, but have them defined in terms of designated initializers.

For the "driver_true" and "driver_false" let's have the compiler implicitly initialize most of the fields, but let's leave a redundant ".binary = 0" for "driver_true" to make it obvious that it's the opposite of the the ".binary = 1" for "driver_false".

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 userdiff.c | 36 ++++++++++++++++++++++--------------
 1 file changed, 22 insertions(+), 14 deletions(-)
diff --git a/userdiff.c b/userdiff.c
index 8578cb0d12e..2d9eb99bf28 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -7,12 +7,24 @@ static struct userdiff_driver *drivers;
 static int ndrivers;
 static int drivers_alloc;
 
-#define PATTERNS(name, pattern, word_regex)			\
-	{ name, NULL, -1, { pattern, REG_EXTENDED },		\
-	  word_regex "|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+" }
-#define IPATTERN(name, pattern, word_regex)			\
-	{ name, NULL, -1, { pattern, REG_EXTENDED | REG_ICASE }, \
-	  word_regex "|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+" }
+#define PATTERNS(lang, rx, wrx) { \
+	.name = lang, \
+	.binary = -1, \
+	.funcname = { \
+		.pattern = rx, \
+		.cflags = REG_EXTENDED, \
+	}, \
+	.word_regex = wrx "|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+", \
+}
+#define IPATTERN(lang, rx, wrx) { \
+	.name = lang, \
+	.binary = -1, \
+	.funcname = { \
+		.pattern = rx, \
+		.cflags = REG_EXTENDED | REG_ICASE, \
+	}, \
+	.word_regex = wrx "|[^[:space:]]|[\xc0-\xff][\x80-\xbf]+", \
+}
 
 /*
  * Built-in drivers for various languages, sorted by their names
@@ -275,17 +287,13 @@ PATTERNS("tex", "^(\\\\((sub)*section|chapter|part)\\*{0,1}\\{.*)$",
 #undef IPATTERN
 
 static struct userdiff_driver driver_true = {
-	"diff=true",
-	NULL,
-	0,
-	{ NULL, 0 }
+	.name = "diff=true",
+	.binary = 0,
 };
 
 static struct userdiff_driver driver_false = {
-	"!diff",
-	NULL,
-	1,
-	{ NULL, 0 }
+	.name = "!diff",
+	.binary = 1,
 };
 
 struct find_by_namelen_data {
-- 
2.35.1.1157.g524e2d5a0db
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 9 of 17 in “c99: use more designated initializers”
  1. 00/12 c99: use more designated initializersÆvar Arnfjörð Bjarmason, Feb 24, 2022
  2. 01/12 imap-send.c: use designated initializers for "struct imap_server_conf"Ævar Arnfjörð Bjarmason, Feb 24, 2022
  3. 02/12 refs: use designated initializers for "struct ref_storage_be"Ævar Arnfjörð Bjarmason, Feb 24, 2022
  4. 03/12 refs: use designated initializers for "struct ref_iterator_vtable"Ævar Arnfjörð Bjarmason, Feb 24, 2022
  5. 04/12 trace2: use designated initializers for "struct tr2_tgt"Ævar Arnfjörð Bjarmason, Feb 24, 2022
  6. 05/12 trace2: use designated initializers for "struct tr2_dst"Ævar Arnfjörð Bjarmason, Feb 24, 2022
  7. 06/12 object-file: use designated initializers for "struct git_hash_algo"Ævar Arnfjörð Bjarmason, Feb 24, 2022
  8. 07/12 archive-*.c: use designated initializers for "struct archiver"Ævar Arnfjörð Bjarmason, Feb 24, 2022
  9. 08/12 userdiff.c: use designated initializers for "struct userdiff_driver"Ævar Arnfjörð Bjarmason, Feb 24, 2022
  10. 09/12 convert.c: use designated initializers for "struct stream_filter*"Ævar Arnfjörð Bjarmason, Feb 24, 2022
  11. 10/12 refspec.c: use designated initializers for "struct refspec_item"Ævar Arnfjörð Bjarmason, Feb 24, 2022
  12. 11/12 misc *.c: use designated initializers for struct assignmentsÆvar Arnfjörð Bjarmason, Feb 24, 2022
  13. 12/12 misc *.c: use designated initializers for "partial" struct assignmentsÆvar Arnfjörð Bjarmason, Feb 24, 2022
  14. Johannes SchindelinFeb 24, 2022
  15. Junio C HamanoFeb 24, 2022
  16. Ævar Arnfjörð BjarmasonFeb 24, 2022
  17. Junio C HamanoFeb 25, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.