CLI: add talloc leak report, controlled by an environment variable.

The argument handling in notmuch.c seems due for an overhaul, but
until then use an environment variable to specify a location to write
the talloc leak report to.  This is only enabled for the (interesting)
case where some notmuch subcommand is invoked.
This commit is contained in:
David Bremner 2012-12-16 23:08:49 -04:00
parent 5a1b22e2bc
commit 3380498042

View file

@ -322,8 +322,28 @@ main (int argc, char *argv[])
for (i = 0; i < ARRAY_SIZE (commands); i++) { for (i = 0; i < ARRAY_SIZE (commands); i++) {
command = &commands[i]; command = &commands[i];
if (strcmp (argv[1], command->name) == 0) if (strcmp (argv[1], command->name) == 0) {
return (command->function) (local, argc - 1, &argv[1]); int ret;
char *talloc_report;
ret = (command->function)(local, argc - 1, &argv[1]);
/* in the future support for this environment variable may
* be supplemented or replaced by command line arguments
* --leak-report and/or --leak-report-full */
talloc_report = getenv ("NOTMUCH_TALLOC_REPORT");
/* this relies on the previous call to
* talloc_enable_null_tracking */
if (talloc_report && strcmp (talloc_report, "") != 0) {
FILE *report = fopen (talloc_report, "w");
talloc_report_full (NULL, report);
}
return ret;
}
} }
fprintf (stderr, "Error: Unknown command '%s' (see \"notmuch help\")\n", fprintf (stderr, "Error: Unknown command '%s' (see \"notmuch help\")\n",