Revision: 23099 http://trac.macosforge.org/projects/launchd/changeset/23099 Author: zarzycki@apple.com Date: 2007-02-22 15:31:44 -0800 (Thu, 22 Feb 2007) Log Message: ----------- Small bug fixes in the per-job Mach service concept. Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c trunk/launchd/src/liblaunch_private.h Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2007-02-22 22:41:38 UTC (rev 23098) +++ trunk/launchd/src/launchd_core_logic.c 2007-02-22 23:31:44 UTC (rev 23099) @@ -502,13 +502,29 @@ if (!SLIST_EMPTY(&j->machservices) && (tmp = launch_data_alloc(LAUNCH_DATA_DICTIONARY))) { struct machservice *ms; + + tmp3 = NULL; SLIST_FOREACH(ms, &j->machservices, sle) { - tmp2 = launch_data_new_machport(MACH_PORT_NULL); - launch_data_dict_insert(tmp, tmp2, ms->name); + if (ms->per_pid) { + if (tmp3 == NULL) { + tmp3 = launch_data_alloc(LAUNCH_DATA_DICTIONARY); + } + if (tmp3) { + tmp2 = launch_data_new_machport(MACH_PORT_NULL); + launch_data_dict_insert(tmp3, tmp2, ms->name); + } + } else { + tmp2 = launch_data_new_machport(MACH_PORT_NULL); + launch_data_dict_insert(tmp, tmp2, ms->name); + } } launch_data_dict_insert(r, tmp, LAUNCH_JOBKEY_MACHSERVICES); + + if (tmp3) { + launch_data_dict_insert(r, tmp3, LAUNCH_JOBKEY_PERJOBMACHSERVICES); + } } return r; @@ -3532,12 +3548,11 @@ continue; } SLIST_FOREACH(ms, &ji->machservices, sle) { - if (target_pid && !ms->per_pid) { - continue; + if ((target_pid && ms->per_pid) || (!target_pid && !ms->per_pid)) { + if (strcmp(name, ms->name) == 0) { + return ms; + } } - if (strcmp(name, ms->name) == 0) { - return ms; - } } } @@ -4482,7 +4497,9 @@ TAILQ_FOREACH(ji, &jm->jobs, sle) { SLIST_FOREACH(ms, &ji->machservices, sle) { - cnt++; + if (!ms->per_pid) { + cnt++; + } } } @@ -4502,9 +4519,11 @@ TAILQ_FOREACH(ji, &jm->jobs, sle) { SLIST_FOREACH(ms, &ji->machservices, sle) { - strlcpy(service_names[cnt2], machservice_name(ms), sizeof(service_names[0])); - service_actives[cnt2] = machservice_status(ms); - cnt2++; + if (!ms->per_pid) { + strlcpy(service_names[cnt2], machservice_name(ms), sizeof(service_names[0])); + service_actives[cnt2] = machservice_status(ms); + cnt2++; + } } } Modified: trunk/launchd/src/liblaunch_private.h =================================================================== --- trunk/launchd/src/liblaunch_private.h 2007-02-22 22:41:38 UTC (rev 23098) +++ trunk/launchd/src/liblaunch_private.h 2007-02-22 23:31:44 UTC (rev 23099) @@ -50,6 +50,7 @@ #define LAUNCH_KEY_BATCHQUERY "BatchQuery" #define LAUNCH_JOBKEY_ENTERKERNELDEBUGGERBEFOREKILL "EnterKernelDebuggerBeforeKill" +#define LAUNCH_JOBKEY_PERJOBMACHSERVICES "PerJobMachServices" #define LAUNCH_JOBKEY_MACH_KUNCSERVER "kUNCServer" #define LAUNCH_JOBKEY_MACH_EXCEPTIONSERVER "ExceptionServer"
participants (1)
-
source_changes@macosforge.org