From: Christian Couder <christian.couder@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>, "Jeff King" <peff@peff.net>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Karsten Blees" <karsten.blees@gmail.com>,
"Nguyen Thai Ngoc Duy" <pclouds@gmail.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Stefan Beller" <sbeller@google.com>,
"Matthieu Moy" <Matthieu.Moy@grenoble-inp.fr>,
"Christian Couder" <chriscool@tuxfamily.org>
Subject: [RFC/PATCH 48/48] builtin/apply: move applying patches into apply_all_patches()
Date: Wed, 9 Mar 2016 18:49:16 +0100 [thread overview]
Message-ID: <1457545756-20616-49-git-send-email-chriscool@tuxfamily.org> (raw)
In-Reply-To: <1457545756-20616-1-git-send-email-chriscool@tuxfamily.org>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
builtin/apply.c | 128 ++++++++++++++++++++++++++++++--------------------------
1 file changed, 69 insertions(+), 59 deletions(-)
diff --git a/builtin/apply.c b/builtin/apply.c
index 3f76469..9611b1a 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -4718,13 +4718,79 @@ static void check_apply_state(struct apply_state *state, int force_apply)
state->unsafe_paths = 0;
}
-int cmd_apply(int argc, const char **argv, const char *prefix_)
+static int apply_all_patches(struct apply_state *state,
+ int argc,
+ const char **argv,
+ int options)
{
int i;
int errs = 0;
+ int read_stdin = 1;
+
+ for (i = 0; i < argc; i++) {
+ const char *arg = argv[i];
+ int fd;
+
+ if (!strcmp(arg, "-")) {
+ errs |= apply_patch(state, 0, "<stdin>", options);
+ read_stdin = 0;
+ continue;
+ } else if (0 < state->prefix_length)
+ arg = prefix_filename(state->prefix,
+ state->prefix_length,
+ arg);
+
+ fd = open(arg, O_RDONLY);
+ if (fd < 0)
+ die_errno(_("can't open patch '%s'"), arg);
+ read_stdin = 0;
+ set_default_whitespace_mode(state);
+ errs |= apply_patch(state, fd, arg, options);
+ close(fd);
+ }
+ set_default_whitespace_mode(state);
+ if (read_stdin)
+ errs |= apply_patch(state, 0, "<stdin>", options);
+
+ if (state->whitespace_error) {
+ if (state->squelch_whitespace_errors &&
+ state->squelch_whitespace_errors < state->whitespace_error) {
+ int squelched =
+ state->whitespace_error - state->squelch_whitespace_errors;
+ warning(Q_("squelched %d whitespace error",
+ "squelched %d whitespace errors",
+ squelched),
+ squelched);
+ }
+ if (state->ws_error_action == die_on_ws_error)
+ die(Q_("%d line adds whitespace errors.",
+ "%d lines add whitespace errors.",
+ state->whitespace_error),
+ state->whitespace_error);
+ if (state->applied_after_fixing_ws && state->apply)
+ warning("%d line%s applied after"
+ " fixing whitespace errors.",
+ state->applied_after_fixing_ws,
+ state->applied_after_fixing_ws == 1 ? "" : "s");
+ else if (state->whitespace_error)
+ warning(Q_("%d line adds whitespace errors.",
+ "%d lines add whitespace errors.",
+ state->whitespace_error),
+ state->whitespace_error);
+ }
+
+ if (state->update_index) {
+ if (write_locked_index(&the_index, &state->lock_file, COMMIT_LOCK))
+ die(_("Unable to write new index file"));
+ }
+
+ return !!errs;
+}
+
+int cmd_apply(int argc, const char **argv, const char *prefix_)
+{
int force_apply = 0;
int options = 0;
- int read_stdin = 1;
struct apply_state state;
struct option builtin_apply_options[] = {
@@ -4803,61 +4869,5 @@ int cmd_apply(int argc, const char **argv, const char *prefix_)
check_apply_state(&state, force_apply);
- for (i = 0; i < argc; i++) {
- const char *arg = argv[i];
- int fd;
-
- if (!strcmp(arg, "-")) {
- errs |= apply_patch(&state, 0, "<stdin>", options);
- read_stdin = 0;
- continue;
- } else if (0 < state.prefix_length)
- arg = prefix_filename(state.prefix,
- state.prefix_length,
- arg);
-
- fd = open(arg, O_RDONLY);
- if (fd < 0)
- die_errno(_("can't open patch '%s'"), arg);
- read_stdin = 0;
- set_default_whitespace_mode(&state);
- errs |= apply_patch(&state, fd, arg, options);
- close(fd);
- }
- set_default_whitespace_mode(&state);
- if (read_stdin)
- errs |= apply_patch(&state, 0, "<stdin>", options);
- if (state.whitespace_error) {
- if (state.squelch_whitespace_errors &&
- state.squelch_whitespace_errors < state.whitespace_error) {
- int squelched =
- state.whitespace_error - state.squelch_whitespace_errors;
- warning(Q_("squelched %d whitespace error",
- "squelched %d whitespace errors",
- squelched),
- squelched);
- }
- if (state.ws_error_action == die_on_ws_error)
- die(Q_("%d line adds whitespace errors.",
- "%d lines add whitespace errors.",
- state.whitespace_error),
- state.whitespace_error);
- if (state.applied_after_fixing_ws && state.apply)
- warning("%d line%s applied after"
- " fixing whitespace errors.",
- state.applied_after_fixing_ws,
- state.applied_after_fixing_ws == 1 ? "" : "s");
- else if (state.whitespace_error)
- warning(Q_("%d line adds whitespace errors.",
- "%d lines add whitespace errors.",
- state.whitespace_error),
- state.whitespace_error);
- }
-
- if (state.update_index) {
- if (write_locked_index(&the_index, &state.lock_file, COMMIT_LOCK))
- die(_("Unable to write new index file"));
- }
-
- return !!errs;
+ return apply_all_patches(&state, argc, argv, options);
}
--
2.8.0.rc1.49.gca61272
next prev parent reply other threads:[~2016-03-09 17:54 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-09 17:48 [RFC/PATCH 00/48] Libifying git apply Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 01/48] builtin/apply: avoid parameter shadowing 'p_value' global Christian Couder
2016-03-09 23:27 ` Junio C Hamano
2016-03-10 0:54 ` Duy Nguyen
2016-03-10 10:45 ` Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 02/48] builtin/apply: avoid parameter shadowing 'linenr' global Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 03/48] builtin/apply: avoid local variable shadowing 'len' parameter Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 04/48] builtin/apply: extract line_by_line_fuzzy_match() from match_fragment() Christian Couder
2016-03-09 22:55 ` Stefan Beller
2016-03-10 8:36 ` Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 05/48] builtin/apply: move 'options' variable into cmd_apply() Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 06/48] builtin/apply: introduce 'struct apply_state' to start libifying Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 07/48] builtin/apply: move 'newfd' global into 'struct apply_state' Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 08/48] builtin/apply: move 'unidiff_zero' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 09/48] builtin/apply: move 'check' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 10/48] builtin/apply: move 'check_index' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 11/48] builtin/apply: move 'apply_in_reverse' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 12/48] builtin/apply: move 'apply_with_reject' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 13/48] builtin/apply: move 'apply_verbosely' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 14/48] builtin/apply: move 'update_index' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 15/48] builtin/apply: move 'allow_overlap' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 16/48] builtin/apply: move 'cached' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 17/48] builtin/apply: move 'diffstat' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 18/48] builtin/apply: move 'numstat' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 19/48] builtin/apply: move 'summary' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 20/48] builtin/apply: move 'threeway' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 21/48] builtin/apply: move 'no-add' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 22/48] builtin/apply: move 'unsafe_paths' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 23/48] builtin/apply: move 'line_termination' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 24/48] builtin/apply: move 'fake_ancestor' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 25/48] builtin/apply: move 'p_context' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 26/48] builtin/apply: move 'apply' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 27/48] builtin/apply: move 'read_stdin' global into cmd_apply() Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 28/48] builtin/apply: move 'lock_file' global into 'struct apply_state' Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 29/48] builtin/apply: move 'patch_input_file' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 30/48] builtin/apply: move 'limit_by_name' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 31/48] builtin/apply: move 'has_include' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 32/48] builtin/apply: move 'p_value' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 33/48] builtin/apply: move 'p_value_known' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 34/48] builtin/apply: move 'root' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 35/48] builtin/apply: move 'whitespace_error' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 36/48] builtin/apply: move 'whitespace_option' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 37/48] builtin/apply: remove whitespace_option arg from set_default_whitespace_mode() Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 38/48] builtin/apply: move 'squelch_whitespace_errors' into 'struct apply_state' Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 39/48] builtin/apply: move 'applied_after_fixing_ws' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 40/48] builtin/apply: move 'ws_error_action' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 41/48] builtin/apply: move 'ws_ignore_action' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 42/48] builtin/apply: move 'max_change' and 'max_len' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 43/48] builtin/apply: move 'linenr' global " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 44/48] builtin/apply: move 'fn_table' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 45/48] builtin/apply: move 'symlink_changes' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 46/48] builtin/apply: move 'state' init into init_apply_state() Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 47/48] builtin/apply: move 'state' check into check_apply_state() Christian Couder
2016-03-09 17:49 ` Christian Couder [this message]
2016-03-09 18:14 ` [RFC/PATCH 00/48] Libifying git apply Junio C Hamano
2016-03-11 15:57 ` Christian Couder
2016-03-10 9:26 ` Duy Nguyen
2016-03-11 17:34 ` Christian Couder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1457545756-20616-49-git-send-email-chriscool@tuxfamily.org \
--to=christian.couder@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=avarab@gmail.com \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=karsten.blees@gmail.com \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=sbeller@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).