Re: [PATCH v7 03/15] bugreport: add tool to generate debugging info
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Feb 19, 2020, 14:18 UTC
- Message-ID
- <nycvar.QRO.7.76.6.2002191515310.46@tvgsbejvaqbjf.bet>
- In-Reply-To
- <20200214015343.201946-4-emilyshaffer@google.com>
Hi Emily,
On Thu, 13 Feb 2020, Emily Shaffer wrote:
Show 99 quoted lines
> diff --git a/bugreport.c b/bugreport.c
> new file mode 100644
> index 0000000000..a9398e6a2a
> --- /dev/null
> +++ b/bugreport.c
> @@ -0,0 +1,94 @@
> +#include "builtin.h"
> +#include "parse-options.h"
> +#include "stdio.h"
> +#include "strbuf.h"
> +#include "time.h"
> +
> +static const char * const bugreport_usage[] = {
> + N_("git bugreport [-o|--output-directory <file>] [-s|--suffix <format>]"),
> + NULL
> +};
> +
> +static int get_bug_template(struct strbuf *template)
> +{
> + const char template_text[] = N_(
> +"Thank you for filling out a Git bug report!\n"
> +"Please answer the following questions to help us understand your issue.\n"
> +"\n"
> +"What did you do before the bug happened? (Steps to reproduce your issue)\n"
> +"\n"
> +"What did you expect to happen? (Expected behavior)\n"
> +"\n"
> +"What happened instead? (Actual behavior)\n"
> +"\n"
> +"What's different between what you expected and what actually happened?\n"
> +"\n"
> +"Anything else you want to add:\n"
> +"\n"
> +"Please review the rest of the bug report below.\n"
> +"You can delete any lines you don't wish to share.\n");
> +
> + strbuf_addstr(template, template_text);
> + return 0;
> +}
> +
> +int cmd_main(int argc, const char **argv)
> +{
> + struct strbuf buffer = STRBUF_INIT;
> + struct strbuf report_path = STRBUF_INIT;
> + FILE *report;
> + time_t now = time(NULL);
> + char *option_output = NULL;
> + char *option_suffix = "%F-%H%M";
> + struct stat statbuf;
> +
> + const struct option bugreport_options[] = {
> + OPT_STRING('o', "output-directory", &option_output, N_("path"),
> + N_("specify a destination for the bugreport file")),
> + OPT_STRING('s', "suffix", &option_suffix, N_("format"),
> + N_("specify a strftime format suffix for the filename")),
> + OPT_END()
> + };
> + argc = parse_options(argc, argv, "", bugreport_options,
> + bugreport_usage, 0);
> +
> + if (option_output) {
> + strbuf_addstr(&report_path, option_output);
> + strbuf_complete(&report_path, '/');
> + }
> +
> +
> + strbuf_addstr(&report_path, "git-bugreport-");
> + strbuf_addftime(&report_path, option_suffix, localtime(&now), 0, 0);
> + strbuf_addstr(&report_path, ".txt");
> +
> + if (!stat(report_path.buf, &statbuf))
> + die("'%s' already exists", report_path.buf);
> +
> + switch (safe_create_leading_directories(report_path.buf)) {
> + case SCLD_OK:
> + case SCLD_EXISTS:
> + break;
> + default:
> + die(_("could not create leading directories for '%s'"),
> + report_path.buf);
> + }
> +
> + get_bug_template(&buffer);
> +
> + report = fopen_for_writing(report_path.buf);
> +
> + if (report == NULL) {
> + strbuf_release(&report_path);
> + die("couldn't open '%s' for writing", report_path.buf);
> + }
> +
> + strbuf_write(&buffer, report);
> + fclose(report);
> +
> + fprintf(stderr, _("Created new report at '%s'.\n"), report_path.buf);
> +
> + UNLEAK(buffer);
> + UNLEAK(report_path);
> + return -launch_editor(report_path.buf, NULL, NULL);This would be the first time (at least that _I_ know of) that we use `-` in this way. We seem to use `!!` a lot more often. And now I wonder whether there is a reason for that `-` that I missed?
Ciao, Dscho