@@ -49,6 +49,11 @@ static int option_parse_trailer(const struct option *opt,
const char *arg, int unset)
{
struct list_head *trailers = opt->value;
+ struct strbuf tok = STRBUF_INIT;
+ struct strbuf val = STRBUF_INIT;
+ const struct trailer_conf *conf;
+ ssize_t separator_pos;
+ static char *cl_separators;
if (unset) {
free_new_trailers(trailers);
@@ -58,7 +63,42 @@ static int option_parse_trailer(const struct option *opt,
if (!arg)
return -1;
- parse_trailer_from_command_line_arg(arg, where, if_exists, if_missing, trailers);
+ /*
+ * In command-line arguments, '=' is accepted (in addition to the
+ * separators that are defined).
+ */
+ cl_separators = xstrfmt("=%s", trailer_default_separators());
+ separator_pos = find_separator(arg, cl_separators);
+ free(cl_separators);
+
+ if (separator_pos == 0) {
+ struct strbuf sb = STRBUF_INIT;
+ strbuf_addstr(&sb, arg);
+ strbuf_trim(&sb);
+ error(_("empty trailer token in trailer '%.*s'"),
+ (int) sb.len, sb.buf);
+ strbuf_release(&sb);
+ } else {
+ struct trailer_conf *conf_current = new_trailer_conf();
+ parse_trailer(arg, separator_pos, &tok, &val, &conf);
+ duplicate_trailer_conf(conf_current, conf);
+
+ /*
+ * Override conf_current with settings specified via CLI flags.
+ */
+ if (where != WHERE_DEFAULT)
+ trailer_set_conf_where(where, conf_current);
+ if (if_exists != EXISTS_DEFAULT)
+ trailer_set_conf_if_exists(if_exists, conf_current);
+ if (if_missing != MISSING_DEFAULT)
+ trailer_set_conf_if_missing(if_missing, conf_current);
+
+ trailer_add_arg_item(trailers,
+ strbuf_detach(&tok, NULL),
+ strbuf_detach(&val, NULL),
+ conf_current);
+ free_trailer_conf(conf_current);
+ }
return 0;
}
@@ -754,56 +754,6 @@ void parse_trailers_from_config(struct list_head *config_head)
}
}
-void parse_trailer_from_command_line_arg(const char *line,
- enum trailer_where where,
- enum trailer_if_exists if_exists,
- enum trailer_if_missing if_missing,
- struct list_head *arg_head)
-{
- struct strbuf tok = STRBUF_INIT;
- struct strbuf val = STRBUF_INIT;
- const struct trailer_conf *conf;
-
- /*
- * In command-line arguments, '=' is accepted (in addition to the
- * separators that are defined).
- */
- char *cl_separators = xstrfmt("=%s", trailer_default_separators());
-
- /* Add an arg item for a trailer from the command line */
- ssize_t separator_pos = find_separator(line, cl_separators);
- free(cl_separators);
-
- if (separator_pos == 0) {
- struct strbuf sb = STRBUF_INIT;
- strbuf_addstr(&sb, line);
- strbuf_trim(&sb);
- error(_("empty trailer token in trailer '%.*s'"),
- (int) sb.len, sb.buf);
- strbuf_release(&sb);
- } else {
- struct trailer_conf *conf_current = new_trailer_conf();
- parse_trailer(line, separator_pos, &tok, &val, &conf);
- duplicate_trailer_conf(conf_current, conf);
-
- /*
- * Override conf_current with settings specified via CLI flags.
- */
- if (where != WHERE_DEFAULT)
- trailer_set_conf_where(where, conf_current);
- if (if_exists != EXISTS_DEFAULT)
- trailer_set_conf_if_exists(if_exists, conf_current);
- if (if_missing != MISSING_DEFAULT)
- trailer_set_conf_if_missing(if_missing, conf_current);
-
- trailer_add_arg_item(arg_head,
- strbuf_detach(&tok, NULL),
- strbuf_detach(&val, NULL),
- conf_current);
- free_trailer_conf(conf_current);
- }
-}
-
static const char *next_line(const char *str)
{
const char *nl = strchrnul(str, '\n');
@@ -62,12 +62,6 @@ struct process_trailer_options {
void parse_trailers_from_config(struct list_head *config_head);
-void parse_trailer_from_command_line_arg(const char *line,
- enum trailer_where where,
- enum trailer_if_exists if_exists,
- enum trailer_if_missing if_missing,
- struct list_head *arg_head);
-
void process_trailers_lists(struct list_head *head,
struct list_head *arg_head);