To libify the apply functionality the 'max_change' and 'max_len'
variables should not be static and global to the file. Let's move
them into 'struct apply_state'.

Reviewed-by: Stefan Beller <sbel...@google.com>
Signed-off-by: Christian Couder <chrisc...@tuxfamily.org>
---
 builtin/apply.c | 49 +++++++++++++++++++++++++------------------------
 1 file changed, 25 insertions(+), 24 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index f8c3677..deba14c 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -76,6 +76,14 @@ struct apply_state {
        int unsafe_paths;
        int line_termination;
 
+       /*
+        * For "diff-stat" like behaviour, we keep track of the biggest change
+        * we've seen, and the longest filename. That allows us to do simple
+        * scaling.
+        */
+       int max_change;
+       int max_len;
+
        int p_value;
        int p_value_known;
        unsigned int p_context;
@@ -148,13 +156,6 @@ static void set_default_whitespace_mode(struct apply_state 
*state)
                state->ws_error_action = (state->apply ? warn_on_ws_error : 
nowarn_ws_error);
 }
 
-/*
- * For "diff-stat" like behaviour, we keep track of the biggest change
- * we've seen, and the longest filename. That allows us to do simple
- * scaling.
- */
-static int max_change, max_len;
-
 /*
  * Various "current state", notably line numbers and what
  * file (and how) we're patching right now.. The "is_xxxx"
@@ -2179,7 +2180,7 @@ static const char pluses[] =
 static const char minuses[]=
 "----------------------------------------------------------------------";
 
-static void show_stats(struct patch *patch)
+static void show_stats(struct apply_state *state, struct patch *patch)
 {
        struct strbuf qname = STRBUF_INIT;
        char *cp = patch->new_name ? patch->new_name : patch->old_name;
@@ -2190,7 +2191,7 @@ static void show_stats(struct patch *patch)
        /*
         * "scale" the filename
         */
-       max = max_len;
+       max = state->max_len;
        if (max > 50)
                max = 50;
 
@@ -2213,13 +2214,13 @@ static void show_stats(struct patch *patch)
        /*
         * scale the add/delete
         */
-       max = max + max_change > 70 ? 70 - max : max_change;
+       max = max + state->max_change > 70 ? 70 - max : state->max_change;
        add = patch->lines_added;
        del = patch->lines_deleted;
 
-       if (max_change > 0) {
-               int total = ((add + del) * max + max_change / 2) / max_change;
-               add = (add * max + max_change / 2) / max_change;
+       if (state->max_change > 0) {
+               int total = ((add + del) * max + state->max_change / 2) / 
state->max_change;
+               add = (add * max + state->max_change / 2) / state->max_change;
                del = total - add;
        }
        printf("%5d %.*s%.*s\n", patch->lines_added + patch->lines_deleted,
@@ -4045,7 +4046,7 @@ static void build_fake_ancestor(struct patch *list, const 
char *filename)
        discard_index(&result);
 }
 
-static void stat_patch_list(struct patch *patch)
+static void stat_patch_list(struct apply_state *state, struct patch *patch)
 {
        int files, adds, dels;
 
@@ -4053,7 +4054,7 @@ static void stat_patch_list(struct patch *patch)
                files++;
                adds += patch->lines_added;
                dels += patch->lines_deleted;
-               show_stats(patch);
+               show_stats(state, patch);
        }
 
        print_stat_summary(stdout, files, adds, dels);
@@ -4151,25 +4152,25 @@ static void summary_patch_list(struct patch *patch)
        }
 }
 
-static void patch_stats(struct patch *patch)
+static void patch_stats(struct apply_state *state, struct patch *patch)
 {
        int lines = patch->lines_added + patch->lines_deleted;
 
-       if (lines > max_change)
-               max_change = lines;
+       if (lines > state->max_change)
+               state->max_change = lines;
        if (patch->old_name) {
                int len = quote_c_style(patch->old_name, NULL, NULL, 0);
                if (!len)
                        len = strlen(patch->old_name);
-               if (len > max_len)
-                       max_len = len;
+               if (len > state->max_len)
+                       state->max_len = len;
        }
        if (patch->new_name) {
                int len = quote_c_style(patch->new_name, NULL, NULL, 0);
                if (!len)
                        len = strlen(patch->new_name);
-               if (len > max_len)
-                       max_len = len;
+               if (len > state->max_len)
+                       state->max_len = len;
        }
 }
 
@@ -4526,7 +4527,7 @@ static int apply_patch(struct apply_state *state,
                if (state->apply_in_reverse)
                        reverse_patches(patch);
                if (use_patch(state, patch)) {
-                       patch_stats(patch);
+                       patch_stats(state, patch);
                        *listp = patch;
                        listp = &patch->next;
                }
@@ -4570,7 +4571,7 @@ static int apply_patch(struct apply_state *state,
                build_fake_ancestor(list, state->fake_ancestor);
 
        if (state->diffstat)
-               stat_patch_list(list);
+               stat_patch_list(state, list);
 
        if (state->numstat)
                numstat_patch_list(state, list);
-- 
2.8.2.490.g3dabe57

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to