зеркало из https://github.com/microsoft/git.git
strbuf: add and use strbuf_insertstr()
Add a function for inserting a C string into a strbuf. Use it throughout the source to get rid of magic string length constants and explicit strlen() calls. Like strbuf_addstr(), implement it as an inline function to avoid the implicit strlen() calls to cause runtime overhead. Helped-by: Taylor Blau <me@ttaylorr.com> Helped-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
d0654dc308
Коммит
a91cc7fad0
|
@ -863,7 +863,7 @@ static void update_refs_for_switch(const struct checkout_opts *opts,
|
|||
strbuf_addf(&msg, "checkout: moving from %s to %s",
|
||||
old_desc ? old_desc : "(invalid)", new_branch_info->name);
|
||||
else
|
||||
strbuf_insert(&msg, 0, reflog_msg, strlen(reflog_msg));
|
||||
strbuf_insertstr(&msg, 0, reflog_msg);
|
||||
|
||||
if (!strcmp(new_branch_info->name, "HEAD") && !new_branch_info->path && !opts->force_detach) {
|
||||
/* Nothing to do. */
|
||||
|
|
|
@ -622,7 +622,7 @@ static int append_edit(int argc, const char **argv, const char *prefix)
|
|||
|
||||
strbuf_grow(&d.buf, size + 1);
|
||||
if (d.buf.len && prev_buf && size)
|
||||
strbuf_insert(&d.buf, 0, "\n", 1);
|
||||
strbuf_insertstr(&d.buf, 0, "\n");
|
||||
if (prev_buf && size)
|
||||
strbuf_insert(&d.buf, 0, prev_buf, size);
|
||||
free(prev_buf);
|
||||
|
@ -745,7 +745,7 @@ static int merge_commit(struct notes_merge_options *o)
|
|||
memset(&pretty_ctx, 0, sizeof(pretty_ctx));
|
||||
format_commit_message(partial, "%s", &msg, &pretty_ctx);
|
||||
strbuf_trim(&msg);
|
||||
strbuf_insert(&msg, 0, "notes: ", 7);
|
||||
strbuf_insertstr(&msg, 0, "notes: ");
|
||||
update_ref(msg.buf, o->local_ref, &oid,
|
||||
is_null_oid(&parent_oid) ? NULL : &parent_oid,
|
||||
0, UPDATE_REFS_DIE_ON_ERR);
|
||||
|
|
|
@ -373,7 +373,7 @@ static void strbuf_to_cone_pattern(struct strbuf *line, struct pattern_list *pl)
|
|||
return;
|
||||
|
||||
if (line->buf[0] != '/')
|
||||
strbuf_insert(line, 0, "/", 1);
|
||||
strbuf_insertstr(line, 0, "/");
|
||||
|
||||
insert_recursive_pattern(pl, line);
|
||||
}
|
||||
|
|
2
commit.c
2
commit.c
|
@ -993,7 +993,7 @@ static int do_sign_commit(struct strbuf *buf, const char *keyid)
|
|||
strbuf_insert(buf, inspos, gpg_sig_header, gpg_sig_header_len);
|
||||
inspos += gpg_sig_header_len;
|
||||
}
|
||||
strbuf_insert(buf, inspos++, " ", 1);
|
||||
strbuf_insertstr(buf, inspos++, " ");
|
||||
strbuf_insert(buf, inspos, bol, len);
|
||||
inspos += len;
|
||||
copypos += len;
|
||||
|
|
2
config.c
2
config.c
|
@ -204,7 +204,7 @@ static int prepare_include_condition_pattern(struct strbuf *pat)
|
|||
strbuf_splice(pat, 0, 1, path.buf, slash - path.buf);
|
||||
prefix = slash - path.buf + 1 /* slash */;
|
||||
} else if (!is_absolute_path(pat->buf))
|
||||
strbuf_insert(pat, 0, "**/", 3);
|
||||
strbuf_insertstr(pat, 0, "**/");
|
||||
|
||||
add_trailing_starstar_for_dir(pat);
|
||||
|
||||
|
|
4
http.c
4
http.c
|
@ -680,8 +680,8 @@ static void curl_dump_header(const char *text, unsigned char *ptr, size_t size,
|
|||
for (header = headers; *header; header++) {
|
||||
if (hide_sensitive_header)
|
||||
redact_sensitive_header(*header);
|
||||
strbuf_insert((*header), 0, text, strlen(text));
|
||||
strbuf_insert((*header), strlen(text), ": ", 2);
|
||||
strbuf_insertstr((*header), 0, text);
|
||||
strbuf_insertstr((*header), strlen(text), ": ");
|
||||
strbuf_rtrim((*header));
|
||||
strbuf_addch((*header), '\n');
|
||||
trace_strbuf(&trace_curl, (*header));
|
||||
|
|
|
@ -254,7 +254,7 @@ static void handle_content_type(struct mailinfo *mi, struct strbuf *line)
|
|||
mi->delsp = has_attr_value(line->buf, "delsp=", "yes");
|
||||
|
||||
if (slurp_attr(line->buf, "boundary=", boundary)) {
|
||||
strbuf_insert(boundary, 0, "--", 2);
|
||||
strbuf_insertstr(boundary, 0, "--");
|
||||
if (++mi->content_top >= &mi->content[MAX_BOUNDARIES]) {
|
||||
error("Too many boundaries to handle");
|
||||
mi->input_error = -1;
|
||||
|
@ -570,7 +570,7 @@ static int check_header(struct mailinfo *mi,
|
|||
len = strlen("Content-Type: ");
|
||||
strbuf_add(&sb, line->buf + len, line->len - len);
|
||||
decode_header(mi, &sb);
|
||||
strbuf_insert(&sb, 0, "Content-Type: ", len);
|
||||
strbuf_insertstr(&sb, 0, "Content-Type: ");
|
||||
handle_content_type(mi, &sb);
|
||||
ret = 1;
|
||||
goto check_header_out;
|
||||
|
|
|
@ -52,7 +52,7 @@ void commit_notes(struct repository *r, struct notes_tree *t, const char *msg)
|
|||
strbuf_complete_line(&buf);
|
||||
|
||||
create_notes_commit(r, t, NULL, buf.buf, buf.len, &commit_oid);
|
||||
strbuf_insert(&buf, 0, "notes: ", 7); /* commit message starts at index 7 */
|
||||
strbuf_insertstr(&buf, 0, "notes: ");
|
||||
update_ref(buf.buf, t->update_ref, &commit_oid, NULL, 0,
|
||||
UPDATE_REFS_DIE_ON_ERR);
|
||||
|
||||
|
|
4
notes.c
4
notes.c
|
@ -1332,9 +1332,9 @@ void expand_notes_ref(struct strbuf *sb)
|
|||
if (starts_with(sb->buf, "refs/notes/"))
|
||||
return; /* we're happy */
|
||||
else if (starts_with(sb->buf, "notes/"))
|
||||
strbuf_insert(sb, 0, "refs/", 5);
|
||||
strbuf_insertstr(sb, 0, "refs/");
|
||||
else
|
||||
strbuf_insert(sb, 0, "refs/notes/", 11);
|
||||
strbuf_insertstr(sb, 0, "refs/notes/");
|
||||
}
|
||||
|
||||
void expand_loose_notes_ref(struct strbuf *sb)
|
||||
|
|
4
pretty.c
4
pretty.c
|
@ -1581,9 +1581,9 @@ static size_t format_commit_item(struct strbuf *sb, /* in UTF-8 */
|
|||
strbuf_setlen(sb, sb->len - 1);
|
||||
} else if (orig_len != sb->len) {
|
||||
if (magic == ADD_LF_BEFORE_NON_EMPTY)
|
||||
strbuf_insert(sb, orig_len, "\n", 1);
|
||||
strbuf_insertstr(sb, orig_len, "\n");
|
||||
else if (magic == ADD_SP_BEFORE_NON_EMPTY)
|
||||
strbuf_insert(sb, orig_len, " ", 1);
|
||||
strbuf_insertstr(sb, orig_len, " ");
|
||||
}
|
||||
return consumed + 1;
|
||||
}
|
||||
|
|
12
strbuf.h
12
strbuf.h
|
@ -244,6 +244,18 @@ void strbuf_addchars(struct strbuf *sb, int c, size_t n);
|
|||
*/
|
||||
void strbuf_insert(struct strbuf *sb, size_t pos, const void *, size_t);
|
||||
|
||||
/**
|
||||
* Insert a NUL-terminated string to the given position of the buffer.
|
||||
* The remaining contents will be shifted, not overwritten. It's an
|
||||
* inline function to allow the compiler to resolve strlen() calls on
|
||||
* constants at compile time.
|
||||
*/
|
||||
static inline void strbuf_insertstr(struct strbuf *sb, size_t pos,
|
||||
const char *s)
|
||||
{
|
||||
strbuf_insert(sb, pos, s, strlen(s));
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert data to the given position of the buffer giving a printf format
|
||||
* string. The contents will be shifted, not overwritten.
|
||||
|
|
Загрузка…
Ссылка в новой задаче