{"thread":{"id":"57452","subject":"[PATCH] usage.[ch] API users: use report_fn, not hardcoded prototype","startedAt":"2022-02-21T16:09:29Z","lastAt":"2022-02-21T18:27:25Z","messageCount":2,"participants":["Ævar Arnfjörð Bjarmason","Taylor Blau"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"449017","messageId":"patch-1.1-7551daf131b-20220221T160719Z-avarab@gmail.com","threadId":"57452","inReplyTo":null,"subject":"[PATCH] usage.[ch] API users: use report_fn, not hardcoded prototype","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2022-02-21T16:09:18Z","receivedAt":"2022-02-21T16:09:29Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Change a couple of users of \"report_fn\" that hardcoded a definition of\nit to use the definition of report_fn instead.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n\nI'll eventually want to depend on this for a larger topic I plan to\nre-roll[1], but in the meantime this trivial fix can hopefully cook &\ngraduate.\n\n1. https://lore.kernel.org/git/RFC-cover-00.21-00000000000-20211115T220831Z-avarab@gmail.com/\n\n apply.h       | 4 ++--\n run-command.c | 3 +--\n 2 files changed, 3 insertions(+), 4 deletions(-)\n\ndiff --git a/apply.h b/apply.h\nindex 4052da50c06..3ddc8be9c71 100644\n--- a/apply.h\n+++ b/apply.h\n@@ -103,8 +103,8 @@ struct apply_state {\n \t * set_error_routine() or set_warn_routine() to install muting\n \t * routines when in verbosity_silent mode.\n \t */\n-\tvoid (*saved_error_routine)(const char *err, va_list params);\n-\tvoid (*saved_warn_routine)(const char *warn, va_list params);\n+\treport_fn saved_error_routine;\n+\treport_fn saved_warn_routine;\n \n \t/* These control whitespace errors */\n \tenum apply_ws_error_action ws_error_action;\ndiff --git a/run-command.c b/run-command.c\nindex a8501e38ceb..3d854c498aa 100644\n--- a/run-command.c\n+++ b/run-command.c\n@@ -362,10 +362,9 @@ static void NORETURN child_die_fn(const char *err, va_list params)\n /* this runs in the parent process */\n static void child_err_spew(struct child_process *cmd, struct child_err *cerr)\n {\n-\tstatic void (*old_errfn)(const char *err, va_list params);\n+\treport_fn old_errfn = get_error_routine();\n \treport_fn die_message_routine = get_die_message_routine();\n \n-\told_errfn = get_error_routine();\n \tset_error_routine(die_message_routine);\n \terrno = cerr->syserr;\n \n-- \n2.35.1.1132.ga1fe46f8690\n\n"},{"id":"449026","messageId":"YhPYGDfzdMElklX7@nand.local","threadId":"57452","inReplyTo":"patch-1.1-7551daf131b-20220221T160719Z-avarab@gmail.com","subject":"Re: [PATCH] usage.[ch] API users: use report_fn, not hardcoded prototype","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2022-02-21T18:21:12Z","receivedAt":"2022-02-21T18:27:25Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Mon, Feb 21, 2022 at 05:09:18PM +0100, Ævar Arnfjörð Bjarmason wrote:\n> Change a couple of users of \"report_fn\" that hardcoded a definition of\n> it to use the definition of report_fn instead.\n>\n> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n> ---\n>\n> I'll eventually want to depend on this for a larger topic I plan to\n> re-roll[1], but in the meantime this trivial fix can hopefully cook &\n> graduate.\n\nThis looks good to me, thanks.\n\n> diff --git a/run-command.c b/run-command.c\n> index a8501e38ceb..3d854c498aa 100644\n> --- a/run-command.c\n> +++ b/run-command.c\n> @@ -362,10 +362,9 @@ static void NORETURN child_die_fn(const char *err, va_list params)\n>  /* this runs in the parent process */\n>  static void child_err_spew(struct child_process *cmd, struct child_err *cerr)\n>  {\n> -\tstatic void (*old_errfn)(const char *err, va_list params);\n> +\treport_fn old_errfn = get_error_routine();\n>  \treport_fn die_message_routine = get_die_message_routine();\n\nPerhaps as part of the larger series you alluded to earlier, but we\ncould get rid of the die_message_routine variable here altogether. It\nonly exists to pass as the argument to set_error_routine(), and isn't\nused anywhere else in the function.\n\nSo you could do something like this on top:\n\n--- >8 ---\ndiff --git a/run-command.c b/run-command.c\nindex 3d854c498a..4afa01db9a 100644\n--- a/run-command.c\n+++ b/run-command.c\n@@ -363,9 +363,8 @@ static void NORETURN child_die_fn(const char *err, va_list params)\n static void child_err_spew(struct child_process *cmd, struct child_err *cerr)\n {\n \treport_fn old_errfn = get_error_routine();\n-\treport_fn die_message_routine = get_die_message_routine();\n\n-\tset_error_routine(die_message_routine);\n+\tset_error_routine(get_die_message_routine());\n \terrno = cerr->syserr;\n\n \tswitch (cerr->err) {\n--- 8< ---\n\nBut it doesn't need to happen here, just an idle thought I had while\nreading.\n\nThanks,\nTaylor\n"}]}