[launchd-changes] [23832] branches/PR-6564965/launchd/src
source_changes at macosforge.org
source_changes at macosforge.org
Wed Feb 25 20:09:33 PST 2009
Revision: 23832
http://trac.macosforge.org/projects/launchd/changeset/23832
Author: dsorresso at apple.com
Date: 2009-02-25 20:09:33 -0800 (Wed, 25 Feb 2009)
Log Message:
-----------
Beginnings of changes.
Modified Paths:
--------------
branches/PR-6564965/launchd/src/launch_internal.h
branches/PR-6564965/launchd/src/launchctl.c
branches/PR-6564965/launchd/src/launchd.c
branches/PR-6564965/launchd/src/launchd_core_logic.c
Modified: branches/PR-6564965/launchd/src/launch_internal.h
===================================================================
--- branches/PR-6564965/launchd/src/launch_internal.h 2009-02-25 20:19:38 UTC (rev 23831)
+++ branches/PR-6564965/launchd/src/launch_internal.h 2009-02-26 04:09:33 UTC (rev 23832)
@@ -22,6 +22,9 @@
#pragma GCC visibility push(default)
+#define LAUNCHD_JOB_STATE_DB_PREFIX "/var/db/launchd_job_state_db"
+extern char g_job_enabled_db[PATH_MAX];
+
size_t launch_data_pack(launch_data_t d, void *where, size_t len, int *fd_where, size_t *fdslotsleft);
launch_data_t launch_data_unpack(void *data, size_t data_size, int *fds, size_t fd_cnt, size_t *data_offset, size_t *fdoffset);
Modified: branches/PR-6564965/launchd/src/launchctl.c
===================================================================
--- branches/PR-6564965/launchd/src/launchctl.c 2009-02-25 20:19:38 UTC (rev 23831)
+++ branches/PR-6564965/launchd/src/launchctl.c 2009-02-26 04:09:33 UTC (rev 23832)
@@ -257,6 +257,8 @@
static bool rootuser_context;
static bool g_shutdown_debugging = false;
+char g_job_enabled_db[PATH_MAX];
+
int
main(int argc, char *const argv[])
{
@@ -921,9 +923,17 @@
bool r = false;
switch (launch_data_get_type(obj)) {
- case LAUNCH_DATA_DICTIONARY:
- launch_data_dict_iterate(obj, job_disabled_dict_logic, &r);
+ case LAUNCH_DATA_DICTIONARY: {
+ launch_data_t label = NULL;
+ if( (label = launch_data_dict_lookup(obj, LAUNCH_JOBKEY_LABEL)) && launch_data_get_type(label) == LAUNCH_DATA_STRING ) {
+ char db_path[PATH_MAX];
+
+ } else {
+ launch_data_dict_iterate(obj, job_disabled_dict_logic, &r);
+ }
+
break;
+ }
case LAUNCH_DATA_BOOL:
r = launch_data_get_bool(obj);
break;
Modified: branches/PR-6564965/launchd/src/launchd.c
===================================================================
--- branches/PR-6564965/launchd/src/launchd.c 2009-02-25 20:19:38 UTC (rev 23831)
+++ branches/PR-6564965/launchd/src/launchd.c 2009-02-26 04:09:33 UTC (rev 23832)
@@ -116,6 +116,7 @@
bool fake_shutdown_in_progress;
bool network_up;
char g_username[128] = "__Uninitialized__";
+char g_job_enabled_db[PATH_MAX];
FILE *g_console = NULL;
int
@@ -187,6 +188,7 @@
strlcpy(g_username, pwent->pw_name, sizeof(g_username) - 1);
}
+ snprintf(g_job_enabled_db, sizeof(g_job_enabled_db), "/var/db/launch_job_state_db/com.apple.launchd.peruser.%u", getuid());
runtime_syslog(LOG_DEBUG, "Per-user launchd for UID %u (%s) has begun.", getuid(), g_username);
}
@@ -195,12 +197,8 @@
if( g_use_gmalloc ) {
runtime_syslog(LOG_NOTICE | LOG_CONSOLE, "*** Using libgmalloc ***");
}
-
- struct stat sb;
- if( stat("/var/db/.launchd_flat_per_user_namespace", &sb) == 0 ) {
- runtime_syslog(LOG_NOTICE | LOG_CONSOLE, "Flat per-user Mach namespaces enabled.");
- }
- /* We just wanted to print status about the per-user namespace. PID 1 doesn't have a flat namespace. */
+
+ /* PID 1 doesn't have a flat namespace. */
g_flat_mach_namespace = false;
}
@@ -404,6 +402,12 @@
launchd_assumes(setsid() != -1);
launchd_assumes(chdir("/") != -1);
launchd_assumes(setlogin("root") != -1);
+
+ strcpy(g_job_enabled_db, "/var/db/launchd_job_state_db/com.apple.launchd");
+ struct stat sb;
+ if( stat(g_job_enabled_db, &sb) == -1 ) {
+ launchd_assumes(mkdir(g_job_enabled_db, S_IRWXO) != -1);
+ }
}
Modified: branches/PR-6564965/launchd/src/launchd_core_logic.c
===================================================================
--- branches/PR-6564965/launchd/src/launchd_core_logic.c 2009-02-25 20:19:38 UTC (rev 23831)
+++ branches/PR-6564965/launchd/src/launchd_core_logic.c 2009-02-26 04:09:33 UTC (rev 23832)
@@ -7271,6 +7271,15 @@
ji->per_user = true;
ji->kill_via_shmem = true;
+ struct stat sb;
+ char pu_db[PATH_MAX];
+ snprintf(pu_db, sizeof(pu_db), "/var/db/launchd_job_state_db/%s", lbuf);
+
+ if( stat(pu_db, &sb) == -1 && job_assumes(ji, errno == ENOENT) ) {
+ job_assumes(ji, mkdir(pu_db, S_IRWXO) != -1);
+ job_assumes(ji, chown(pu_db, which_user, 0) != -1);
+ }
+
if ((ms = machservice_new(ji, lbuf, mp, false)) == NULL) {
job_remove(ji);
ji = NULL;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/launchd-changes/attachments/20090225/f47caae1/attachment-0001.html>
More information about the launchd-changes
mailing list