X-Git-Url: http://git.maemo.org/git/?p=browser-switch;a=blobdiff_plain;f=main.c;h=9adacbee34b3f6c152131359e539f9864d472d20;hp=a366fe7524205e01a972506a683ba2b09a3ef7c9;hb=5a19c8657cd5a93c80f23d952e411e20517edd42;hpb=8dde3166d0a99a74fc16f6afa4f5106167a9bab3 diff --git a/main.c b/main.c index a366fe7..9adacbe 100644 --- a/main.c +++ b/main.c @@ -36,6 +36,7 @@ #define DEFAULT_HOMEDIR "/home/user" #define CONFIGFILE_LOC "/.config/browser-switchboard" +#define CONFIGFILE_LOC_OLD "/.config/browser-proxy" #define MAXLINE 1024 struct swb_context ctx; @@ -66,6 +67,7 @@ static void read_config(int signalnum) { set_config_defaults(&ctx); + /* Put together the path to the config file */ if (!(homedir = getenv("HOME"))) homedir = DEFAULT_HOMEDIR; len = strlen(homedir) + strlen(CONFIGFILE_LOC) + 1; @@ -73,8 +75,15 @@ static void read_config(int signalnum) { goto out_noopen; snprintf(configfile, len, "%s%s", homedir, CONFIGFILE_LOC); - if (!(fp = fopen(configfile, "r"))) - goto out_noopen; + /* Try to open the config file */ + if (!(fp = fopen(configfile, "r"))) { + /* Try the legacy config file location before giving up + XXX we assume here that CONFIGFILE_LOC_OLD is shorter + than CONFIGFILE_LOC! */ + snprintf(configfile, len, "%s%s", homedir, CONFIGFILE_LOC_OLD); + if (!(fp = fopen(configfile, "r"))) + goto out_noopen; + } /* compile regex matching blank lines or comments */ if (regcomp(&re_ignore, "^[[:space:]]*(#|$)", REG_EXTENDED|REG_NOSUB)) @@ -167,16 +176,19 @@ int main() { read_config(0); if (ctx.continuous_mode) { + /* Install signal handlers */ struct sigaction act; act.sa_flags = SA_RESTART; - act.sa_mask = 0; + sigemptyset(&(act.sa_mask)); + /* SIGCHLD -- clean up after zombies */ act.sa_handler = waitforzombies; if (sigaction(SIGCHLD, &act, NULL) == -1) { printf("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"); @@ -189,6 +201,7 @@ int main() { dbus_g_object_type_install_info(OSSO_BROWSER_TYPE, &dbus_glib_osso_browser_object_info); + /* 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"); @@ -204,6 +217,7 @@ int main() { dbus_request_osso_browser_name(&ctx); + /* Register ourselves to handle the osso_browser D-Bus methods */ obj_osso_browser = g_object_new(OSSO_BROWSER_TYPE, NULL); obj_osso_browser_req = g_object_new(OSSO_BROWSER_TYPE, NULL); dbus_g_connection_register_g_object(ctx.session_bus,