#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;
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;
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))
read_config(0);
if (ctx.continuous_mode) {
+ /* Install signal handlers */
struct sigaction act;
act.sa_flags = SA_RESTART;
+ 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");
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");
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,