Re: [PATCH v1 02/12] rebase: don't translate trace strings
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Apr 25, 2019, 17:47 UTC
- Message-ID
- <41344c53-5b57-3d97-7b64-9128f7cba6af@gmail.com>
- In-Reply-To
- <xmqqy346czhj.fsf@gitster-ct.c.googlers.com>
On 19/04/2019 06:53, Junio C Hamano wrote:
Show 38 quoted lines
> Phillip Wood <phillip.wood123@gmail.com> writes:
>
>> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>>
>> commit b3a5d5a80c ("trace2:data: add subverb for rebase", 2019-02-22)
>> mistakenly marked the subverb names for translation and unnecessarily
>> NULL terminated the array.
>>
>> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
>> ---
>> builtin/rebase.c | 15 +++++++--------
>> 1 file changed, 7 insertions(+), 8 deletions(-)
>>
>> diff --git a/builtin/rebase.c b/builtin/rebase.c
>> index 52114cbf0d..239a54ecfe 100644
>> --- a/builtin/rebase.c
>> +++ b/builtin/rebase.c
>> @@ -1027,14 +1027,13 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
>> ACTION_EDIT_TODO,
>> ACTION_SHOW_CURRENT_PATCH,
>> } action = NO_ACTION;
>> - static const char *action_names[] = { N_("undefined"),
>> - N_("continue"),
>> - N_("skip"),
>> - N_("abort"),
>> - N_("quit"),
>> - N_("edit_todo"),
>> - N_("show_current_patch"),
>> - NULL };
>> + static const char *action_names[] = { "undefined",
>> + "continue",
>> + "skip",
>> + "abort",
>> + "quit",
>> + "edit_todo",
>> + "show_current_patch" };
>
> That's an improvement independent from the rest of the patches.Yes I only included it as I move the definition later in the series
Show 11 quoted lines
> Now we've had the C99 designated initialisers weather balloon > changes for some time in our codebase, perhaps we can ensure that > these entries match the intended & corresponding "enum action" > constants? If we can also ensure that the array is large enough so > that the trace2 call done like so > > trace2_cmd_mode(action_names[action]) > > is safe, that would be good, but that is secondary. > > Thanks.
If what's below is ok, I'll send a re-roll, I wasn't sure if it was best to die if action is larger than the array of names or just use a default. My worrying with dying is that it wont be caught by tests and will cause a problem for users who enable tracing. At least with what's below they can still rebase and hopefully report a bug about unknown action in their trace output.
Best Wishes
Phillip
diff --git a/builtin/rebase.c b/builtin/rebase.c index 52114cbf0d..3f56be230e 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -1027,14 +1027,15 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) ACTION_EDIT_TODO, ACTION_SHOW_CURRENT_PATCH, } action = NO_ACTION; - static const char *action_names[] = { N_("undefined"), - N_("continue"), - N_("skip"), - N_("abort"), - N_("quit"), - N_("edit_todo"), - N_("show_current_patch"), - NULL }; + static const char *action_names[] = { + [NO_ACTION] = "undefined", + [ACTION_CONTINUE] = "continue", + [ACTION_SKIP] = "skip", + [ACTION_ABORT] = "abort", + [ACTION_QUIT] = "quit", + [ACTION_EDIT_TODO] = "edit_todo", + [ACTION_SHOW_CURRENT_PATCH] = "show_current_patch" + }; const char *gpg_sign = NULL; struct string_list exec = STRING_LIST_INIT_NODUP; const char *rebase_merges = NULL; @@ -1225,8 +1226,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) trace2_cmd_mode("interactive"); else if (exec.nr) trace2_cmd_mode("interactive-exec"); - else + else if (action < ARRAY_SIZE(action_names)) trace2_cmd_mode(action_names[action]); + else + trace2_cmd_mode("unknown rebase action"); } switch (action) {