[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