Skip to content

Commit

Permalink
give "nbuf" strbuf a more meaningful name
Browse files Browse the repository at this point in the history
It's a common pattern in our code to read paths from stdin,
separated either by newlines or NULs, and unquote as
necessary. In each of these five cases we use "nbuf" to
temporarily store the unquoted value. Let's give it the more
meaningful name "unquoted", which makes it easier to
understand the purpose of the variable.

While we're at it, let's also static-initialize all of our
strbufs. It's not wrong to call strbuf_init, but it
increases the cognitive load on the reader, who might wonder
"do we sometimes avoid initializing them?  why?".

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Feb 1, 2016
1 parent 1a0c8df commit 0d4cc1b
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 29 deletions.
13 changes: 6 additions & 7 deletions builtin/check-attr.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,24 +72,23 @@ static void check_attr(const char *prefix, int cnt,
static void check_attr_stdin_paths(const char *prefix, int cnt,
struct git_attr_check *check)
{
struct strbuf buf, nbuf;
struct strbuf buf = STRBUF_INIT;
struct strbuf unquoted = STRBUF_INIT;
strbuf_getline_fn getline_fn;

getline_fn = nul_term_line ? strbuf_getline_nul : strbuf_getline_lf;
strbuf_init(&buf, 0);
strbuf_init(&nbuf, 0);
while (getline_fn(&buf, stdin) != EOF) {
if (!nul_term_line && buf.buf[0] == '"') {
strbuf_reset(&nbuf);
if (unquote_c_style(&nbuf, buf.buf, NULL))
strbuf_reset(&unquoted);
if (unquote_c_style(&unquoted, buf.buf, NULL))
die("line is badly quoted");
strbuf_swap(&buf, &nbuf);
strbuf_swap(&buf, &unquoted);
}
check_attr(prefix, cnt, check, buf.buf);
maybe_flush_or_die(stdout, "attribute to stdout");
}
strbuf_release(&buf);
strbuf_release(&nbuf);
strbuf_release(&unquoted);
}

static NORETURN void error_with_usage(const char *msg)
Expand Down
13 changes: 6 additions & 7 deletions builtin/check-ignore.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,28 +115,27 @@ static int check_ignore(struct dir_struct *dir,

static int check_ignore_stdin_paths(struct dir_struct *dir, const char *prefix)
{
struct strbuf buf, nbuf;
struct strbuf buf = STRBUF_INIT;
struct strbuf unquoted = STRBUF_INIT;
char *pathspec[2] = { NULL, NULL };
strbuf_getline_fn getline_fn;
int num_ignored = 0;

getline_fn = nul_term_line ? strbuf_getline_nul : strbuf_getline_lf;
strbuf_init(&buf, 0);
strbuf_init(&nbuf, 0);
while (getline_fn(&buf, stdin) != EOF) {
if (!nul_term_line && buf.buf[0] == '"') {
strbuf_reset(&nbuf);
if (unquote_c_style(&nbuf, buf.buf, NULL))
strbuf_reset(&unquoted);
if (unquote_c_style(&unquoted, buf.buf, NULL))
die("line is badly quoted");
strbuf_swap(&buf, &nbuf);
strbuf_swap(&buf, &unquoted);
}
pathspec[0] = buf.buf;
num_ignored += check_ignore(dir, prefix,
1, (const char **)pathspec);
maybe_flush_or_die(stdout, "check-ignore to stdout");
}
strbuf_release(&buf);
strbuf_release(&nbuf);
strbuf_release(&unquoted);
return num_ignored;
}

Expand Down
11 changes: 6 additions & 5 deletions builtin/checkout-index.c
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,8 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix)
}

if (read_from_stdin) {
struct strbuf buf = STRBUF_INIT, nbuf = STRBUF_INIT;
struct strbuf buf = STRBUF_INIT;
struct strbuf unquoted = STRBUF_INIT;
strbuf_getline_fn getline_fn;

if (all)
Expand All @@ -261,16 +262,16 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix)
while (getline_fn(&buf, stdin) != EOF) {
char *p;
if (!nul_term_line && buf.buf[0] == '"') {
strbuf_reset(&nbuf);
if (unquote_c_style(&nbuf, buf.buf, NULL))
strbuf_reset(&unquoted);
if (unquote_c_style(&unquoted, buf.buf, NULL))
die("line is badly quoted");
strbuf_swap(&buf, &nbuf);
strbuf_swap(&buf, &unquoted);
}
p = prefix_path(prefix, prefix_length, buf.buf);
checkout_file(p, prefix);
free(p);
}
strbuf_release(&nbuf);
strbuf_release(&unquoted);
strbuf_release(&buf);
}

Expand Down
11 changes: 6 additions & 5 deletions builtin/hash-object.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,20 +58,21 @@ static void hash_object(const char *path, const char *type, const char *vpath,
static void hash_stdin_paths(const char *type, int no_filters, unsigned flags,
int literally)
{
struct strbuf buf = STRBUF_INIT, nbuf = STRBUF_INIT;
struct strbuf buf = STRBUF_INIT;
struct strbuf unquoted = STRBUF_INIT;

while (strbuf_getline_lf(&buf, stdin) != EOF) {
if (buf.buf[0] == '"') {
strbuf_reset(&nbuf);
if (unquote_c_style(&nbuf, buf.buf, NULL))
strbuf_reset(&unquoted);
if (unquote_c_style(&unquoted, buf.buf, NULL))
die("line is badly quoted");
strbuf_swap(&buf, &nbuf);
strbuf_swap(&buf, &unquoted);
}
hash_object(buf.buf, type, no_filters ? NULL : buf.buf, flags,
literally);
}
strbuf_release(&buf);
strbuf_release(&nbuf);
strbuf_release(&unquoted);
}

int cmd_hash_object(int argc, const char **argv, const char *prefix)
Expand Down
11 changes: 6 additions & 5 deletions builtin/update-index.c
Original file line number Diff line number Diff line change
Expand Up @@ -1075,24 +1075,25 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
}

if (read_from_stdin) {
struct strbuf buf = STRBUF_INIT, nbuf = STRBUF_INIT;
struct strbuf buf = STRBUF_INIT;
struct strbuf unquoted = STRBUF_INIT;

setup_work_tree();
while (getline_fn(&buf, stdin) != EOF) {
char *p;
if (!nul_term_line && buf.buf[0] == '"') {
strbuf_reset(&nbuf);
if (unquote_c_style(&nbuf, buf.buf, NULL))
strbuf_reset(&unquoted);
if (unquote_c_style(&unquoted, buf.buf, NULL))
die("line is badly quoted");
strbuf_swap(&buf, &nbuf);
strbuf_swap(&buf, &unquoted);
}
p = prefix_path(prefix, prefix_length, buf.buf);
update_one(p);
if (set_executable_bit)
chmod_path(set_executable_bit, p);
free(p);
}
strbuf_release(&nbuf);
strbuf_release(&unquoted);
strbuf_release(&buf);
}

Expand Down

0 comments on commit 0d4cc1b

Please sign in to comment.