aboutsummaryrefslogtreecommitdiff
path: root/apply.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-02-27 14:16:30 -0800
committerJunio C Hamano <junkio@cox.net>2006-02-27 14:16:30 -0800
commitfc96b7c9ba5034a408d508c663a96a15b8f8729c (patch)
treecbe883a257fb8aa7a16d020416fb4332b3483a62 /apply.c
parentb5767dd6605364002a96a9d039cd1f010707b4f6 (diff)
downloadgit-fc96b7c9ba5034a408d508c663a96a15b8f8729c.tar.gz
git-fc96b7c9ba5034a408d508c663a96a15b8f8729c.tar.xz
apply: squelch excessive errors and --whitespace=error-all
This by default makes --whitespace=warn, error, and strip to warn only the first 5 additions of trailing whitespaces. A new option --whitespace=error-all can be used to view all of them before applying. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'apply.c')
-rw-r--r--apply.c53
1 files changed, 45 insertions, 8 deletions
diff --git a/apply.c b/apply.c
index 7dbbeb47a..8139d832e 100644
--- a/apply.c
+++ b/apply.c
@@ -41,6 +41,8 @@ static enum whitespace_eol {
strip_and_apply,
} new_whitespace = nowarn;
static int whitespace_error = 0;
+static int squelch_whitespace_errors = 5;
+static int applied_after_stripping = 0;
static const char *patch_input_file = NULL;
/*
@@ -832,11 +834,16 @@ static int parse_fragment(char *line, unsigned long size, struct patch *patch, s
*/
if ((new_whitespace != nowarn) &&
isspace(line[len-2])) {
- fprintf(stderr, "Added whitespace\n");
- fprintf(stderr, "%s:%d:%.*s\n",
- patch_input_file,
- linenr, len-2, line+1);
- whitespace_error = 1;
+ whitespace_error++;
+ if (squelch_whitespace_errors &&
+ squelch_whitespace_errors <
+ whitespace_error)
+ ;
+ else {
+ fprintf(stderr, "Adds trailing whitespace.\n%s:%d:%.*s\n",
+ patch_input_file,
+ linenr, len-2, line+1);
+ }
}
added++;
newlines--;
@@ -1129,6 +1136,7 @@ static int apply_line(char *output, const char *patch, int plen)
plen--;
while (0 < plen && isspace(patch[plen]))
plen--;
+ applied_after_stripping++;
}
memcpy(output, patch + 1, plen);
if (add_nl_to_tail)
@@ -1895,11 +1903,16 @@ int main(int argc, char **argv)
new_whitespace = error_on_whitespace;
continue;
}
+ if (!strcmp(arg+13, "error-all")) {
+ new_whitespace = error_on_whitespace;
+ squelch_whitespace_errors = 0;
+ continue;
+ }
if (!strcmp(arg+13, "strip")) {
new_whitespace = strip_and_apply;
continue;
}
- die("unrecognixed whitespace option '%s'", arg+13);
+ die("unrecognized whitespace option '%s'", arg+13);
}
if (check_index && prefix_length < 0) {
@@ -1919,7 +1932,31 @@ int main(int argc, char **argv)
}
if (read_stdin)
apply_patch(0, "<stdin>");
- if (whitespace_error && new_whitespace == error_on_whitespace)
- return 1;
+ if (whitespace_error) {
+ if (squelch_whitespace_errors &&
+ squelch_whitespace_errors < whitespace_error) {
+ int squelched =
+ whitespace_error - squelch_whitespace_errors;
+ fprintf(stderr, "warning: squelched %d whitespace error%s\n",
+ squelched,
+ squelched == 1 ? "" : "s");
+ }
+ if (new_whitespace == error_on_whitespace)
+ die("%d line%s add%s trailing whitespaces.",
+ whitespace_error,
+ whitespace_error == 1 ? "" : "s",
+ whitespace_error == 1 ? "s" : "");
+ if (applied_after_stripping)
+ fprintf(stderr, "warning: %d line%s applied after"
+ " stripping trailing whitespaces.\n",
+ applied_after_stripping,
+ applied_after_stripping == 1 ? "" : "s");
+ else if (whitespace_error)
+ fprintf(stderr, "warning: %d line%s add%s trailing"
+ " whitespaces.\n",
+ whitespace_error,
+ whitespace_error == 1 ? "" : "s",
+ whitespace_error == 1 ? "s" : "");
+ }
return 0;
}