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

[PATCH 6/8] grep API: call grep_config() after grep_init()

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 6, 2021, 21:10 UTC
Message-ID
<patch-6.8-933ac853bca-20211106T210711Z-avarab@gmail.com>
In-Reply-To
<cover-0.8-00000000000-20211106T210711Z-avarab@gmail.com>

The grep_init() function used the odd pattern of initializing the passed-in "struct grep_opt" with a statically defined "grep_defaults" struct, which would be modified in-place when we invoked grep_config().

So we effectively (b) initialized config, (a) then defaults, (c) followed by user options. Usually those are ordered as "a", "b" and "c" instead.

As the comments being removed here show the previous behavior needed to be carefully explained as we'd potentially share the populated configuration among different instances of grep_init(). In practice we didn't do that, but now that it can't be a concern anymore let's remove those comments.

See 6ba9bb76e02 (grep: copy struct in one fell swoop, 2020-11-29) and 7687a0541e0 (grep: move the configuration parsing logic to grep.[ch], 2012-10-09) for the commits that added the comments.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 builtin/grep.c |  4 ++--
 builtin/log.c  | 13 +++++++++++--
 grep.c         | 39 +++------------------------------------
 grep.h         | 21 +++++++++++++++++++++
 4 files changed, 37 insertions(+), 40 deletions(-)
