X-Git-Url: http://git.maemo.org/git/?p=browser-switch;a=blobdiff_plain;f=main.c;h=093b535918953ff89e6831e4ee114c47bd89d0af;hp=2dfe43923117d18c877b20966fcf61971155e75b;hb=81d2b2485ca2a490af7f4bb5d4e2995c35c12915;hpb=32801150ac9ad614f3d530cdc9200d4fd5d6964e diff --git a/main.c b/main.c index 2dfe439..093b535 100644 --- a/main.c +++ b/main.c @@ -1,7 +1,7 @@ /* * main.c -- config file parsing and main loop for browser-switchboard * - * Copyright (C) 2009 Steven Luo + * Copyright (C) 2009-2010 Steven Luo * Derived from a Python implementation by Jason Simpson and Steven Luo * * This program is free software; you can redistribute it and/or @@ -22,7 +22,6 @@ #include #include -#include #include #include #include @@ -32,6 +31,7 @@ #include "launcher.h" #include "dbus-server-bindings.h" #include "configfile.h" +#include "log.h" struct swb_context ctx; @@ -46,14 +46,14 @@ static void set_config_defaults(struct swb_context *ctx) { static void waitforzombies(int signalnum) { while (waitpid(-1, NULL, WNOHANG) > 0) - printf("Waited for a zombie\n"); + log_msg("Waited for a zombie\n"); } static void read_config(int signalnum) { FILE *fp; int continuous_mode_seen = 0; struct swb_config_line line; - char *default_browser = NULL; + char *default_browser = NULL, *logger_name = NULL; set_config_defaults(&ctx); @@ -78,6 +78,9 @@ static void read_config(int signalnum) { } else if (!strcmp(line.key, "other_browser_cmd")) { if (!ctx.other_browser_cmd) ctx.other_browser_cmd = line.value; + } else if (!strcmp(line.key, "logging")) { + if (!logger_name) + logger_name = line.value; } else { /* Don't need this line's contents */ free(line.value); @@ -87,14 +90,21 @@ static void read_config(int signalnum) { } parse_config_file_end(); - printf("continuous_mode: %d\n", ctx.continuous_mode); - printf("default_browser: '%s'\n", default_browser?default_browser:"NULL"); - printf("other_browser_cmd: '%s'\n", ctx.other_browser_cmd?ctx.other_browser_cmd:"NULL"); - out: fclose(fp); out_noopen: + log_config(logger_name); update_default_browser(&ctx, default_browser); + + log_msg("continuous_mode: %d\n", ctx.continuous_mode); + log_msg("default_browser: '%s'\n", + default_browser?default_browser:"NULL"); + log_msg("other_browser_cmd: '%s'\n", + ctx.other_browser_cmd?ctx.other_browser_cmd:"NULL"); + log_msg("logging: '%s'\n", + logger_name?logger_name:"NULL"); + + free(logger_name); free(default_browser); return; } @@ -116,14 +126,14 @@ int main() { /* SIGCHLD -- clean up after zombies */ act.sa_handler = waitforzombies; if (sigaction(SIGCHLD, &act, NULL) == -1) { - printf("Installing signal handler failed\n"); + log_msg("Installing signal handler failed\n"); return 1; } /* SIGHUP -- reread config file */ act.sa_handler = read_config; if (sigaction(SIGHUP, &act, NULL) == -1) { - printf("Installing signal handler failed\n"); + log_msg("Installing signal handler failed\n"); return 1; } } @@ -136,14 +146,14 @@ int main() { /* Get a connection to the D-Bus session bus */ ctx.session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error); if (!ctx.session_bus) { - printf("Couldn't get a D-Bus bus connection\n"); + log_msg("Couldn't get a D-Bus bus connection\n"); return 1; } ctx.dbus_proxy = dbus_g_proxy_new_for_name(ctx.session_bus, "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus"); if (!ctx.dbus_proxy) { - printf("Couldn't get an org.freedesktop.DBus proxy\n"); + log_msg("Couldn't get an org.freedesktop.DBus proxy\n"); return 1; } @@ -159,12 +169,12 @@ int main() { G_TYPE_INVALID, G_TYPE_UINT, &reqname_result, G_TYPE_INVALID)) { - printf("Couldn't acquire browser-switchboard lock: %s\n", - error->message); + log_msg("Couldn't acquire browser-switchboard lock: %s\n", + error->message); return 1; } if (reqname_result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { - printf("Another browser-switchboard already running\n"); + log_msg("Another browser-switchboard already running\n"); return 1; } @@ -180,9 +190,9 @@ int main() { G_OBJECT(obj_osso_browser_req)); mainloop = g_main_loop_new(NULL, FALSE); - printf("Starting main loop\n"); + log_msg("Starting main loop\n"); g_main_loop_run(mainloop); - printf("Main loop completed\n"); + log_msg("Main loop completed\n"); return 0; }