X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain.c;h=bffcb38854419285c8f7ecdee37c980b8e1e9688;hb=4d5ce1b0b3b41b8fb53126a0c67534db7d010a75;hp=a989a702ff30d7a64786a31c94558225e58d3e2c;hpb=846e952260278225b79de4062fff1f8f2145a544;p=src%2Fapp-framework-binder.git diff --git a/src/main.c b/src/main.c index a989a702..bffcb388 100644 --- a/src/main.c +++ b/src/main.c @@ -29,6 +29,10 @@ #include #include +#if !defined(NO_CALL_PERSONALITY) +#include +#endif + #include #include @@ -50,6 +54,7 @@ #include "afb-hook.h" #include "sd-fds.h" #include "afb-debug.h" +#include "process-name.h" /* if SELF_PGROUP == 0 the launched command is the group leader @@ -347,7 +352,7 @@ static char *instanciate_string(char *arg, const char *port, const char *token) switch(*++it) { case 'p': wr = stpcpy(wr, port); break; case 't': wr = stpcpy(wr, token); break; - default: *wr++ = SUBST_CHAR; + default: *wr++ = SUBST_CHAR; /*@fallthrough@*/ case SUBST_CHAR: *wr++ = *it; } arg = ++it; @@ -392,6 +397,7 @@ static int execute_command() { struct sigaction siga; char port[20]; + const char *token; int rc; /* check whether a command is to execute or not */ @@ -422,8 +428,9 @@ static int execute_command() } else { /* instanciate arguments and environment */ - if (instanciate_command_args(port, config->token) >= 0 - && instanciate_environ(port, config->token) >= 0) { + token = afb_session_initial_token(); + if (instanciate_command_args(port, token) >= 0 + && instanciate_environ(port, token) >= 0) { /* run */ if (!SELF_PGROUP) setpgid(0, 0); @@ -586,10 +593,11 @@ static void start(int signum) /* load bindings */ afb_debug("start-load"); + apiset_start_list(config->so_bindings, afb_api_so_add_binding, "the binding"); apiset_start_list(config->dbus_clients, afb_api_dbus_add_client, "the afb-dbus client"); apiset_start_list(config->ws_clients, afb_api_ws_add_client, "the afb-websocket client"); - apiset_start_list(config->ldpaths, afb_api_so_add_pathset, "the binding path set"); - apiset_start_list(config->so_bindings, afb_api_so_add_binding, "the binding"); + apiset_start_list(config->ldpaths, afb_api_so_add_pathset_fails, "the binding path set"); + apiset_start_list(config->weak_ldpaths, afb_api_so_add_pathset_nofails, "the weak binding path set"); apiset_start_list(config->dbus_servers, afb_api_dbus_add_server, "the afb-dbus service"); apiset_start_list(config->ws_servers, afb_api_ws_add_server, "the afb-websocket service"); @@ -598,6 +606,9 @@ static void start(int signum) /* start the services */ afb_debug("start-start"); +#if !defined(NO_CALL_PERSONALITY) + personality((unsigned long)-1L); +#endif if (afb_apiset_start_all_services(main_apiset, 1) < 0) goto error; @@ -641,7 +652,11 @@ int main(int argc, char *argv[]) // ------------- Build session handler & init config ------- config = afb_config_parse_arguments(argc, argv); - + if (config->name) { + verbose_set_name(config->name, 0); + process_name_set_name(config->name); + process_name_replace_cmdline(argv, config->name); + } afb_debug("main-args"); // --------- run -----------