diff --git a/builtin/grep.c b/builtin/grep.c
index 960c7aac123..7f95f44e948 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -288,7 +288,7 @@ static int wait_all(void)
 static int grep_cmd_config(const char *var, const char *value, void *cb)
 {
 	int st = grep_config(var, value, cb);
-	if (git_color_default_config(var, value, cb) < 0)
+	if (git_color_default_config(var, value, NULL) < 0)
 		st = -1;
 
 	if (!strcmp(var, "grep.threads")) {
@@ -969,8 +969,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
 		OPT_END()
 	};
 
-	git_config(grep_cmd_config, NULL);
 	grep_init(&opt, the_repository);
+	git_config(grep_cmd_config, &opt);
 	opt.caller_priv = &opt_cmd;
 
 	/*
diff --git a/builtin/log.c b/builtin/log.c
index f75d87e8d7f..bfddacdfa6c 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -505,8 +505,6 @@ static int git_log_config(const char *var, const char *value, void *cb)
 		return 0;
 	}
 
-	if (grep_config(var, value, cb) < 0)
-		return -1;
 	if (git_gpg_config(var, value, cb) < 0)
 		return -1;
 	return git_diff_ui_config(var, value, cb);
@@ -521,6 +519,8 @@ int cmd_whatchanged(int argc, const char **argv, const char *prefix)
 	git_config(git_log_config, NULL);
 
 	repo_init_revisions(the_repository, &rev, prefix);
+	git_config(grep_config, &rev.grep_filter);
+
 	rev.diff = 1;
 	rev.simplify_history = 0;
 	memset(&opt, 0, sizeof(opt));
@@ -635,6 +635,8 @@ int cmd_show(int argc, const char **argv, const char *prefix)
 
 	memset(&match_all, 0, sizeof(match_all));
 	repo_init_revisions(the_repository, &rev, prefix);
+	git_config(grep_config, &rev.grep_filter);
+
 	rev.diff = 1;
 	rev.always_show_header = 1;
 	rev.no_walk = 1;
@@ -718,6 +720,8 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix)
 
 	repo_init_revisions(the_repository, &rev, prefix);
 	init_reflog_walk(&rev.reflog_info);
+	git_config(grep_config, &rev.grep_filter);
+
 	rev.verbose_header = 1;
 	memset(&opt, 0, sizeof(opt));
 	opt.def = "HEAD";
@@ -751,6 +755,8 @@ int cmd_log(int argc, const char **argv, const char *prefix)
 	git_config(git_log_config, NULL);
 
 	repo_init_revisions(the_repository, &rev, prefix);
+	git_config(grep_config, &rev.grep_filter);
+
 	rev.always_show_header = 1;
 	memset(&opt, 0, sizeof(opt));
 	opt.def = "HEAD";
@@ -1833,10 +1839,13 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 	extra_hdr.strdup_strings = 1;
 	extra_to.strdup_strings = 1;
 	extra_cc.strdup_strings = 1;
+
 	init_log_defaults();
 	init_display_notes(&notes_opt);
 	git_config(git_format_config, NULL);
 	repo_init_revisions(the_repository, &rev, prefix);
+	git_config(grep_config, &rev.grep_filter);
+
 	rev.show_notes = show_notes;
 	memcpy(&rev.notes_opt, &notes_opt, sizeof(notes_opt));
 	rev.commit_format = CMIT_FMT_EMAIL;
diff --git a/grep.c b/grep.c
index c9065254aeb..fb3f63c63ef 100644
--- a/grep.c
+++ b/grep.c
@@ -19,27 +19,6 @@ static void std_output(struct grep_opt *opt, const void *buf, size_t size)
 	fwrite(buf, size, 1, stdout);
 }
 
-static struct grep_opt grep_defaults = {
-	.relative = 1,
-	.pathname = 1,
-	.max_depth = -1,
-	.pattern_type_option = GREP_PATTERN_TYPE_UNSPECIFIED,
-	.colors = {
-		[GREP_COLOR_CONTEXT] = "",
-		[GREP_COLOR_FILENAME] = "",
-		[GREP_COLOR_FUNCTION] = "",
-		[GREP_COLOR_LINENO] = "",
-		[GREP_COLOR_COLUMNNO] = "",
-		[GREP_COLOR_MATCH_CONTEXT] = GIT_COLOR_BOLD_RED,
-		[GREP_COLOR_MATCH_SELECTED] = GIT_COLOR_BOLD_RED,
-		[GREP_COLOR_SELECTED] = "",
-		[GREP_COLOR_SEP] = GIT_COLOR_CYAN,
-	},
-	.only_matching = 0,
-	.color = -1,
-	.output = std_output,
-};
-
 static const char *color_grep_slots[] = {
 	[GREP_COLOR_CONTEXT]	    = "context",
 	[GREP_COLOR_FILENAME]	    = "filename",
@@ -75,20 +54,12 @@ define_list_config_array_extra(color_grep_slots, {"match"});
  */
 int grep_config(const char *var, const char *value, void *cb)
 {
-	struct grep_opt *opt = &grep_defaults;
+	struct grep_opt *opt = cb;
 	const char *slot;
 
 	if (userdiff_config(var, value) < 0)
 		return -1;
 
-	/*
-	 * The instance of grep_opt that we set up here is copied by
-	 * grep_init() to be used by each individual invocation.
-	 * When populating a new field of this structure here, be
-	 * sure to think about ownership -- e.g., you might need to
-	 * override the shallow copy in grep_init() with a deep copy.
-	 */
-
 	if (!strcmp(var, "grep.extendedregexp")) {
 		opt->extended_regexp_option = git_config_bool(var, value);
 		return 0;
@@ -134,14 +105,10 @@ int grep_config(const char *var, const char *value, void *cb)
 	return 0;
 }
 
-/*
- * Initialize one instance of grep_opt and copy the
- * default values from the template we read the configuration
- * information in an earlier call to git_config(grep_config).
- */
 void grep_init(struct grep_opt *opt, struct repository *repo)
 {
-	*opt = grep_defaults;
+	struct grep_opt blank = GREP_OPT_INIT;
+	memcpy(opt, &blank, sizeof(*opt));
 
 	opt->repo = repo;
 	opt->pattern_tail = &opt->pattern_list;
diff --git a/grep.h b/grep.h
index 6b923d8599c..30a7dfd3294 100644
--- a/grep.h
+++ b/grep.h
@@ -178,6 +178,27 @@ struct grep_opt {
 	void *output_priv;
 };
 
+#define GREP_OPT_INIT { \
+	.relative = 1, \
+	.pathname = 1, \
+	.max_depth = -1, \
+	.pattern_type_option = GREP_PATTERN_TYPE_UNSPECIFIED, \
+	.colors = { \
+		[GREP_COLOR_CONTEXT] = "", \
+		[GREP_COLOR_FILENAME] = "", \
+		[GREP_COLOR_FUNCTION] = "", \
+		[GREP_COLOR_LINENO] = "", \
+		[GREP_COLOR_COLUMNNO] = "", \
+		[GREP_COLOR_MATCH_CONTEXT] = GIT_COLOR_BOLD_RED, \
+		[GREP_COLOR_MATCH_SELECTED] = GIT_COLOR_BOLD_RED, \
+		[GREP_COLOR_SELECTED] = "", \
+		[GREP_COLOR_SEP] = GIT_COLOR_CYAN, \
+	}, \
+	.only_matching = 0, \
+	.color = -1, \
+	.output = std_output, \
+}
+
 int grep_config(const char *var, const char *value, void *);
 void grep_init(struct grep_opt *, struct repository *repo);
 void grep_commit_pattern_type(enum grep_pattern_type, struct grep_opt *opt);
-- 
2.34.0.rc1.741.gab7bfd97031
Previous: Ævar Arnfjörð BjarmasonNext: Taylor Blau
Message 12 of 151 in “grep: simplify & delete code by changing obscure cfg variable behavior”
  1. 0/8 grep: simplify & delete code by changing obscure cfg variable behaviorÆvar Arnfjörð Bjarmason, Nov 6, 2021
  2. 1/8 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Nov 6, 2021
  3. 2/8 git.c & grep.c: assert that "prefix" is NULL or non-zero stringÆvar Arnfjörð Bjarmason, Nov 6, 2021
  4. Taylor BlauNov 8, 2021
  5. 3/8 grep: remove unused "prefix_length" memberÆvar Arnfjörð Bjarmason, Nov 6, 2021
  6. Taylor BlauNov 8, 2021
  7. 4/8 grep.c: move "prefix" out of "struct grep_opt"Ævar Arnfjörð Bjarmason, Nov 6, 2021
  8. Taylor BlauNov 8, 2021
  9. Ævar Arnfjörð BjarmasonNov 9, 2021
  10. Taylor BlauNov 10, 2021
  11. 5/8 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Nov 6, 2021
  12. 6/8 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Nov 6, 2021
  13. Taylor BlauNov 8, 2021
  14. Ævar Arnfjörð BjarmasonNov 9, 2021
  15. Taylor BlauNov 10, 2021
  16. 7/8 grep: simplify config parsing, change grep.<rx config> interactionÆvar Arnfjörð Bjarmason, Nov 6, 2021
  17. Taylor BlauNov 8, 2021
  18. Ævar Arnfjörð BjarmasonNov 9, 2021
  19. Taylor BlauNov 10, 2021
  20. 8/8 grep: make "extendedRegexp=true" the same as "patternType=extended"Ævar Arnfjörð Bjarmason, Nov 6, 2021
  21. 0/8 grep: simplify & delete code by changing obscure cfg variable behaviorÆvar Arnfjörð Bjarmason, Nov 10, 2021
  22. 1/8 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Nov 10, 2021
  23. Junio C HamanoNov 12, 2021
  24. 2/8 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Nov 10, 2021
  25. Junio C HamanoNov 12, 2021
  26. 3/8 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Nov 10, 2021
  27. Junio C HamanoNov 12, 2021
  28. 4/8 grep docs: de-duplicate configuration sectionsÆvar Arnfjörð Bjarmason, Nov 10, 2021
  29. Junio C HamanoNov 12, 2021
  30. 5/8 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Nov 10, 2021
  31. Junio C HamanoNov 12, 2021
  32. 6/8 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Nov 10, 2021
  33. Junio C HamanoNov 12, 2021
  34. 7/8 grep: simplify config parsing, change grep.<rx config> interactionÆvar Arnfjörð Bjarmason, Nov 10, 2021
  35. Junio C HamanoNov 12, 2021
  36. Ævar Arnfjörð BjarmasonNov 13, 2021
  37. 8/8 grep: make "extendedRegexp=true" the same as "patternType=extended"Ævar Arnfjörð Bjarmason, Nov 10, 2021
  38. Junio C HamanoNov 12, 2021
  39. Taylor BlauNov 10, 2021
  40. 0/7 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Nov 29, 2021
  41. 1/7 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Nov 29, 2021
  42. 2/7 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Nov 29, 2021
  43. Tests in t4202 are aborted early, was: Re: [PATCH v3 2/7] logFabian Stelzer, Mar 4, 2022
  44. log tests: fix "abort tests early" regression in ff37a60c369Ævar Arnfjörð Bjarmason, Mar 4, 2022
  45. 4/7 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Nov 29, 2021
  46. 3/7 grep tests: add missing "grep.patternType" config testÆvar Arnfjörð Bjarmason, Nov 29, 2021
  47. Junio C HamanoNov 29, 2021
  48. Junio C HamanoDec 3, 2021
  49. 6/7 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Nov 29, 2021
  50. 5/7 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Nov 29, 2021
  51. 7/7 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Nov 29, 2021
  52. Junio C HamanoNov 29, 2021
  53. Junio C HamanoNov 29, 2021
  54. 0/7 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Dec 3, 2021
  55. 1/7 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Dec 3, 2021
  56. 2/7 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Dec 3, 2021
  57. 3/7 grep tests: add missing "grep.patternType" config testÆvar Arnfjörð Bjarmason, Dec 3, 2021
  58. 4/7 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Dec 3, 2021
  59. 5/7 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Dec 3, 2021
  60. 6/7 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Dec 3, 2021
  61. 7/7 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Dec 3, 2021
  62. 0/7 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Dec 22, 2021
  63. 1/7 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Dec 22, 2021
  64. 2/7 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Dec 22, 2021
  65. 3/7 grep tests: add missing "grep.patternType" config testÆvar Arnfjörð Bjarmason, Dec 22, 2021
  66. Junio C HamanoDec 23, 2021
  67. Re* [PATCH v5 3/7] grep tests: add missing "grep.patternType" config testJunio C Hamano, Dec 25, 2021
  68. grep: allow scripts to ignore configured pattern typeJunio C Hamano, Dec 25, 2021
  69. Ævar Arnfjörð BjarmasonDec 26, 2021
  70. Junio C HamanoDec 25, 2021
  71. 4/7 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Dec 22, 2021
  72. 5/7 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Dec 22, 2021
  73. 6/7 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Dec 22, 2021
  74. 7/7 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Dec 22, 2021
  75. Junio C HamanoDec 23, 2021
  76. Junio C HamanoDec 23, 2021
  77. 0/7 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Dec 26, 2021
  78. 1/7 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Dec 26, 2021
  79. 2/7 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Dec 26, 2021
  80. 3/7 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Dec 26, 2021
  81. 4/7 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Dec 26, 2021
  82. 5/7 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Dec 26, 2021
  83. 6/7 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Dec 26, 2021
  84. 7/7 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Dec 26, 2021
  85. Junio C HamanoDec 27, 2021
  86. Junio C HamanoDec 27, 2021
  87. 00/10 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Dec 28, 2021
  88. 01/10 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Dec 28, 2021
  89. 02/10 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Dec 28, 2021
  90. 03/10 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Dec 28, 2021
  91. 04/10 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Dec 28, 2021
  92. 05/10 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Dec 28, 2021
  93. 06/10 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Dec 28, 2021
  94. 10/10 grep.[ch]: remove GREP_PATTERN_TYPE_UNSPECIFIEDÆvar Arnfjörð Bjarmason, Dec 28, 2021
  95. 09/10 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Dec 28, 2021
  96. 07/10 grep.h: make "grep_opt.pattern_type_option" use its enumÆvar Arnfjörð Bjarmason, Dec 28, 2021
  97. 08/10 grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"Ævar Arnfjörð Bjarmason, Dec 28, 2021
  98. 00/10 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Jan 18, 2022
  99. 01/10 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Jan 18, 2022
  100. 02/10 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Jan 18, 2022
  101. 03/10 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Jan 18, 2022
  102. 04/10 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Jan 18, 2022
  103. 05/10 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Jan 18, 2022
  104. 06/10 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Jan 18, 2022
  105. 07/10 grep.h: make "grep_opt.pattern_type_option" use its enumÆvar Arnfjörð Bjarmason, Jan 18, 2022
  106. 08/10 grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"Ævar Arnfjörð Bjarmason, Jan 18, 2022
  107. 10/10 grep.[ch]: remove GREP_PATTERN_TYPE_UNSPECIFIEDÆvar Arnfjörð Bjarmason, Jan 18, 2022
  108. 09/10 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Jan 18, 2022
  109. Junio C HamanoJan 18, 2022
  110. Junio C HamanoJan 18, 2022
  111. Ævar Arnfjörð BjarmasonJan 19, 2022
  112. Junio C HamanoJan 19, 2022
  113. Ævar Arnfjörð BjarmasonJan 19, 2022
  114. 0/9 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Jan 27, 2022
  115. 1/9 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Jan 27, 2022
  116. 2/9 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Jan 27, 2022
  117. 3/9 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Jan 27, 2022
  118. 4/9 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Jan 27, 2022
  119. 5/9 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Jan 27, 2022
  120. 6/9 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Jan 27, 2022
  121. 7/9 grep.h: make "grep_opt.pattern_type_option" use its enumÆvar Arnfjörð Bjarmason, Jan 27, 2022
  122. 9/9 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Jan 27, 2022
  123. Junio C HamanoJan 27, 2022
  124. Junio C HamanoJan 27, 2022
  125. Junio C HamanoJan 27, 2022
  126. 8/9 grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"Ævar Arnfjörð Bjarmason, Jan 27, 2022
  127. 0/9 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Feb 4, 2022
  128. 1/9 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Feb 4, 2022
  129. 3/9 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Feb 4, 2022
  130. Junio C HamanoFeb 4, 2022
  131. Junio C HamanoFeb 4, 2022
  132. 2/9 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Feb 4, 2022
  133. 5/9 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Feb 4, 2022
  134. 4/9 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Feb 4, 2022
  135. 7/9 grep.h: make "grep_opt.pattern_type_option" use its enumÆvar Arnfjörð Bjarmason, Feb 4, 2022
  136. 8/9 grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"Ævar Arnfjörð Bjarmason, Feb 4, 2022
  137. 6/9 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Feb 4, 2022
  138. 9/9 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Feb 4, 2022
  139. Junio C HamanoFeb 4, 2022
  140. 00/10 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Feb 16, 2022
  141. 01/10 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Feb 16, 2022
  142. 02/10 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Feb 16, 2022
  143. 05/10 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Feb 16, 2022
  144. 03/10 grep tests: create a helper function for "BRE" or "ERE"Ævar Arnfjörð Bjarmason, Feb 16, 2022
  145. 04/10 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Feb 16, 2022
  146. 06/10 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Feb 16, 2022
  147. 08/10 grep.h: make "grep_opt.pattern_type_option" use its enumÆvar Arnfjörð Bjarmason, Feb 16, 2022
  148. 07/10 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Feb 16, 2022
  149. 09/10 grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"Ævar Arnfjörð Bjarmason, Feb 16, 2022
  150. 10/10 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Feb 16, 2022
  151. Junio C HamanoFeb 16, 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.