[maemo-commits] [maemo-commits] r10450 - in projects/haf/trunk/maemo-launcher: . launcher
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Mar 7 23:50:29 EET 2007
- Previous message: [maemo-commits] r10449 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r10451 - in projects/haf/trunk/hildon-desktop: . libhildonwm src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: guillem Date: 2007-03-07 23:50:26 +0200 (Wed, 07 Mar 2007) New Revision: 10450 Added: projects/haf/trunk/maemo-launcher/launcher/booster_api.h Modified: projects/haf/trunk/maemo-launcher/ChangeLog projects/haf/trunk/maemo-launcher/launcher/Makefile.am projects/haf/trunk/maemo-launcher/launcher/booster.c projects/haf/trunk/maemo-launcher/launcher/booster.h projects/haf/trunk/maemo-launcher/launcher/launcher.c Log: * launcher/booster.h (LAUNCHER_BOOSTER_H): Renamed to ... (BOOSTER_H): ... this. (booster_module_load): Remove declaration. (boosters_alloc): New function declaration. (boosters_load): Likewise. (boosters_init): Likewise. (boosters_reload): Likewise. (booster_api_t, booster_state_t, BOOSTER_API_VERSION): Move ... * launcher/booster_api.h: ... here. New file. * launcher/booster.c (booster_new): New function. (boosters_alloc): Likewise. (boosters_load): Likewise. (boosters_init): Likewise. (boosters_reload): Likewise. * launcher/Makefile.am (maemo_launcherdir): New variable. (maemo_launcher_HEADERS): Likewise. * launcher/launcher.c (usage): Document new support for multiple boosters. (main): Rename variable 'booster' to 'boosters'. Use boosters_alloc when parsing the arguments and afterwards if 'boosters' is empty. Use boosters_load instead of booster_module_load and booster_preinit. Use boosters_reload instead of booster_reload. Use boosters_init instead of booster_init. Modified: projects/haf/trunk/maemo-launcher/ChangeLog =================================================================== --- projects/haf/trunk/maemo-launcher/ChangeLog 2007-03-07 14:59:44 UTC (rev 10449) +++ projects/haf/trunk/maemo-launcher/ChangeLog 2007-03-07 21:50:26 UTC (rev 10450) @@ -1,3 +1,30 @@ +2007-03-07 Johannes Schmid <johannes.schmid at openismus.com>, + Guillem Jover <guillem.jover at nokia.com> + + * launcher/booster.h (LAUNCHER_BOOSTER_H): Renamed to ... + (BOOSTER_H): ... this. + (booster_module_load): Remove declaration. + (boosters_alloc): New function declaration. + (boosters_load): Likewise. + (boosters_init): Likewise. + (boosters_reload): Likewise. + (booster_api_t, booster_state_t, BOOSTER_API_VERSION): Move ... + * launcher/booster_api.h: ... here. New file. + * launcher/booster.c (booster_new): New function. + (boosters_alloc): Likewise. + (boosters_load): Likewise. + (boosters_init): Likewise. + (boosters_reload): Likewise. + * launcher/Makefile.am (maemo_launcherdir): New variable. + (maemo_launcher_HEADERS): Likewise. + * launcher/launcher.c (usage): Document new support for multiple + boosters. + (main): Rename variable 'booster' to 'boosters'. Use boosters_alloc + when parsing the arguments and afterwards if 'boosters' is empty. + Use boosters_load instead of booster_module_load and booster_preinit. + Use boosters_reload instead of booster_reload. Use boosters_init + instead of booster_init. + 2007-03-01 Guillem Jover <guillem.jover at nokia.com> * configure.ac: Bump version to 0.22~. Modified: projects/haf/trunk/maemo-launcher/launcher/Makefile.am =================================================================== --- projects/haf/trunk/maemo-launcher/launcher/Makefile.am 2007-03-07 14:59:44 UTC (rev 10449) +++ projects/haf/trunk/maemo-launcher/launcher/Makefile.am 2007-03-07 21:50:26 UTC (rev 10450) @@ -32,6 +32,8 @@ bin_PROGRAMS = maemo-launcher maemo-invoker maemo-summoner +maemo_launcherdir = $(pkgincludedir) +maemo_launcher_HEADERS = booster_api.h maemo_launcher_SOURCES = \ launcher.c report.c report.h booster.c booster.h \ invokelib.c invokelib.h comm_dbus.c comm_dbus.h \ Modified: projects/haf/trunk/maemo-launcher/launcher/booster.c =================================================================== --- projects/haf/trunk/maemo-launcher/launcher/booster.c 2007-03-07 14:59:44 UTC (rev 10449) +++ projects/haf/trunk/maemo-launcher/launcher/booster.c 2007-03-07 21:50:26 UTC (rev 10450) @@ -1,7 +1,7 @@ /* * $Id$ * - * Copyright (C) 2006 Nokia Corporation + * Copyright (C) 2006, 2007 Nokia Corporation * * Author: Guillem Jover <guillem.jover at nokia.com> * @@ -24,12 +24,28 @@ #include <stdio.h> #include <stdlib.h> +#include <string.h> #include <dlfcn.h> #include "booster.h" #include "report.h" -void +static booster_t * +booster_new(const char *name) +{ + booster_t *booster; + + booster = malloc(sizeof(*booster)); + if (!booster) + die(50, "allocating booster\n"); + + booster->next = NULL; + booster->name = name; + + return booster; +} + +static void booster_module_load(booster_t *booster) { char *booster_path; @@ -63,3 +79,60 @@ booster->api->booster_version); } +void +boosters_alloc(booster_t **booster, const char *arg) +{ + char *name, *name_p; + + /* Optimization: allocate once and share among all boosters, in case we want + * to free the boosters we'll have free only 'name' from the first entry. */ + name = name_p = strdup(arg); + if (!name_p) + die(60, "allocating booster names\n"); + + for (name = name_p; *name_p; name_p++) + { + if (name == name_p) + { + *booster = booster_new(name); + booster = &((*booster)->next); + } + else if (*name_p == ',') + { + *name_p = '\0'; + name = name_p + 1; + } + } +} + +void +boosters_load(booster_t *booster, int *argc, char **argv[]) +{ + while (booster) + { + booster_module_load(booster); + booster->state = booster->api->booster_preinit(argc, argv); + booster = booster->next; + } +} + +void +boosters_init(booster_t *booster, char *argv0) +{ + while (booster) + { + booster->api->booster_init(argv0, booster->state); + booster = booster->next; + } +} + +void +boosters_reload(booster_t *booster) +{ + while (booster) + { + booster->api->booster_reload(booster->state); + booster = booster->next; + } +} + Modified: projects/haf/trunk/maemo-launcher/launcher/booster.h =================================================================== --- projects/haf/trunk/maemo-launcher/launcher/booster.h 2007-03-07 14:59:44 UTC (rev 10449) +++ projects/haf/trunk/maemo-launcher/launcher/booster.h 2007-03-07 21:50:26 UTC (rev 10450) @@ -20,28 +20,23 @@ * */ -#ifndef LAUNCHER_BOOSTER_H -#define LAUNCHER_BOOSTER_H +#ifndef BOOSTER_H +#define BOOSTER_H -typedef void *booster_state_t; +#include "booster_api.h" -typedef struct { - int booster_version; - booster_state_t (*booster_preinit)(int *argc, char **argv[]); - void (*booster_init)(const char *progfilename, const booster_state_t state); - void (*booster_reload)(booster_state_t state); -} booster_api_t; - -#define BOOSTER_API_VERSION 0 - -typedef struct { +typedef struct booster { booster_state_t state; booster_api_t *api; void *so; const char *name; + struct booster *next; } booster_t; -void booster_module_load(booster_t *mod); +void boosters_alloc(booster_t **booster, const char *arg); +void boosters_load(booster_t *booster, int *argc, char **argv[]); +void boosters_init(booster_t *booster, char *argv0); +void boosters_reload(booster_t *booster); #endif Copied: projects/haf/trunk/maemo-launcher/launcher/booster_api.h (from rev 10256, projects/haf/trunk/maemo-launcher/launcher/booster.h) =================================================================== --- projects/haf/trunk/maemo-launcher/launcher/booster.h 2007-02-28 14:12:05 UTC (rev 10256) +++ projects/haf/trunk/maemo-launcher/launcher/booster_api.h 2007-03-07 21:50:26 UTC (rev 10450) @@ -0,0 +1,38 @@ +/* + * $Id$ + * + * Copyright (C) 2005, 2006 Nokia Corporation + * + * Author: Guillem Jover <guillem.jover at nokia.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef BOOSTER_API_H +#define BOOSTER_API_H + +typedef void *booster_state_t; + +typedef struct { + int booster_version; + booster_state_t (*booster_preinit)(int *argc, char **argv[]); + void (*booster_init)(const char *progfilename, const booster_state_t state); + void (*booster_reload)(booster_state_t state); +} booster_api_t; + +#define BOOSTER_API_VERSION 0 + +#endif + Modified: projects/haf/trunk/maemo-launcher/launcher/launcher.c =================================================================== --- projects/haf/trunk/maemo-launcher/launcher/launcher.c 2007-03-07 14:59:44 UTC (rev 10449) +++ projects/haf/trunk/maemo-launcher/launcher/launcher.c 2007-03-07 21:50:26 UTC (rev 10450) @@ -664,7 +664,9 @@ "Options:\n" " --daemon Fork and go into the background.\n" " --pidfile FILE Specify a different pid file (default %s).\n" - " --booster MODULE Specify a booster module to use (default '%s').\n" + " --booster MODULE,...\n" + " Specify a comma-separated list of boosters to use" + " (default '%s').\n" " --send-app-died Send application died signal.\n" " --quiet Do not print anything.\n" " --version Print program version.\n" @@ -681,7 +683,7 @@ int main(int argc, char *argv[]) { - booster_t booster = { .name = BOOSTER_DEFAULT }; + booster_t *boosters = NULL; kindergarten_t *childs; const int initial_child_slots = 64; int i; @@ -706,7 +708,7 @@ else if (strcmp(argv[i], "--booster") == 0) { if (argv[++i]) - booster.name = argv[i]; + boosters_alloc(&boosters, argv[i]); } else if (strcmp(argv[i], "--send-app-died") == 0) send_app_died = true; @@ -718,13 +720,14 @@ usage(-1); } + if (!boosters) + boosters_alloc(&boosters, BOOSTER_DEFAULT); + /* * Daemon initialization. */ - booster_module_load(&booster); + boosters_load(boosters, &argc, &argv); - booster.state = booster.api->booster_preinit(&argc, &argv); - sigs_init(); env_init(); @@ -766,7 +769,7 @@ if (sighup_catched) { - booster.api->booster_reload(booster.state); + boosters_reload(boosters); sighup_catched = false; } @@ -819,7 +822,7 @@ info("invoking '%s'\n", prog.filename); set_progname(prog.argv[0], argc, argv); - booster.api->booster_init(prog.argv[0], booster.state); + boosters_init(boosters, prog.argv[0]); launch_process(&prog); }
- Previous message: [maemo-commits] r10449 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r10451 - in projects/haf/trunk/hildon-desktop: . libhildonwm src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]