Revision: 22982 http://trac.macosforge.org/projects/launchd/changeset/22982 Author: zarzycki@apple.com Date: 2006-12-14 11:59:58 -0800 (Thu, 14 Dec 2006) Log Message: ----------- <rdar://problem/4619009> spawn_env attribute with spawn_via_launchd doesn't seem to work Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2006-12-14 19:18:26 UTC (rev 22981) +++ trunk/launchd/src/launchd_core_logic.c 2006-12-14 19:59:58 UTC (rev 22982) @@ -811,6 +811,7 @@ job_new_spawn(job_t j, const char *label, const char *path, const char *workingdir, const char *const *argv, const char *const *env, mode_t *u_mask, bool w4d, bool fppc) { job_t jr; + size_t i; if ((jr = jobmgr_find(root_jobmgr, label)) != NULL) { errno = EEXIST; @@ -845,15 +846,20 @@ jr->setmask = true; } - if (env) for (; *env; env++) { - char newkey[strlen(*env) + 1], *eqoff = strchr(*env, '='); + if (env) for (i = 0; env[i]; i++) { + char *eqoff, tmpstr[strlen(env[i]) + 1]; + + strcpy(tmpstr, env[i]); + + eqoff = strchr(tmpstr, '='); + if (!eqoff) { - job_log(jr, LOG_WARNING, "Environmental variable missing '=' separator: %s", *env); + job_log(jr, LOG_WARNING, "Environmental variable missing '=' separator: %s", tmpstr); continue; } - strcpy(newkey, *env); + *eqoff = '\0'; - envitem_new(jr, newkey, eqoff + 1, false); + envitem_new(jr, tmpstr, eqoff + 1, false); } job_dispatch(jr, true); @@ -2575,6 +2581,8 @@ SLIST_INSERT_HEAD(&j->env, ei, sle); } + job_log(j, LOG_DEBUG, "Added environmental variable: %s=%s", k, v); + return true; }
participants (1)
-
source_changes@macosforge.org