Finalise nslog layer properly in closedown

This commit is contained in:
Daniel Silverstone 2017-09-10 14:22:05 +01:00
parent ec94d5f812
commit 8123e65351
10 changed files with 54 additions and 1 deletions

View File

@ -5841,6 +5841,9 @@ int main(int argc, char** argv)
free(current_user_dir); free(current_user_dir);
FreeVec(current_user_faviconcache); FreeVec(current_user_faviconcache);
/* finalise logging */
nslog_finalise();
#ifndef __amigaos4__ #ifndef __amigaos4__
/* OS3 low memory handler */ /* OS3 low memory handler */
ami_memory_fini(memhandler); ami_memory_fini(memhandler);

View File

@ -1225,6 +1225,10 @@ int main(int argc, char** argv)
fclose(stderr); fclose(stderr);
#endif #endif
NSLOG(netsurf, INFO, "exit_gem"); NSLOG(netsurf, INFO, "exit_gem");
/* finalise logging */
nslog_finalise();
exit_gem(); exit_gem();
return 0; return 0;

View File

@ -1066,6 +1066,12 @@ int main(int argc, char** argv)
netsurf_exit(); netsurf_exit();
/* finalise options */
nsoption_finalise(nsoptions, nsoptions_default);
/* finalise logging */
nslog_finalise();
return 0; return 0;
} }

View File

@ -2215,6 +2215,9 @@ main(int argc, char** argv)
/* finalise options */ /* finalise options */
nsoption_finalise(nsoptions, nsoptions_default); nsoption_finalise(nsoptions, nsoptions_default);
/* finalise logging */
nslog_finalise();
return 0; return 0;
} }

View File

@ -1198,5 +1198,8 @@ int main(int argc, char** argv)
/* finalise options */ /* finalise options */
nsoption_finalise(nsoptions, nsoptions_default); nsoption_finalise(nsoptions, nsoptions_default);
/* finalise logging */
nslog_finalise();
return 0; return 0;
} }

View File

@ -404,5 +404,8 @@ main(int argc, char **argv)
/* finalise options */ /* finalise options */
nsoption_finalise(nsoptions, nsoptions_default); nsoption_finalise(nsoptions, nsoptions_default);
/* finalise logging */
nslog_finalise();
return 0; return 0;
} }

View File

@ -2557,5 +2557,8 @@ int main(int argc, char** argv)
netsurf_exit(); netsurf_exit();
nsoption_finalise(nsoptions, nsoptions_default); nsoption_finalise(nsoptions, nsoptions_default);
/* finalise logging */
nslog_finalise();
return 0; return 0;
} }

View File

@ -419,5 +419,8 @@ WinMain(HINSTANCE hInstance, HINSTANCE hLastInstance, LPSTR lpcli, int ncmd)
/* finalise options */ /* finalise options */
nsoption_finalise(nsoptions, nsoptions_default); nsoption_finalise(nsoptions, nsoptions_default);
/* finalise logging */
nslog_finalise();
return 0; return 0;
} }

View File

@ -137,8 +137,8 @@ nslog_set_filter(const char *filter)
} }
err = nslog_filter_set_active(filt, NULL); err = nslog_filter_set_active(filt, NULL);
filt = nslog_filter_unref(filt);
if (err != NSLOG_NO_ERROR) { if (err != NSLOG_NO_ERROR) {
nslog_filter_unref(filt);
return NSERROR_NOSPACE; return NSERROR_NOSPACE;
} }
@ -287,3 +287,19 @@ nslog_set_filter_by_options()
else else
return nslog_set_filter(nsoption_charp(log_filter)); return nslog_set_filter(nsoption_charp(log_filter));
} }
/* exported interface documented in utils/log.h */
void
nslog_finalise()
{
NSLOG(netsurf, INFO,
"Finalising logging, please report any further messages");
verbose_log = true;
if (logfile != stderr) {
fclose(logfile);
logfile = stderr;
}
#ifdef WITH_NSLOG
nslog_cleanup();
#endif
}

View File

@ -43,6 +43,15 @@ typedef bool(nslog_ensure_t)(FILE *fptr);
*/ */
extern nserror nslog_init(nslog_ensure_t *ensure, int *pargc, char **argv); extern nserror nslog_init(nslog_ensure_t *ensure, int *pargc, char **argv);
/**
* Shut down the logging system.
*
* Shuts down the logging subsystem, resetting to verbose logging and output
* to stderr. Note, if logging is done after calling this, it will be sent
* to stderr without filtering.
*/
extern void nslog_finalise(void);
/** /**
* Set the logging filter. * Set the logging filter.
* *