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

Re: [PATCH v2 2/7] string-list: align string_list_split() with its _in_place() counterpart

From
shejialuo <shejialuo@gmail.com>
Date
Aug 1, 2025, 03:55 UTC
Message-ID
<aIw6ojvvDWLPllG7@mbp>
In-Reply-To
<xmqqikj7ogf7.fsf@gitster.g>
On Thu, Jul 31, 2025 at 08:43:24PM -0700, Junio C Hamano wrote:
Show 25 quoted lines
> shejialuo <shejialuo@gmail.com> writes:
> 
> > On Thu, Jul 31, 2025 at 03:46:01PM -0700, Junio C Hamano wrote:
> >> diff --git a/setup.c b/setup.c
> >> index 6f52dab64c..b9f5eb8b51 100644
> >> --- a/setup.c
> >> +++ b/setup.c
> >> @@ -1460,8 +1460,9 @@ static enum discovery_result setup_git_directory_gently_1(struct strbuf *dir,
> >>  
> >>  	if (env_ceiling_dirs) {
> >>  		int empty_entry_found = 0;
> >> +		static const char path_sep[] = { PATH_SEP, '\0' };
> >>  
> >
> > I am a little confused why we need to use `static`? Would this function
> > be called many times?
> 
> I actually am confused why you would want anything other than static
> here.  Writing this way would allow the compiler to realize that the
> array can be prepared at compile time, without need to do anything
> at runtime.  If you made it non static, the runtime code would
> allocate two bytes worth of memory on stack, and stuff these two
> byte values there, each time this block is entered, which would be
> at least once.
> 

Sorry to make you confused. Because there are some other changes where you don't use `static`. That's the main reason why I ask this question.

--- a/t/helper/test-path-utils.c
+++ b/t/helper/test-path-utils.c
@@ -348,6 +348,7 @@ int cmd__path_utils(int argc, const char **argv)
 	if (argc == 4 && !strcmp(argv[1], "longest_ancestor_length")) {
 		int len;
 		struct string_list ceiling_dirs = STRING_LIST_INIT_DUP;
+		const char path_sep[] = { PATH_SEP, '\0' };
 		char *path = xstrdup(argv[2]);

> > And I have a design question: by using "PATH_SEP", we need to convert
> > this character to be string. Should we create a new variable named
> > "PATH_SEP_STR" or whatever to do that?
> 
> Sorry, but I do not understand the question.  You want to see
> something like
> 
> 	#define PATH_SEP_STR "/"
> 
> you mean?  I do not offhand see why anybody would want to do so.
> 

Yes, that's my question. Because I see that we would define `path_sep`
array in many place, so I wonder whether we could use such macro.
Previous: Junio C HamanoNext: Junio C Hamano
Message 16 of 72 in “string_list_split*() updates”
  1. 0/5 string_list_split*() updatesJunio C Hamano, Jul 31, 2025
  2. 1/5 string-list: report programming error with BUGJunio C Hamano, Jul 31, 2025
  3. Eric SunshineJul 31, 2025
  4. Junio C HamanoJul 31, 2025
  5. 2/5 string-list: align string_list_split() with its _in_place() counterpartJunio C Hamano, Jul 31, 2025
  6. Eric SunshineJul 31, 2025
  7. 3/5 string-list: unify string_list_split* functionsJunio C Hamano, Jul 31, 2025
  8. 4/5 string-list: optionally trim string pieces split by string_list_split()Junio C Hamano, Jul 31, 2025
  9. 5/5 diff: simplify parsing of diff.colormovedwsJunio C Hamano, Jul 31, 2025
  10. Eric SunshineJul 31, 2025
  11. 0/7 string_list_split*() updatesJunio C Hamano, Jul 31, 2025
  12. 1/7 string-list: report programming error with BUGJunio C Hamano, Jul 31, 2025
  13. 2/7 string-list: align string_list_split() with its _in_place() counterpartJunio C Hamano, Jul 31, 2025
  14. shejialuoAug 1, 2025
  15. Junio C HamanoAug 1, 2025
  16. shejialuoAug 1, 2025
  17. Junio C HamanoAug 1, 2025
  18. 3/7 string-list: unify string_list_split* functionsJunio C Hamano, Jul 31, 2025
  19. shejialuoAug 1, 2025
  20. 4/7 string-list: optionally trim string pieces split by string_list_split*()Junio C Hamano, Jul 31, 2025
  21. shejialuoAug 1, 2025
  22. Junio C HamanoAug 1, 2025
  23. shejialuoAug 1, 2025
  24. Junio C HamanoAug 1, 2025
  25. shejialuoAug 2, 2025
  26. Patrick SteinhardtAug 1, 2025
  27. Junio C HamanoAug 1, 2025
  28. 5/7 diff: simplify parsing of diff.colormovedwsJunio C Hamano, Jul 31, 2025
  29. Patrick SteinhardtAug 1, 2025
  30. 6/7 string-list: optionally omit empty string pieces in string_list_split*()Junio C Hamano, Jul 31, 2025
  31. Eric SunshineJul 31, 2025
  32. shejialuoAug 1, 2025
  33. Patrick SteinhardtAug 1, 2025
  34. Junio C HamanoAug 1, 2025
  35. 7/7 string-list: split-then-remove-empty can be done while splittingJunio C Hamano, Jul 31, 2025
  36. Patrick SteinhardtAug 1, 2025
  37. 0/7 string_list_split*() updatesJunio C Hamano, Aug 1, 2025
  38. 1/7 string-list: report programming error with BUGJunio C Hamano, Aug 1, 2025
  39. 2/7 string-list: align string_list_split() with its _in_place() counterpartJunio C Hamano, Aug 1, 2025
  40. Jeff KingAug 2, 2025
  41. Junio C HamanoAug 2, 2025
  42. Jeff KingAug 2, 2025
  43. 3/7 string-list: unify string_list_split* functionsJunio C Hamano, Aug 1, 2025
  44. 4/7 string-list: optionally trim string pieces split by string_list_split*()Junio C Hamano, Aug 1, 2025
  45. Jeff KingAug 2, 2025
  46. Junio C HamanoAug 2, 2025
  47. Jeff KingAug 2, 2025
  48. 5/7 diff: simplify parsing of diff.colormovedwsJunio C Hamano, Aug 1, 2025
  49. 6/7 string-list: optionally omit empty string pieces in string_list_split*()Junio C Hamano, Aug 1, 2025
  50. 7/7 string-list: split-then-remove-empty can be done while splittingJunio C Hamano, Aug 1, 2025
  51. 0/7 string_list_split*() updatesJunio C Hamano, Aug 3, 2025
  52. 1/7 string-list: report programming error with BUGJunio C Hamano, Aug 3, 2025
  53. 2/7 string-list: align string_list_split() with its _in_place() counterpartJunio C Hamano, Aug 3, 2025
  54. 3/7 string-list: unify string_list_split* functionsJunio C Hamano, Aug 3, 2025
  55. 4/7 string-list: optionally trim string pieces split by string_list_split*()Junio C Hamano, Aug 3, 2025
  56. 5/7 diff: simplify parsing of diff.colormovedwsJunio C Hamano, Aug 3, 2025
  57. 6/7 string-list: optionally omit empty string pieces in string_list_split*()Junio C Hamano, Aug 3, 2025
  58. 7/7 string-list: split-then-remove-empty can be done while splittingJunio C Hamano, Aug 3, 2025
  59. Patrick SteinhardtAug 4, 2025
  60. 00/12 do not overuse strbuf_split*()Junio C Hamano, Aug 3, 2025
  61. 01/12 wt-status: avoid strbuf_split*()Junio C Hamano, Aug 3, 2025
  62. 02/12 clean: do not pass strbuf by valueJunio C Hamano, Aug 3, 2025
  63. 03/12 clean: do not use strbuf_split*() [part 1]Junio C Hamano, Aug 3, 2025
  64. 04/12 clean: do not pass the whole structure when it is not necessaryJunio C Hamano, Aug 3, 2025
  65. 05/12 clean: do not use strbuf_split*() [part 2]Junio C Hamano, Aug 3, 2025
  66. 06/12 merge-tree: do not use strbuf_split*()Junio C Hamano, Aug 3, 2025
  67. 07/12 notes: do not use strbuf_split*()Junio C Hamano, Aug 3, 2025
  68. 08/12 config: do not use strbuf_split()Junio C Hamano, Aug 3, 2025
  69. 09/12 environment: do not use strbuf_split*()Junio C Hamano, Aug 3, 2025
  70. 10/12 sub-process: do not use strbuf_split*()Junio C Hamano, Aug 3, 2025
  71. 11/12 trace2: trim_trailing_newline followed by trim is a no-opJunio C Hamano, Aug 3, 2025
  72. 12/12 trace2: do not use strbuf_split*()Junio C Hamano, Aug 3, 2025

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.