X-Git-Url: http://git.maemo.org/git/?p=browser-switch;a=blobdiff_plain;f=main.c;h=66591c676fc84141d8a46596c5a0e6d613bb359e;hp=5429a59de0c6111238c2128cb387882aee08b8e0;hb=440aa502fa0b307aaba049e1b0f49a40f7345b63;hpb=d6dc92cc2a6ae8a6f54b90806b42ce233845ad63 diff --git a/main.c b/main.c index 5429a59..66591c6 100644 --- a/main.c +++ b/main.c @@ -36,11 +36,12 @@ #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; -static void set_config_defaults(struct swb_context * ctx) { +static void set_config_defaults(struct swb_context *ctx) { if (!ctx) return; free(ctx->other_browser_cmd); @@ -71,11 +72,16 @@ static void read_config(int signalnum) { len = strlen(homedir) + strlen(CONFIGFILE_LOC) + 1; if (!(configfile = calloc(len, sizeof(char)))) goto out_noopen; - strncpy(configfile, homedir, strlen(homedir)); - strncat(configfile, CONFIGFILE_LOC, strlen(CONFIGFILE_LOC)); - - if (!(fp = fopen(configfile, "r"))) - goto out_noopen; + snprintf(configfile, len, "%s%s", homedir, CONFIGFILE_LOC); + + 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)) @@ -101,7 +107,6 @@ static void read_config(int signalnum) { /* Read in the config file one line at a time and parse it XXX doesn't deal with lines longer than MAXLINE */ while (fgets(buf, MAXLINE, fp)) { - printf("%s", buf); /* skip blank lines and comments */ if (!regexec(&re_ignore, buf, 0, NULL, 0)) continue; @@ -162,15 +167,16 @@ out_noopen: } int main() { - OssoBrowser * obj; - GMainLoop * mainloop; - GError * error = NULL; + OssoBrowser *obj_osso_browser, *obj_osso_browser_req; + GMainLoop *mainloop; + GError *error = NULL; read_config(0); if (ctx.continuous_mode) { struct sigaction act; act.sa_flags = SA_RESTART; + sigemptyset(&(act.sa_mask)); act.sa_handler = waitforzombies; if (sigaction(SIGCHLD, &act, NULL) == -1) { @@ -205,11 +211,13 @@ int main() { dbus_request_osso_browser_name(&ctx); - obj = g_object_new(OSSO_BROWSER_TYPE, NULL); + 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, - "/com/nokia/osso_browser", G_OBJECT(obj)); + "/com/nokia/osso_browser", G_OBJECT(obj_osso_browser)); dbus_g_connection_register_g_object(ctx.session_bus, - "/com/nokia/osso_browser/request", G_OBJECT(obj)); + "/com/nokia/osso_browser/request", + G_OBJECT(obj_osso_browser_req)); mainloop = g_main_loop_new(NULL, FALSE); printf("Starting main loop\n");