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

Re: [PATCH v5 7/7] strbuf: remove global variable

From
PWPhillip Wood <phillip.wood123@gmail.com>
Date
May 12, 2023, 14:53 UTC
Message-ID
<c9e22e51-4e4a-b692-edfd-1f3bc7ee7da9@gmail.com>
In-Reply-To
<20230511194822.1493798-7-calvinwan@google.com>
Hi Calvin
On 11/05/2023 20:48, Calvin Wan wrote:
Show 7 quoted lines
> As a library that only interacts with other primitives, strbuf should
> not utilize the comment_line_char global variable within its
> functions. Therefore, add an additional parameter for functions that use
> comment_line_char and refactor callers to pass it in instead.
> strbuf_stripspace() removes the skip_comments boolean and checks if
> comment_line_char is a non-NULL character to determine whether to skip
> comments or not.

Thanks for re-rolling, I agree with Eric's comments but would be happy if this was merged as-is.

Best Wishes
Phillip
Show 584 quoted lines
> Signed-off-by: Calvin Wan <calvinwan@google.com>
> ---
>   add-patch.c          | 12 +++++++-----
>   builtin/am.c         |  2 +-
>   builtin/branch.c     |  4 ++--
>   builtin/commit.c     |  2 +-
>   builtin/merge.c      | 10 ++++++----
>   builtin/notes.c      | 16 +++++++++-------
>   builtin/rebase.c     |  2 +-
>   builtin/stripspace.c |  6 ++++--
>   builtin/tag.c        |  9 ++++++---
>   fmt-merge-msg.c      |  9 ++++++---
>   gpg-interface.c      |  5 +++--
>   rebase-interactive.c | 15 ++++++++-------
>   sequencer.c          | 24 +++++++++++++++---------
>   strbuf.c             | 18 ++++++++++--------
>   strbuf.h             | 15 +++++++++------
>   wt-status.c          |  6 +++---
>   16 files changed, 91 insertions(+), 64 deletions(-)
> 
> diff --git a/add-patch.c b/add-patch.c
> index 8d770d203f..9702c1aabd 100644
> --- a/add-patch.c
> +++ b/add-patch.c
> @@ -1105,10 +1105,11 @@ static int edit_hunk_manually(struct add_p_state *s, struct hunk *hunk)
>   	size_t i;
>   
>   	strbuf_reset(&s->buf);
> -	strbuf_commented_addf(&s->buf, _("Manual hunk edit mode -- see bottom for "
> -				      "a quick guide.\n"));
> +	strbuf_commented_addf(&s->buf, comment_line_char,
> +			      _("Manual hunk edit mode -- see bottom for "
> +				"a quick guide.\n"));
>   	render_hunk(s, hunk, 0, 0, &s->buf);
> -	strbuf_commented_addf(&s->buf,
> +	strbuf_commented_addf(&s->buf, comment_line_char,
>   			      _("---\n"
>   				"To remove '%c' lines, make them ' ' lines "
>   				"(context).\n"
> @@ -1117,12 +1118,13 @@ static int edit_hunk_manually(struct add_p_state *s, struct hunk *hunk)
>   			      s->mode->is_reverse ? '+' : '-',
>   			      s->mode->is_reverse ? '-' : '+',
>   			      comment_line_char);
> -	strbuf_commented_addf(&s->buf, "%s", _(s->mode->edit_hunk_hint));
> +	strbuf_commented_addf(&s->buf, comment_line_char, "%s",
> +			      _(s->mode->edit_hunk_hint));
>   	/*
>   	 * TRANSLATORS: 'it' refers to the patch mentioned in the previous
>   	 * messages.
>   	 */
> -	strbuf_commented_addf(&s->buf,
> +	strbuf_commented_addf(&s->buf, comment_line_char,
>   			      _("If it does not apply cleanly, you will be "
>   				"given an opportunity to\n"
>   				"edit again.  If all lines of the hunk are "
> diff --git a/builtin/am.c b/builtin/am.c
> index 5c83f2e003..9ece2e3066 100644
> --- a/builtin/am.c
> +++ b/builtin/am.c
> @@ -1283,7 +1283,7 @@ static int parse_mail(struct am_state *state, const char *mail)
>   
>   	strbuf_addstr(&msg, "\n\n");
>   	strbuf_addbuf(&msg, &mi.log_message);
> -	strbuf_stripspace(&msg, 0);
> +	strbuf_stripspace(&msg, '\0');
>   
>   	assert(!state->author_name);
>   	state->author_name = strbuf_detach(&author_name, NULL);
> diff --git a/builtin/branch.c b/builtin/branch.c
> index 501c47657c..4560610d09 100644
> --- a/builtin/branch.c
> +++ b/builtin/branch.c
> @@ -629,7 +629,7 @@ static int edit_branch_description(const char *branch_name)
>   	exists = !read_branch_desc(&buf, branch_name);
>   	if (!buf.len || buf.buf[buf.len-1] != '\n')
>   		strbuf_addch(&buf, '\n');
> -	strbuf_commented_addf(&buf,
> +	strbuf_commented_addf(&buf, comment_line_char,
>   		    _("Please edit the description for the branch\n"
>   		      "  %s\n"
>   		      "Lines starting with '%c' will be stripped.\n"),
> @@ -640,7 +640,7 @@ static int edit_branch_description(const char *branch_name)
>   		strbuf_release(&buf);
>   		return -1;
>   	}
> -	strbuf_stripspace(&buf, 1);
> +	strbuf_stripspace(&buf, comment_line_char);
>   
>   	strbuf_addf(&name, "branch.%s.description", branch_name);
>   	if (buf.len || exists)
> diff --git a/builtin/commit.c b/builtin/commit.c
> index e67c4be221..e002ebf070 100644
> --- a/builtin/commit.c
> +++ b/builtin/commit.c
> @@ -893,7 +893,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
>   	s->hints = 0;
>   
>   	if (clean_message_contents)
> -		strbuf_stripspace(&sb, 0);
> +		strbuf_stripspace(&sb, '\0');
>   
>   	if (signoff)
>   		append_signoff(&sb, ignore_non_trailer(sb.buf, sb.len), 0);
> diff --git a/builtin/merge.c b/builtin/merge.c
> index 8da3e46abb..1d14767c0c 100644
> --- a/builtin/merge.c
> +++ b/builtin/merge.c
> @@ -879,13 +879,15 @@ static void prepare_to_commit(struct commit_list *remoteheads)
>   		strbuf_addch(&msg, '\n');
>   		if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS) {
>   			wt_status_append_cut_line(&msg);
> -			strbuf_commented_addf(&msg, "\n");
> +			strbuf_commented_addf(&msg, comment_line_char, "\n");
>   		}
> -		strbuf_commented_addf(&msg, _(merge_editor_comment));
> +		strbuf_commented_addf(&msg, comment_line_char,
> +				      _(merge_editor_comment));
>   		if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS)
> -			strbuf_commented_addf(&msg, _(scissors_editor_comment));
> +			strbuf_commented_addf(&msg, comment_line_char,
> +					      _(scissors_editor_comment));
>   		else
> -			strbuf_commented_addf(&msg,
> +			strbuf_commented_addf(&msg, comment_line_char,
>   				_(no_scissors_editor_comment), comment_line_char);
>   	}
>   	if (signoff)
> diff --git a/builtin/notes.c b/builtin/notes.c
> index d5788352b6..3bad5b458b 100644
> --- a/builtin/notes.c
> +++ b/builtin/notes.c
> @@ -11,6 +11,7 @@
>   #include "config.h"
>   #include "builtin.h"
>   #include "editor.h"
> +#include "environment.h"
>   #include "gettext.h"
>   #include "hex.h"
>   #include "notes.h"
> @@ -157,7 +158,7 @@ static void write_commented_object(int fd, const struct object_id *object)
>   
>   	if (strbuf_read(&buf, show.out, 0) < 0)
>   		die_errno(_("could not read 'show' output"));
> -	strbuf_add_commented_lines(&cbuf, buf.buf, buf.len);
> +	strbuf_add_commented_lines(&cbuf, buf.buf, buf.len, comment_line_char);
>   	write_or_die(fd, cbuf.buf, cbuf.len);
>   
>   	strbuf_release(&cbuf);
> @@ -185,9 +186,10 @@ static void prepare_note_data(const struct object_id *object, struct note_data *
>   			copy_obj_to_fd(fd, old_note);
>   
>   		strbuf_addch(&buf, '\n');
> -		strbuf_add_commented_lines(&buf, "\n", strlen("\n"));
> -		strbuf_add_commented_lines(&buf, _(note_template), strlen(_(note_template)));
> -		strbuf_add_commented_lines(&buf, "\n", strlen("\n"));
> +		strbuf_add_commented_lines(&buf, "\n", strlen("\n"), comment_line_char);
> +		strbuf_add_commented_lines(&buf, _(note_template), strlen(_(note_template)),
> +					   comment_line_char);
> +		strbuf_add_commented_lines(&buf, "\n", strlen("\n"), comment_line_char);
>   		write_or_die(fd, buf.buf, buf.len);
>   
>   		write_commented_object(fd, object);
> @@ -199,7 +201,7 @@ static void prepare_note_data(const struct object_id *object, struct note_data *
>   		if (launch_editor(d->edit_path, &d->buf, NULL)) {
>   			die(_("please supply the note contents using either -m or -F option"));
>   		}
> -		strbuf_stripspace(&d->buf, 1);
> +		strbuf_stripspace(&d->buf, comment_line_char);
>   	}
>   }
>   
> @@ -225,7 +227,7 @@ static int parse_msg_arg(const struct option *opt, const char *arg, int unset)
>   	if (d->buf.len)
>   		strbuf_addch(&d->buf, '\n');
>   	strbuf_addstr(&d->buf, arg);
> -	strbuf_stripspace(&d->buf, 0);
> +	strbuf_stripspace(&d->buf, '\0');
>   
>   	d->given = 1;
>   	return 0;
> @@ -244,7 +246,7 @@ static int parse_file_arg(const struct option *opt, const char *arg, int unset)
>   			die_errno(_("cannot read '%s'"), arg);
>   	} else if (strbuf_read_file(&d->buf, arg, 1024) < 0)
>   		die_errno(_("could not open or read '%s'"), arg);
> -	strbuf_stripspace(&d->buf, 0);
> +	strbuf_stripspace(&d->buf, '\0');
>   
>   	d->given = 1;
>   	return 0;
> diff --git a/builtin/rebase.c b/builtin/rebase.c
> index ace1d5e8d1..b1ba9fb05d 100644
> --- a/builtin/rebase.c
> +++ b/builtin/rebase.c
> @@ -209,7 +209,7 @@ static int edit_todo_file(unsigned flags)
>   	if (strbuf_read_file(&todo_list.buf, todo_file, 0) < 0)
>   		return error_errno(_("could not read '%s'."), todo_file);
>   
> -	strbuf_stripspace(&todo_list.buf, 1);
> +	strbuf_stripspace(&todo_list.buf, comment_line_char);
>   	res = edit_todo_list(the_repository, &todo_list, &new_todo, NULL, NULL, flags);
>   	if (!res && todo_list_write_to_file(the_repository, &new_todo, todo_file,
>   					    NULL, NULL, -1, flags & ~(TODO_LIST_SHORTEN_IDS)))
> diff --git a/builtin/stripspace.c b/builtin/stripspace.c
> index 9451eb69ff..1987752359 100644
> --- a/builtin/stripspace.c
> +++ b/builtin/stripspace.c
> @@ -1,6 +1,7 @@
>   #include "builtin.h"
>   #include "cache.h"
>   #include "config.h"
> +#include "environment.h"
>   #include "gettext.h"
>   #include "parse-options.h"
>   #include "setup.h"
> @@ -13,7 +14,7 @@ static void comment_lines(struct strbuf *buf)
>   	size_t len;
>   
>   	msg = strbuf_detach(buf, &len);
> -	strbuf_add_commented_lines(buf, msg, len);
> +	strbuf_add_commented_lines(buf, msg, len, comment_line_char);
>   	free(msg);
>   }
>   
> @@ -58,7 +59,8 @@ int cmd_stripspace(int argc, const char **argv, const char *prefix)
>   		die_errno("could not read the input");
>   
>   	if (mode == STRIP_DEFAULT || mode == STRIP_COMMENTS)
> -		strbuf_stripspace(&buf, mode == STRIP_COMMENTS);
> +		strbuf_stripspace(&buf,
> +			  mode == STRIP_COMMENTS ? comment_line_char : '\0');
>   	else
>   		comment_lines(&buf);
>   
> diff --git a/builtin/tag.c b/builtin/tag.c
> index 1850a6a6fd..b79e0a88e6 100644
> --- a/builtin/tag.c
> +++ b/builtin/tag.c
> @@ -311,9 +311,11 @@ static void create_tag(const struct object_id *object, const char *object_ref,
>   			struct strbuf buf = STRBUF_INIT;
>   			strbuf_addch(&buf, '\n');
>   			if (opt->cleanup_mode == CLEANUP_ALL)
> -				strbuf_commented_addf(&buf, _(tag_template), tag, comment_line_char);
> +				strbuf_commented_addf(&buf, comment_line_char,
> +				      _(tag_template), tag, comment_line_char);
>   			else
> -				strbuf_commented_addf(&buf, _(tag_template_nocleanup), tag, comment_line_char);
> +				strbuf_commented_addf(&buf, comment_line_char,
> +				      _(tag_template_nocleanup), tag, comment_line_char);
>   			write_or_die(fd, buf.buf, buf.len);
>   			strbuf_release(&buf);
>   		}
> @@ -327,7 +329,8 @@ static void create_tag(const struct object_id *object, const char *object_ref,
>   	}
>   
>   	if (opt->cleanup_mode != CLEANUP_NONE)
> -		strbuf_stripspace(buf, opt->cleanup_mode == CLEANUP_ALL);
> +		strbuf_stripspace(buf,
> +		  opt->cleanup_mode == CLEANUP_ALL ? comment_line_char : '\0');
>   
>   	if (!opt->message_given && !buf->len)
>   		die(_("no tag message?"));
> diff --git a/fmt-merge-msg.c b/fmt-merge-msg.c
> index 5af0d4715b..5d15e2387d 100644
> --- a/fmt-merge-msg.c
> +++ b/fmt-merge-msg.c
> @@ -508,7 +508,8 @@ static void fmt_tag_signature(struct strbuf *tagbuf,
>   	strbuf_complete_line(tagbuf);
>   	if (sig->len) {
>   		strbuf_addch(tagbuf, '\n');
> -		strbuf_add_commented_lines(tagbuf, sig->buf, sig->len);
> +		strbuf_add_commented_lines(tagbuf, sig->buf, sig->len,
> +					   comment_line_char);
>   	}
>   }
>   
> @@ -554,7 +555,8 @@ static void fmt_merge_msg_sigs(struct strbuf *out)
>   				strbuf_addch(&tagline, '\n');
>   				strbuf_add_commented_lines(&tagline,
>   						origins.items[first_tag].string,
> -						strlen(origins.items[first_tag].string));
> +						strlen(origins.items[first_tag].string),
> +						comment_line_char);
>   				strbuf_insert(&tagbuf, 0, tagline.buf,
>   					      tagline.len);
>   				strbuf_release(&tagline);
> @@ -562,7 +564,8 @@ static void fmt_merge_msg_sigs(struct strbuf *out)
>   			strbuf_addch(&tagbuf, '\n');
>   			strbuf_add_commented_lines(&tagbuf,
>   					origins.items[i].string,
> -					strlen(origins.items[i].string));
> +					strlen(origins.items[i].string),
> +					comment_line_char);
>   			fmt_tag_signature(&tagbuf, &sig, buf, len);
>   		}
>   		strbuf_release(&payload);
> diff --git a/gpg-interface.c b/gpg-interface.c
> index f3ac5acdd9..c27a751b70 100644
> --- a/gpg-interface.c
> +++ b/gpg-interface.c
> @@ -11,6 +11,7 @@
>   #include "tempfile.h"
>   #include "alias.h"
>   #include "wrapper.h"
> +#include "environment.h"
>   
>   static int git_gpg_config(const char *, const char *, void *);
>   
> @@ -584,8 +585,8 @@ static int verify_ssh_signed_buffer(struct signature_check *sigc,
>   		}
>   	}
>   
> -	strbuf_stripspace(&ssh_keygen_out, 0);
> -	strbuf_stripspace(&ssh_keygen_err, 0);
> +	strbuf_stripspace(&ssh_keygen_out, '\0');
> +	strbuf_stripspace(&ssh_keygen_err, '\0');
>   	/* Add stderr outputs to show the user actual ssh-keygen errors */
>   	strbuf_add(&ssh_keygen_out, ssh_principals_err.buf, ssh_principals_err.len);
>   	strbuf_add(&ssh_keygen_out, ssh_keygen_err.buf, ssh_keygen_err.len);
> diff --git a/rebase-interactive.c b/rebase-interactive.c
> index 789f407361..012defbb53 100644
> --- a/rebase-interactive.c
> +++ b/rebase-interactive.c
> @@ -71,13 +71,14 @@ void append_todo_help(int command_count,
>   
>   	if (!edit_todo) {
>   		strbuf_addch(buf, '\n');
> -		strbuf_commented_addf(buf, Q_("Rebase %s onto %s (%d command)",
> -					      "Rebase %s onto %s (%d commands)",
> -					      command_count),
> +		strbuf_commented_addf(buf, comment_line_char,
> +				      Q_("Rebase %s onto %s (%d command)",
> +					 "Rebase %s onto %s (%d commands)",
> +					 command_count),
>   				      shortrevisions, shortonto, command_count);
>   	}
>   
> -	strbuf_add_commented_lines(buf, msg, strlen(msg));
> +	strbuf_add_commented_lines(buf, msg, strlen(msg), comment_line_char);
>   
>   	if (get_missing_commit_check_level() == MISSING_COMMIT_CHECK_ERROR)
>   		msg = _("\nDo not remove any line. Use 'drop' "
> @@ -86,7 +87,7 @@ void append_todo_help(int command_count,
>   		msg = _("\nIf you remove a line here "
>   			 "THAT COMMIT WILL BE LOST.\n");
>   
> -	strbuf_add_commented_lines(buf, msg, strlen(msg));
> +	strbuf_add_commented_lines(buf, msg, strlen(msg), comment_line_char);
>   
>   	if (edit_todo)
>   		msg = _("\nYou are editing the todo file "
> @@ -97,7 +98,7 @@ void append_todo_help(int command_count,
>   		msg = _("\nHowever, if you remove everything, "
>   			"the rebase will be aborted.\n\n");
>   
> -	strbuf_add_commented_lines(buf, msg, strlen(msg));
> +	strbuf_add_commented_lines(buf, msg, strlen(msg), comment_line_char);
>   }
>   
>   int edit_todo_list(struct repository *r, struct todo_list *todo_list,
> @@ -129,7 +130,7 @@ int edit_todo_list(struct repository *r, struct todo_list *todo_list,
>   	if (launch_sequence_editor(todo_file, &new_todo->buf, NULL))
>   		return -2;
>   
> -	strbuf_stripspace(&new_todo->buf, 1);
> +	strbuf_stripspace(&new_todo->buf, comment_line_char);
>   	if (initial && new_todo->buf.len == 0)
>   		return -3;
>   
> diff --git a/sequencer.c b/sequencer.c
> index c88d1d9553..eae4563ef7 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -659,11 +659,12 @@ void append_conflicts_hint(struct index_state *istate,
>   	}
>   
>   	strbuf_addch(msgbuf, '\n');
> -	strbuf_commented_addf(msgbuf, "Conflicts:\n");
> +	strbuf_commented_addf(msgbuf, comment_line_char, "Conflicts:\n");
>   	for (i = 0; i < istate->cache_nr;) {
>   		const struct cache_entry *ce = istate->cache[i++];
>   		if (ce_stage(ce)) {
> -			strbuf_commented_addf(msgbuf, "\t%s\n", ce->name);
> +			strbuf_commented_addf(msgbuf, comment_line_char,
> +					      "\t%s\n", ce->name);
>   			while (i < istate->cache_nr &&
>   			       !strcmp(ce->name, istate->cache[i]->name))
>   				i++;
> @@ -1142,7 +1143,8 @@ void cleanup_message(struct strbuf *msgbuf,
>   	    cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS)
>   		strbuf_setlen(msgbuf, wt_status_locate_end(msgbuf->buf, msgbuf->len));
>   	if (cleanup_mode != COMMIT_MSG_CLEANUP_NONE)
> -		strbuf_stripspace(msgbuf, cleanup_mode == COMMIT_MSG_CLEANUP_ALL);
> +		strbuf_stripspace(msgbuf,
> +		  cleanup_mode == COMMIT_MSG_CLEANUP_ALL ? comment_line_char : '\0');
>   }
>   
>   /*
> @@ -1173,7 +1175,8 @@ int template_untouched(const struct strbuf *sb, const char *template_file,
>   	if (!template_file || strbuf_read_file(&tmpl, template_file, 0) <= 0)
>   		return 0;
>   
> -	strbuf_stripspace(&tmpl, cleanup_mode == COMMIT_MSG_CLEANUP_ALL);
> +	strbuf_stripspace(&tmpl,
> +	  cleanup_mode == COMMIT_MSG_CLEANUP_ALL ? comment_line_char : '\0');
>   	if (!skip_prefix(sb->buf, tmpl.buf, &start))
>   		start = sb->buf;
>   	strbuf_release(&tmpl);
> @@ -1545,7 +1548,8 @@ static int try_to_commit(struct repository *r,
>   		cleanup = opts->default_msg_cleanup;
>   
>   	if (cleanup != COMMIT_MSG_CLEANUP_NONE)
> -		strbuf_stripspace(msg, cleanup == COMMIT_MSG_CLEANUP_ALL);
> +		strbuf_stripspace(msg,
> +		  cleanup == COMMIT_MSG_CLEANUP_ALL ? comment_line_char : '\0');
>   	if ((flags & EDIT_MSG) && message_is_empty(msg, cleanup)) {
>   		res = 1; /* run 'git commit' to display error message */
>   		goto out;
> @@ -1839,7 +1843,7 @@ static void add_commented_lines(struct strbuf *buf, const void *str, size_t len)
>   		s += count;
>   		len -= count;
>   	}
> -	strbuf_add_commented_lines(buf, s, len);
> +	strbuf_add_commented_lines(buf, s, len, comment_line_char);
>   }
>   
>   /* Does the current fixup chain contain a squash command? */
> @@ -1938,7 +1942,7 @@ static int append_squash_message(struct strbuf *buf, const char *body,
>   	strbuf_addf(buf, _(nth_commit_msg_fmt),
>   		    ++opts->current_fixup_count + 1);
>   	strbuf_addstr(buf, "\n\n");
> -	strbuf_add_commented_lines(buf, body, commented_len);
> +	strbuf_add_commented_lines(buf, body, commented_len, comment_line_char);
>   	/* buf->buf may be reallocated so store an offset into the buffer */
>   	fixup_off = buf->len;
>   	strbuf_addstr(buf, body + commented_len);
> @@ -2028,7 +2032,8 @@ static int update_squash_messages(struct repository *r,
>   			      _(first_commit_msg_str));
>   		strbuf_addstr(&buf, "\n\n");
>   		if (is_fixup_flag(command, flag))
> -			strbuf_add_commented_lines(&buf, body, strlen(body));
> +			strbuf_add_commented_lines(&buf, body, strlen(body),
> +						   comment_line_char);
>   		else
>   			strbuf_addstr(&buf, body);
>   
> @@ -2047,7 +2052,8 @@ static int update_squash_messages(struct repository *r,
>   		strbuf_addf(&buf, _(skip_nth_commit_msg_fmt),
>   			    ++opts->current_fixup_count + 1);
>   		strbuf_addstr(&buf, "\n\n");
> -		strbuf_add_commented_lines(&buf, body, strlen(body));
> +		strbuf_add_commented_lines(&buf, body, strlen(body),
> +					   comment_line_char);
>   	} else
>   		return error(_("unknown command: %d"), command);
>   	repo_unuse_commit_buffer(r, commit, message);
> diff --git a/strbuf.c b/strbuf.c
> index d5978fee4e..9348ac6863 100644
> --- a/strbuf.c
> +++ b/strbuf.c
> @@ -1,6 +1,5 @@
>   #include "git-compat-util.h"
>   #include "alloc.h"
> -#include "environment.h"
>   #include "gettext.h"
>   #include "hex.h"
>   #include "strbuf.h"
> @@ -362,7 +361,8 @@ static void add_lines(struct strbuf *out,
>   	strbuf_complete_line(out);
>   }
>   
> -void strbuf_add_commented_lines(struct strbuf *out, const char *buf, size_t size)
> +void strbuf_add_commented_lines(struct strbuf *out, const char *buf,
> +				size_t size, char comment_line_char)
>   {
>   	static char prefix1[3];
>   	static char prefix2[2];
> @@ -374,7 +374,8 @@ void strbuf_add_commented_lines(struct strbuf *out, const char *buf, size_t size
>   	add_lines(out, prefix1, prefix2, buf, size);
>   }
>   
> -void strbuf_commented_addf(struct strbuf *sb, const char *fmt, ...)
> +void strbuf_commented_addf(struct strbuf *sb, char comment_line_char,
> +			   const char *fmt, ...)
>   {
>   	va_list params;
>   	struct strbuf buf = STRBUF_INIT;
> @@ -384,7 +385,7 @@ void strbuf_commented_addf(struct strbuf *sb, const char *fmt, ...)
>   	strbuf_vaddf(&buf, fmt, params);
>   	va_end(params);
>   
> -	strbuf_add_commented_lines(sb, buf.buf, buf.len);
> +	strbuf_add_commented_lines(sb, buf.buf, buf.len, comment_line_char);
>   	if (incomplete_line)
>   		sb->buf[--sb->len] = '\0';
>   
> @@ -1051,10 +1052,10 @@ static size_t cleanup(char *line, size_t len)
>    *
>    * If last line does not have a newline at the end, one is added.
>    *
> - * Enable skip_comments to skip every line starting with comment
> - * character.
> + * Pass a non-NULL comment_line_char to skip every line starting
> + * with it
>    */
> -void strbuf_stripspace(struct strbuf *sb, int skip_comments)
> +void strbuf_stripspace(struct strbuf *sb, char comment_line_char)
>   {
>   	size_t empties = 0;
>   	size_t i, j, len, newlen;
> @@ -1067,7 +1068,8 @@ void strbuf_stripspace(struct strbuf *sb, int skip_comments)
>   		eol = memchr(sb->buf + i, '\n', sb->len - i);
>   		len = eol ? eol - (sb->buf + i) + 1 : sb->len - i;
>   
> -		if (skip_comments && len && sb->buf[i] == comment_line_char) {
> +		if (comment_line_char != '\0' && len &&
> +		    sb->buf[i] == comment_line_char) {
>   			newlen = 0;
>   			continue;
>   		}
> diff --git a/strbuf.h b/strbuf.h
> index b38bfd34af..89ae30b620 100644
> --- a/strbuf.h
> +++ b/strbuf.h
> @@ -292,7 +292,8 @@ void strbuf_splice(struct strbuf *sb, size_t pos, size_t len,
>    * by a comment character and a blank.
>    */
>   void strbuf_add_commented_lines(struct strbuf *out,
> -				const char *buf, size_t size);
> +				const char *buf, size_t size,
> +				char comment_line_char);
>   
>   
>   /**
> @@ -421,8 +422,8 @@ void strbuf_addf(struct strbuf *sb, const char *fmt, ...);
>    * Add a formatted string prepended by a comment character and a
>    * blank to the buffer.
>    */
> -__attribute__((format (printf, 2, 3)))
> -void strbuf_commented_addf(struct strbuf *sb, const char *fmt, ...);
> +__attribute__((format (printf, 3, 4)))
> +void strbuf_commented_addf(struct strbuf *sb, char comment_line_char, const char *fmt, ...);
>   
>   __attribute__((format (printf,2,0)))
>   void strbuf_vaddf(struct strbuf *sb, const char *fmt, va_list ap);
> @@ -544,10 +545,12 @@ int strbuf_getcwd(struct strbuf *sb);
>   int strbuf_normalize_path(struct strbuf *sb);
>   
>   /**
> - * Strip whitespace from a buffer. The second parameter controls if
> - * comments are considered contents to be removed or not.
> + * Strip whitespace from a buffer. The second parameter is the comment
> + * character that determines whether a line is a comment or not. If the
> + * second parameter is a non-NULL character, comments are considered
> + * contents to be removed.
>    */
> -void strbuf_stripspace(struct strbuf *buf, int skip_comments);
> +void strbuf_stripspace(struct strbuf *buf, char comment_line_char);
>   
>   static inline int strbuf_strip_suffix(struct strbuf *sb, const char *suffix)
>   {
> diff --git a/wt-status.c b/wt-status.c
> index 97b9c1c035..da7734866f 100644
> --- a/wt-status.c
> +++ b/wt-status.c
> @@ -1023,7 +1023,7 @@ static void wt_longstatus_print_submodule_summary(struct wt_status *s, int uncom
>   	if (s->display_comment_prefix) {
>   		size_t len;
>   		summary_content = strbuf_detach(&summary, &len);
> -		strbuf_add_commented_lines(&summary, summary_content, len);
> +		strbuf_add_commented_lines(&summary, summary_content, len, comment_line_char);
>   		free(summary_content);
>   	}
>   
> @@ -1098,8 +1098,8 @@ void wt_status_append_cut_line(struct strbuf *buf)
>   {
>   	const char *explanation = _("Do not modify or remove the line above.\nEverything below it will be ignored.");
>   
> -	strbuf_commented_addf(buf, "%s", cut_line);
> -	strbuf_add_commented_lines(buf, explanation, strlen(explanation));
> +	strbuf_commented_addf(buf, comment_line_char, "%s", cut_line);
> +	strbuf_add_commented_lines(buf, explanation, strlen(explanation), comment_line_char);
>   }
>   
>   void wt_status_add_cut_line(FILE *fp)
Previous: Phillip WoodNext: Junio C Hamano
Message 66 of 85 in “strbuf cleanups”
  1. 0/6 strbuf cleanupsCalvin Wan, May 2, 2023
  2. 1/6 abspath: move related functions to abspathCalvin Wan, May 2, 2023
  3. Junio C HamanoMay 2, 2023
  4. 2/6 credential-store: move related functions to credential-store fileCalvin Wan, May 2, 2023
  5. Junio C HamanoMay 2, 2023
  6. Jeff KingMay 3, 2023
  7. Jeff KingMay 3, 2023
  8. Calvin WanMay 3, 2023
  9. 3/6 object-name: move related functions to object-nameCalvin Wan, May 2, 2023
  10. 4/6 path: move related function to pathCalvin Wan, May 2, 2023
  11. 5/6 strbuf: clarify dependencyCalvin Wan, May 2, 2023
  12. Elijah NewrenMay 3, 2023
  13. 6/6 strbuf: remove environment variablesCalvin Wan, May 2, 2023
  14. Elijah NewrenMay 3, 2023
  15. Junio C HamanoMay 2, 2023
  16. Junio C HamanoMay 2, 2023
  17. Felipe ContrerasMay 2, 2023
  18. Calvin WanMay 2, 2023
  19. Elijah NewrenMay 3, 2023
  20. Calvin WanMay 3, 2023
  21. Elijah NewrenMay 7, 2023
  22. Jeff KingMay 7, 2023
  23. 0/7 strbuf cleanupsCalvin Wan, May 3, 2023
  24. 1/7 strbuf: clarify API boundaryCalvin Wan, May 3, 2023
  25. 2/7 abspath: move related functions to abspathCalvin Wan, May 3, 2023
  26. 3/7 credential-store: move related functions to credential-store fileCalvin Wan, May 3, 2023
  27. 5/7 path: move related function to pathCalvin Wan, May 3, 2023
  28. 4/7 object-name: move related functions to object-nameCalvin Wan, May 3, 2023
  29. 6/7 strbuf: clarify dependencyCalvin Wan, May 3, 2023
  30. Junio C HamanoMay 3, 2023
  31. 7/7 strbuf: remove environment variablesCalvin Wan, May 3, 2023
  32. Junio C HamanoMay 3, 2023
  33. Calvin WanMay 3, 2023
  34. Junio C HamanoMay 3, 2023
  35. 7/7 strbuf: remove environment variableCalvin Wan, May 3, 2023
  36. Junio C HamanoMay 5, 2023
  37. Calvin WanMay 8, 2023
  38. Elijah NewrenMay 7, 2023
  39. Felipe ContrerasMay 7, 2023
  40. 0/7 strbuf cleanupsCalvin Wan, May 8, 2023
  41. 1/7 strbuf: clarify API boundaryCalvin Wan, May 8, 2023
  42. Eric SunshineMay 8, 2023
  43. Junio C HamanoMay 10, 2023
  44. 3/7 credential-store: move related functions to credential-store fileCalvin Wan, May 8, 2023
  45. 5/7 path: move related function to pathCalvin Wan, May 8, 2023
  46. 2/7 abspath: move related functions to abspathCalvin Wan, May 8, 2023
  47. 4/7 object-name: move related functions to object-nameCalvin Wan, May 8, 2023
  48. 6/7 strbuf: clarify dependencyCalvin Wan, May 8, 2023
  49. 7/7 strbuf: remove global variableCalvin Wan, May 8, 2023
  50. Phillip WoodMay 10, 2023
  51. Elijah NewrenMay 9, 2023
  52. Felipe ContrerasMay 9, 2023
  53. 0/7 strbuf cleanupsCalvin Wan, May 11, 2023
  54. 1/7 strbuf: clarify API boundaryCalvin Wan, May 11, 2023
  55. Eric SunshineMay 11, 2023
  56. Calvin WanMay 11, 2023
  57. 2/7 abspath: move related functions to abspathCalvin Wan, May 11, 2023
  58. 3/7 credential-store: move related functions to credential-store fileCalvin Wan, May 11, 2023
  59. 6/7 strbuf: clarify dependencyCalvin Wan, May 11, 2023
  60. 5/7 path: move related function to pathCalvin Wan, May 11, 2023
  61. 4/7 object-name: move related functions to object-nameCalvin Wan, May 11, 2023
  62. 7/7 strbuf: remove global variableCalvin Wan, May 11, 2023
  63. Eric SunshineMay 11, 2023
  64. Junio C HamanoMay 11, 2023
  65. Phillip WoodMay 12, 2023
  66. Phillip WoodMay 12, 2023
  67. Junio C HamanoMay 12, 2023
  68. 0/7 strbuf cleanupsCalvin Wan, May 12, 2023
  69. 1/7 strbuf: clarify API boundaryCalvin Wan, May 12, 2023
  70. 2/7 abspath: move related functions to abspathCalvin Wan, May 12, 2023
  71. 4/7 object-name: move related functions to object-nameCalvin Wan, May 12, 2023
  72. 3/7 credential-store: move related functions to credential-store fileCalvin Wan, May 12, 2023
  73. 5/7 path: move related function to pathCalvin Wan, May 12, 2023
  74. 6/7 strbuf: clarify dependencyCalvin Wan, May 12, 2023
  75. 7/7 strbuf: remove global variableCalvin Wan, May 12, 2023
  76. Junio C HamanoMay 12, 2023
  77. Eric SunshineMay 13, 2023
  78. 0/7 strbuf cleanupsCalvin Wan, Jun 6, 2023
  79. 1/7 strbuf: clarify API boundaryCalvin Wan, Jun 6, 2023
  80. 2/7 strbuf: clarify dependencyCalvin Wan, Jun 6, 2023
  81. 6/7 path: move related function to pathCalvin Wan, Jun 6, 2023
  82. 3/7 abspath: move related functions to abspathCalvin Wan, Jun 6, 2023
  83. 5/7 object-name: move related functions to object-nameCalvin Wan, Jun 6, 2023
  84. 4/7 credential-store: move related functions to credential-store fileCalvin Wan, Jun 6, 2023
  85. 7/7 strbuf: remove global variableCalvin Wan, Jun 6, 2023

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.