PERFORCE change 82998 for review

soc-tyler soc-tyler at FreeBSD.org
Fri Sep 2 05:49:56 GMT 2005


http://perforce.freebsd.org/chv.cgi?CH=82998

Change 82998 by soc-tyler at soc-tyler_launchd on 2005/09/02 05:49:34

	Start to add quickstart command, still segfaulting on the "running" portion
	of the function

Affected files ...

.. //depot/projects/soc2005/launchd/launchctl/launchctl.c#19 edit

Differences ...

==== //depot/projects/soc2005/launchd/launchctl/launchctl.c#19 (text+ko) ====

@@ -106,6 +106,7 @@
 static int load_and_unload_cmd(int argc, char *const argv[]);
 //static int reload_cmd(int argc, char *const argv[]);
 static int start_stop_remove_cmd(int argc, char *const argv[]);
+static int quickstart_cmd(int argc, char *const argv[]);
 static int submit_cmd(int argc, char *const argv[]);
 static int list_cmd(int argc, char *const argv[]);
 
@@ -132,6 +133,7 @@
 	{ "unload",	load_and_unload_cmd,	"Unload configuration files and/or directories" },
 //	{ "reload",	reload_cmd,		"Reload configuration files and/or directories" },
 	{ "start",      start_stop_remove_cmd,  "Start specified job" },
+	{ "quickstart", quickstart_cmd,		"Load and start specified"},
 //	{ "stop",       start_stop_remove_cmd,  "Stop specified job" },
 	{ "submit",     submit_cmd,             "Submit a job from the command line" },
 	{ "remove",     start_stop_remove_cmd,  "Remove/stop specified job" },
@@ -1214,6 +1216,44 @@
         }
 }
 
+static int quickstart_cmd(int argc, char *const argv[]) {
+	launch_data_t pass1, pass2; // need two passes for "compat" reasons
+	launch_data_t resp, msg, label;
+	
+	label = launch_data_alloc(LAUNCH_DATA_STRING);
+
+	/* XXX: I need to add some error checking after the deadline */
+
+	pass1 = launch_data_alloc(LAUNCH_DATA_ARRAY);
+        pass2 = launch_data_alloc(LAUNCH_DATA_ARRAY);	
+
+	readpath(argv[1], pass1, pass2, false, true, false);
+
+	/* XXX: assuming data has been read correctly */
+	submit_job_pass(pass1);
+
+	launch_data_free(pass2);
+
+	/* end load portion */
+	label = launch_data_dict_lookup(pass1, LAUNCH_JOBKEY_LABEL);
+
+	msg = launch_data_alloc(LAUNCH_DATA_DICTIONARY);
+	launch_data_dict_insert(msg, label, LAUNCH_KEY_STARTJOB);
+
+
+	resp = launch_msg(msg);
+	launch_data_free(msg);
+
+	if (resp == NULL) {
+		fprintf(stderr, "launch_msg(): %s\n", strerror(errno));
+		return 1;
+	}
+
+	launch_data_free(resp);
+
+	return 0;
+}
+
 static int list_cmd(int argc, char *const argv[])
 {
 	launch_data_t resp, msg;


More information about the p4-projects mailing list