> +void slog_set_command_name(const char *command_name)
> +{
> + /*
> + * Capture the command name even if logging is not enabled
> + * because we don't know if the config has been loaded yet by
> + * the cmd_<command>() and/or it may be too early to force a
> + * lazy load.
> + */
> + if (my__command_name)
> + free(my__command_name);
> + my__command_name = xstrdup(command_name);
> +}
> +
> +void slog_set_sub_command_name(const char *sub_command_name)
> +{
> + /*
> + * Capture the sub-command name even if logging is not enabled
> + * because we don't know if the config has been loaded yet by
> + * the cmd_<command>() and/or it may be too early to force a
> + * lazy load.
> + */
> + if (my__sub_command_name)
> + free(my__sub_command_name);
Please drop the condition in these two functions; free() handles NULL
arguments just fine.
(Sidenote: what's the deal with these 'my__' prefixes anyway?)