{"thread":{"id":"37506","subject":"[PATCH 1/2] strbuf: export strbuf_addchars()","startedAt":"2014-09-07T07:03:32Z","lastAt":"2014-09-08T21:36:11Z","messageCount":4,"participants":["René Scharfe","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"249002","messageId":"540C0344.9060002@web.de","threadId":"37506","inReplyTo":null,"subject":"[PATCH 1/2] strbuf: export strbuf_addchars()","fromName":"René Scharfe","fromEmail":"l.s.r@web.de","sentAt":"2014-09-07T07:03:32Z","receivedAt":"2014-09-07T07:03:32Z","isPatch":true,"sender":{"key":"l.s.r@web.de","avatar":"https://avatars.githubusercontent.com/u/26122331?v=4"},"body":"Move strbuf_addchars() to strbuf.c, where it belongs, and make it\navailable for other callers.\n\nSigned-off-by: Rene Scharfe <l.s.r@web.de>\n---\n Documentation/technical/api-strbuf.txt | 4 ++++\n strbuf.c                               | 7 +++++++\n strbuf.h                               | 1 +\n utf8.c                                 | 7 -------\n 4 files changed, 12 insertions(+), 7 deletions(-)\n\ndiff --git a/Documentation/technical/api-strbuf.txt b/Documentation/technical/api-strbuf.txt\nindex 430302c..cca6543 100644\n--- a/Documentation/technical/api-strbuf.txt\n+++ b/Documentation/technical/api-strbuf.txt\n@@ -160,6 +160,10 @@ then they will free() it.\n \n \tAdd a single character to the buffer.\n \n+`strbuf_addchars`::\n+\n+\tAdd a character the specified number of times to the buffer.\n+\n `strbuf_insert`::\n \n \tInsert data to the given position of the buffer. The remaining contents\ndiff --git a/strbuf.c b/strbuf.c\nindex 4d31443..0346e74 100644\n--- a/strbuf.c\n+++ b/strbuf.c\n@@ -204,6 +204,13 @@ void strbuf_adddup(struct strbuf *sb, size_t pos, size_t len)\n \tstrbuf_setlen(sb, sb->len + len);\n }\n \n+void strbuf_addchars(struct strbuf *sb, int c, size_t n)\n+{\n+\tstrbuf_grow(sb, n);\n+\tmemset(sb->buf + sb->len, c, n);\n+\tstrbuf_setlen(sb, sb->len + n);\n+}\n+\n void strbuf_addf(struct strbuf *sb, const char *fmt, ...)\n {\n \tva_list ap;\ndiff --git a/strbuf.h b/strbuf.h\nindex 7bdc1da..652b6c4 100644\n--- a/strbuf.h\n+++ b/strbuf.h\n@@ -138,6 +138,7 @@ static inline void strbuf_addbuf(struct strbuf *sb, const struct strbuf *sb2)\n \tstrbuf_add(sb, sb2->buf, sb2->len);\n }\n extern void strbuf_adddup(struct strbuf *sb, size_t pos, size_t len);\n+extern void strbuf_addchars(struct strbuf *sb, int c, size_t n);\n \n typedef size_t (*expand_fn_t) (struct strbuf *sb, const char *placeholder, void *context);\n extern void strbuf_expand(struct strbuf *sb, const char *format, expand_fn_t fn, void *context);\ndiff --git a/utf8.c b/utf8.c\nindex b30790d..6d4d04a 100644\n--- a/utf8.c\n+++ b/utf8.c\n@@ -239,13 +239,6 @@ int is_utf8(const char *text)\n \treturn 1;\n }\n \n-static void strbuf_addchars(struct strbuf *sb, int c, size_t n)\n-{\n-\tstrbuf_grow(sb, n);\n-\tmemset(sb->buf + sb->len, c, n);\n-\tstrbuf_setlen(sb, sb->len + n);\n-}\n-\n static void strbuf_add_indented_text(struct strbuf *buf, const char *text,\n \t\t\t\t     int indent, int indent2)\n {\n-- \n2.1.0\n"},{"id":"249003","messageId":"540C0402.3060103@web.de","threadId":"37506","inReplyTo":"540C0344.9060002@web.de","subject":"[PATCH 2/2] strbuf: use strbuf_addchars() for adding a char multiple times","fromName":"René Scharfe","fromEmail":"l.s.r@web.de","sentAt":"2014-09-07T07:06:42Z","receivedAt":"2014-09-07T07:06:42Z","isPatch":true,"sender":{"key":"l.s.r@web.de","avatar":"https://avatars.githubusercontent.com/u/26122331?v=4"},"body":"Signed-off-by: Rene Scharfe <l.s.r@web.de>\n---\n graph.c           |  5 ++---\n merge-recursive.c |  4 +---\n pretty.c          | 10 +++-------\n 3 files changed, 6 insertions(+), 13 deletions(-)\n\ndiff --git a/graph.c b/graph.c\nindex 6404331..dfb99f6 100644\n--- a/graph.c\n+++ b/graph.c\n@@ -1145,7 +1145,7 @@ int graph_next_line(struct git_graph *graph, struct strbuf *sb)\n \n static void graph_padding_line(struct git_graph *graph, struct strbuf *sb)\n {\n-\tint i, j;\n+\tint i;\n \n \tif (graph->state != GRAPH_COMMIT) {\n \t\tgraph_next_line(graph, sb);\n@@ -1169,8 +1169,7 @@ static void graph_padding_line(struct git_graph *graph, struct strbuf *sb)\n \t\t\t\tstrbuf_addch(sb, ' ');\n \t\t\telse {\n \t\t\t\tint num_spaces = ((graph->num_parents - 2) * 2);\n-\t\t\t\tfor (j = 0; j < num_spaces; j++)\n-\t\t\t\t\tstrbuf_addch(sb, ' ');\n+\t\t\t\tstrbuf_addchars(sb, ' ', num_spaces);\n \t\t\t}\n \t\t} else {\n \t\t\tstrbuf_write_column(sb, col, '|');\ndiff --git a/merge-recursive.c b/merge-recursive.c\nindex 1d332b8..dd657e6 100644\n--- a/merge-recursive.c\n+++ b/merge-recursive.c\n@@ -163,9 +163,7 @@ static void output(struct merge_options *o, int v, const char *fmt, ...)\n \tif (!show(o, v))\n \t\treturn;\n \n-\tstrbuf_grow(&o->obuf, o->call_depth * 2 + 2);\n-\tmemset(o->obuf.buf + o->obuf.len, ' ', o->call_depth * 2);\n-\tstrbuf_setlen(&o->obuf, o->obuf.len + o->call_depth * 2);\n+\tstrbuf_addchars(&o->obuf, ' ', o->call_depth * 2);\n \n \tva_start(ap, fmt);\n \tstrbuf_vaddf(&o->obuf, fmt, ap);\ndiff --git a/pretty.c b/pretty.c\nindex 44b9f64..5971415 100644\n--- a/pretty.c\n+++ b/pretty.c\n@@ -1395,9 +1395,7 @@ static size_t format_and_pad_commit(struct strbuf *sb, /* in UTF-8 */\n \t\t * convert it back to chars\n \t\t */\n \t\tpadding = padding - len + local_sb.len;\n-\t\tstrbuf_grow(sb, padding);\n-\t\tstrbuf_setlen(sb, sb_len + padding);\n-\t\tmemset(sb->buf + sb_len, ' ', sb->len - sb_len);\n+\t\tstrbuf_addchars(sb, ' ', padding);\n \t\tmemcpy(sb->buf + sb_len + offset, local_sb.buf,\n \t\t       local_sb.len);\n \t}\n@@ -1672,10 +1670,8 @@ void pp_remainder(struct pretty_print_context *pp,\n \t\tfirst = 0;\n \n \t\tstrbuf_grow(sb, linelen + indent + 20);\n-\t\tif (indent) {\n-\t\t\tmemset(sb->buf + sb->len, ' ', indent);\n-\t\t\tstrbuf_setlen(sb, sb->len + indent);\n-\t\t}\n+\t\tif (indent)\n+\t\t\tstrbuf_addchars(sb, ' ', indent);\n \t\tstrbuf_add(sb, line, linelen);\n \t\tstrbuf_addch(sb, '\\n');\n \t}\n-- \n2.1.0\n"},{"id":"249054","messageId":"xmqqvboym09h.fsf@gitster.dls.corp.google.com","threadId":"37506","inReplyTo":"540C0344.9060002@web.de","subject":"Re: [PATCH 1/2] strbuf: export strbuf_addchars()","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-09-08T18:32:10Z","receivedAt":"2014-09-08T18:32:10Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"René Scharfe <l.s.r@web.de> writes:\n\n> Move strbuf_addchars() to strbuf.c, where it belongs, and make it\n> available for other callers.\n>\n> Signed-off-by: Rene Scharfe <l.s.r@web.de>\n\nWow, fixing up v1.7.0.2~9^2~2?\n\nBoth patches look correct, but I have to wonder where you are\ndrawing these clean-up opportunities from?  Almost as if reading\nthrough dormant part of the codebase one of your hobbies or\nsomething ;-)\n\nJokes aside, I very much appreciate it.  Thanks.\n"},{"id":"249065","messageId":"540E214B.3060400@web.de","threadId":"37506","inReplyTo":"xmqqvboym09h.fsf@gitster.dls.corp.google.com","subject":"Re: [PATCH 1/2] strbuf: export strbuf_addchars()","fromName":"René Scharfe","fromEmail":"l.s.r@web.de","sentAt":"2014-09-08T21:36:11Z","receivedAt":"2014-09-08T21:36:11Z","isPatch":true,"sender":{"key":"l.s.r@web.de","avatar":"https://avatars.githubusercontent.com/u/26122331?v=4"},"body":"Am 08.09.2014 um 20:32 schrieb Junio C Hamano:\n> René Scharfe <l.s.r@web.de> writes:\n>\n>> Move strbuf_addchars() to strbuf.c, where it belongs, and make it\n>> available for other callers.\n>>\n>> Signed-off-by: Rene Scharfe <l.s.r@web.de>\n>\n> Wow, fixing up v1.7.0.2~9^2~2?\n\nAbout time, isn't it? ;)\n\n> Both patches look correct, but I have to wonder where you are\n> drawing these clean-up opportunities from?  Almost as if reading\n> through dormant part of the codebase one of your hobbies or\n> something ;-)\n\nThat, and I'm sitting on a pile of cleanup patches that grew whenever I \nlooked at some piece of code for the first time, e.g. due to bug \nreports, or when I took a static analyzer for a test drive etc.  I'm \ntrying to filter out the good ones and to send them at opportune moments \nin order to avoid conflicts with real changes.\n\nRené\n"}]}