diff options
author | Dmitry Potapov <dpotapov@gmail.com> | 2008-10-07 04:14:18 +0400 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2008-10-12 13:21:59 -0700 |
commit | 41038c5e1534a6abef21ec4cfc216d13d0ac2fb5 (patch) | |
tree | 932ca820130ff8bb4bbf67aa5a3ee1ca0d1b5b4d | |
parent | 5c283eb13c94be6ca974aa722159dc9838d10d97 (diff) | |
download | git-41038c5e1534a6abef21ec4cfc216d13d0ac2fb5.tar.gz |
check-attr: add an internal check_attr() function
This step is preparation to introducing --stdin-paths option.
I have also added maybe_flush_or_die() at the end of main() to ensure that
we exit with the zero code only when we flushed the output successfully.
Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rw-r--r-- | builtin-check-attr.c | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/builtin-check-attr.c b/builtin-check-attr.c index cb783fc77e..786256ed1e 100644 --- a/builtin-check-attr.c +++ b/builtin-check-attr.c @@ -6,6 +6,27 @@ static const char check_attr_usage[] = "git check-attr attr... [--] pathname..."; +static void check_attr(int cnt, struct git_attr_check *check, + const char** name, const char *file) +{ + int j; + if (git_checkattr(file, cnt, check)) + die("git_checkattr died"); + for (j = 0; j < cnt; j++) { + const char *value = check[j].value; + + if (ATTR_TRUE(value)) + value = "set"; + else if (ATTR_FALSE(value)) + value = "unset"; + else if (ATTR_UNSET(value)) + value = "unspecified"; + + quote_c_style(file, NULL, stdout, 0); + printf(": %s: %s\n", name[j], value); + } +} + int cmd_check_attr(int argc, const char **argv, const char *prefix) { struct git_attr_check *check; @@ -42,23 +63,8 @@ int cmd_check_attr(int argc, const char **argv, const char *prefix) check[i].attr = a; } - for (i = doubledash; i < argc; i++) { - int j; - if (git_checkattr(argv[i], cnt, check)) - die("git_checkattr died"); - for (j = 0; j < cnt; j++) { - const char *value = check[j].value; - - if (ATTR_TRUE(value)) - value = "set"; - else if (ATTR_FALSE(value)) - value = "unset"; - else if (ATTR_UNSET(value)) - value = "unspecified"; - - quote_c_style(argv[i], NULL, stdout, 0); - printf(": %s: %s\n", argv[j+1], value); - } - } + for (i = doubledash; i < argc; i++) + check_attr(cnt, check, argv+1, argv[i]); + maybe_flush_or_die(stdout, "attribute to stdout"); return 0; } |