It's simpler to store the file names directly, and form the fast-export arguments only when needed, and re-use the same strbuf with a format. Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> --- transport-helper.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/transport-helper.c b/transport-helper.c index b068ea5..2747f98 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -195,15 +195,9 @@ static struct child_process *get_helper(struct transport *transport) } else if (!strcmp(capname, "signed-tags")) { data->signed_tags = 1; } else if (starts_with(capname, "export-marks ")) { - struct strbuf arg = STRBUF_INIT; - strbuf_addstr(&arg, "--export-marks="); - strbuf_addstr(&arg, capname + strlen("export-marks ")); - data->export_marks = strbuf_detach(&arg, NULL); + data->export_marks = xstrdup(capname + strlen("export-marks ")); } else if (starts_with(capname, "import-marks")) { - struct strbuf arg = STRBUF_INIT; - strbuf_addstr(&arg, "--import-marks="); - strbuf_addstr(&arg, capname + strlen("import-marks ")); - data->import_marks = strbuf_detach(&arg, NULL); + data->import_marks = xstrdup(capname + strlen("import-marks ")); } else if (starts_with(capname, "no-private-update")) { data->no_private_update = 1; } else if (mandatory) { @@ -429,6 +423,7 @@ static int get_exporter(struct transport *transport, struct child_process *helper = get_helper(transport); int argc = 0, i; memset(fastexport, 0, sizeof(*fastexport)); + struct strbuf tmp = STRBUF_INIT; /* we need to duplicate helper->in because we want to use it after * fastexport is done with it. */ @@ -438,10 +433,14 @@ static int get_exporter(struct transport *transport, fastexport->argv[argc++] = "--use-done-feature"; fastexport->argv[argc++] = data->signed_tags ? "--signed-tags=verbatim" : "--signed-tags=warn-strip"; - if (data->export_marks) - fastexport->argv[argc++] = data->export_marks; - if (data->import_marks) - fastexport->argv[argc++] = data->import_marks; + if (data->export_marks) { + strbuf_addf(&tmp, "--export-marks=%s", data->export_marks); + fastexport->argv[argc++] = strbuf_detach(&tmp, NULL); + } + if (data->import_marks) { + strbuf_addf(&tmp, "--import-marks=%s", data->import_marks); + fastexport->argv[argc++] = strbuf_detach(&tmp, NULL); + } for (i = 0; i < revlist_args->nr; i++) fastexport->argv[argc++] = revlist_args->items[i].string; -- 1.9.1+fc3.9.gc73078e -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html