Improved format-patch --signature option so that it can read from a file as well as from a string. # from a string $ git format-patch --signature "from a string" origin # or from a file $ git format-patch --signature ~/.signature origin Now signatures with newlines or other special characters can be easily included. Signed-off-by: Jeremiah Mahler <jmmahler@xxxxxxxxx> --- builtin/log.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/builtin/log.c b/builtin/log.c index 39e8836..5988f8f 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -1147,6 +1147,27 @@ static int from_callback(const struct option *opt, const char *arg, int unset) return 0; } +static int signature_callback(const struct option *opt, const char *arg, + int unset) +{ + const char **signature = opt->value; + static char buf[1024]; + size_t sz; + FILE *fp; + + fp = fopen(arg, "r"); + if (fp) { + sz = sizeof(buf); + sz = fread(buf, 1, sz - 1, fp); + buf[sz] = '\0'; + *signature = buf; + fclose(fp); + } else { + *signature = arg; + } + return 0; +} + int cmd_format_patch(int argc, const char **argv, const char *prefix) { struct commit *commit; @@ -1228,8 +1249,9 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) { OPTION_CALLBACK, 0, "thread", &thread, N_("style"), N_("enable message threading, styles: shallow, deep"), PARSE_OPT_OPTARG, thread_callback }, - OPT_STRING(0, "signature", &signature, N_("signature"), - N_("add a signature")), + { OPTION_CALLBACK, 0, "signature", &signature, N_("signature-file"), + N_("add a signature from a string or a file"), + PARSE_OPT_NONEG, signature_callback }, OPT__QUIET(&quiet, N_("don't print the patch filenames")), OPT_END() }; -- Jeremiah Mahler jmmahler@xxxxxxxxx http://github.com/jmahler -- 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