diff options
Diffstat (limited to 'monkey/main.c')
-rw-r--r-- | monkey/main.c | 58 |
1 files changed, 48 insertions, 10 deletions
diff --git a/monkey/main.c b/monkey/main.c index 03421ef03..e806b0eb3 100644 --- a/monkey/main.c +++ b/monkey/main.c @@ -21,7 +21,7 @@ #include <stdlib.h> #include "monkey/filetype.h" -#include "desktop/options.h" +#include "utils/nsoption.h" #include "monkey/poll.h" #include "monkey/dispatch.h" #include "monkey/browser.h" @@ -31,6 +31,7 @@ #include "desktop/gui.h" #include "desktop/netsurf.h" #include "desktop/sslcert.h" +#include "utils/log.h" #include "utils/filepath.h" #include "utils/url.h" @@ -91,10 +92,27 @@ static void quit_handler(int argc, char **argv) netsurf_quit = true; } -/* Documented in desktop/options.h */ -void gui_options_init_defaults(void) +/** + * Set option defaults for monkey frontend + * + * @param defaults The option table to update. + * @return error status. + */ +static nserror set_defaults(struct nsoption_s *defaults) +{ + /* currently no default overrides */ + return NSERROR_OK; +} + +/** + * Ensures output logging stream is correctly configured + */ +static bool nslog_stream_configure(FILE *fptr) { - /* Set defaults for absent option strings */ + /* set log stream to be non-buffering */ + setbuf(fptr, NULL); + + return true; } int @@ -103,7 +121,8 @@ main(int argc, char **argv) char *messages; char *options; char buf[PATH_MAX]; - + nserror ret; + /* Unbuffer stdin/out/err */ setbuf(stdin, NULL); setbuf(stdout, NULL); @@ -111,14 +130,29 @@ main(int argc, char **argv) /* Prep the search paths */ respaths = nsmonkey_init_resource("${HOME}/.netsurf/:${NETSURFRES}:"MONKEY_RESPATH":./monkey/res"); - + + /* initialise logging. Not fatal if it fails but not much we can do + * about it either. + */ + nslog_init(nslog_stream_configure, &argc, argv); + + /* user options setup */ + ret = nsoption_init(set_defaults, &nsoptions, &nsoptions_default); + if (ret != NSERROR_OK) { + die("Options failed to initialise"); + } options = filepath_find(respaths, "Choices"); - messages = filepath_find(respaths, "Messages"); + nsoption_read(options, nsoptions); + free(options); + nsoption_commandline(&argc, argv, nsoptions); - netsurf_init(&argc, &argv, options, messages); - + /* common initialisation */ + messages = filepath_find(respaths, "Messages"); + ret = netsurf_init(messages); free(messages); - free(options); + if (ret != NSERROR_OK) { + die("NetSurf failed to initialise"); + } filepath_sfinddef(respaths, buf, "mime.types", "/etc/"); gtk_fetch_filetype_init(buf); @@ -139,5 +173,9 @@ main(int argc, char **argv) netsurf_exit(); fprintf(stdout, "GENERIC FINISHED\n"); + + /* finalise options */ + nsoption_finalise(nsoptions, nsoptions_default); + return 0; } |