summaryrefslogtreecommitdiff
path: root/monkey/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'monkey/main.c')
-rw-r--r--monkey/main.c58
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;
}