Add the ability to create a log file for debugging output

Especially when asking non-developers for help debugging a problem it can
be extremely useful to have debugging output not go to the console but to
a log file instead.

This just adds the infrastructure to create (and close) such a file. No
changes to the debug output are made.

All this is of course #ifdef'ed out.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2012-09-26 08:30:37 -07:00
parent c4c636fb4f
commit 5305fb152b
2 changed files with 20 additions and 0 deletions

4
dive.h
View file

@ -439,4 +439,8 @@ extern const char *subsurface_default_filename(void);
#define FRACTION(n,x) ((unsigned)(n)/(x)),((unsigned)(n)%(x))
#ifdef DEBUGFILE
extern char *debugfilename;
extern FILE *debugfile;
#endif
#endif /* DIVE_H */

16
main.c
View file

@ -7,6 +7,11 @@
#include "dive.h"
#include "divelist.h"
#ifdef DEBUGFILE
char *debugfilename;
FILE *debugfile;
#endif
struct units output_units;
/* random helper functions, used here or elsewhere */
@ -222,6 +227,13 @@ int main(int argc, char **argv)
init_ui(&argc, &argv);
#ifdef DEBUGFILE
debugfilename = (char *)subsurface_default_filename();
strncpy(debugfilename + strlen(debugfilename) - 3, "log", 3);
if (g_mkdir_with_parents(g_path_get_dirname(debugfilename), 0664) != 0 ||
(debugfile = g_fopen(debugfilename, "w")) == NULL)
printf("oh boy, can't create debugfile");
#endif
for (i = 1; i < argc; i++) {
const char *a = argv[i];
@ -256,5 +268,9 @@ int main(int argc, char **argv)
parse_xml_exit();
#ifdef DEBUGFILE
if (debugfile)
fclose(debugfile);
#endif
return 0;
}