Skip to content

Commit

Permalink
check-attr -z: a single -z should apply to both input and output
Browse files Browse the repository at this point in the history
Unless a command has separate --nul-terminated-{input,output}
options, the --nul-terminated-records (-z) option should apply
to both input and output for consistency.  The caller knows that its
input paths may need to be protected for LF, and the program shows
these problematic paths to its output.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Jul 12, 2013
1 parent d6dcb92 commit f7cd8c5
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 5 deletions.
9 changes: 7 additions & 2 deletions Documentation/git-check-attr.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@ OPTIONS
Read file names from stdin instead of from the command-line.

-z::
Only meaningful with `--stdin`; paths are separated with a
NUL character instead of a linefeed character.
The output format is modified to be machine-parseable.
If `--stdin` is also given, input paths are separated
with a NUL character instead of a linefeed character.

\--::
Interpret all preceding arguments as attributes and all following
Expand All @@ -48,6 +49,10 @@ OUTPUT
The output is of the form:
<path> COLON SP <attribute> COLON SP <info> LF

unless `-z` is in effect, in which case NUL is used as delimiter:
<path> NUL <attribute> NUL <info> NUL


<path> is the path of a file being queried, <attribute> is an attribute
being queried and <info> can be either:

Expand Down
14 changes: 11 additions & 3 deletions builtin/check-attr.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ static const struct option check_attr_options[] = {
OPT_BOOLEAN(0, "cached", &cached_attrs, N_("use .gitattributes only from the index")),
OPT_BOOLEAN(0 , "stdin", &stdin_paths, N_("read file names from stdin")),
OPT_BOOLEAN('z', NULL, &nul_term_line,
N_("input paths are terminated by a NUL character")),
N_("terminate input and output records by a NUL character")),
OPT_END()
};

Expand All @@ -38,8 +38,16 @@ static void output_attr(int cnt, struct git_attr_check *check,
else if (ATTR_UNSET(value))
value = "unspecified";

quote_c_style(file, NULL, stdout, 0);
printf(": %s: %s\n", git_attr_name(check[j].attr), value);
if (nul_term_line) {
printf("%s%c" /* path */
"%s%c" /* attrname */
"%s%c" /* attrvalue */,
file, 0, git_attr_name(check[j].attr), 0, value, 0);
} else {
quote_c_style(file, NULL, stdout, 0);
printf(": %s: %s\n", git_attr_name(check[j].attr), value);
}

}
}

Expand Down

0 comments on commit f7cd8c5

Please sign in to comment.