When the apply functionality will be libified, the 'struct apply_state'
will be used by different pieces of code.

To properly initialize a 'struct apply_state', let's provide a nice
and easy to use init_apply_state() function.

Let's also provide clear_apply_state() to release memory used by
'struct apply_state' members, so that a 'struct apply_state' instance
can be easily reused without leaking memory.

Note that clear_apply_state() does nothing for now, but it will later.

While at it, let's rename 'prefix_' parameter to 'prefix'.

Helped-by: Eric Sunshine <sunsh...@sunshineco.com>
Reviewed-by: Stefan Beller <sbel...@google.com>
Signed-off-by: Christian Couder <chrisc...@tuxfamily.org>
---
 builtin/apply.c | 32 ++++++++++++++++++++++----------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index ae068e7..52b5d3e 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -4522,7 +4522,25 @@ static int option_parse_directory(const struct option 
*opt,
        return 0;
 }
 
-int cmd_apply(int argc, const char **argv, const char *prefix_)
+static void init_apply_state(struct apply_state *state, const char *prefix)
+{
+       memset(state, 0, sizeof(*state));
+       state->prefix = prefix;
+       state->prefix_length = state->prefix ? strlen(state->prefix) : 0;
+
+       git_apply_config();
+       if (apply_default_whitespace)
+               parse_whitespace_option(apply_default_whitespace);
+       if (apply_default_ignorewhitespace)
+               parse_ignorewhitespace_option(apply_default_ignorewhitespace);
+}
+
+static void clear_apply_state(struct apply_state *state)
+{
+       /* empty for now */
+}
+
+int cmd_apply(int argc, const char **argv, const char *prefix)
 {
        int i;
        int errs = 0;
@@ -4603,15 +4621,7 @@ int cmd_apply(int argc, const char **argv, const char 
*prefix_)
                OPT_END()
        };
 
-       memset(&state, 0, sizeof(state));
-       state.prefix = prefix_;
-       state.prefix_length = state.prefix ? strlen(state.prefix) : 0;
-
-       git_apply_config();
-       if (apply_default_whitespace)
-               parse_whitespace_option(apply_default_whitespace);
-       if (apply_default_ignorewhitespace)
-               parse_ignorewhitespace_option(apply_default_ignorewhitespace);
+       init_apply_state(&state, prefix);
 
        argc = parse_options(argc, argv, state.prefix, builtin_apply_options,
                        apply_usage, 0);
@@ -4695,5 +4705,7 @@ int cmd_apply(int argc, const char **argv, const char 
*prefix_)
                        die(_("Unable to write new index file"));
        }
 
+       clear_apply_state(&state);
+
        return !!errs;
 }
-- 
2.8.3.443.gaeee61e

--
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