Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 Jul 2005 09:18:09 GMT
From:      soc-tyler <soc-tyler@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 79811 for review
Message-ID:  <200507090918.j699I9Bw045960@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=79811

Change 79811 by soc-tyler@soc-tyler_launchd on 2005/07/09 09:18:09

	replace read_plist_file() and CF2launch_data() with just read_conf_file() which adds the 'properties' linked list as the opaque data type to the launch_data_t pointer and returns

Affected files ...

.. //depot/projects/soc2005/launchd/NOTES#2 edit
.. //depot/projects/soc2005/launchd/includes/launch.h#2 edit
.. //depot/projects/soc2005/launchd/launchctl/launchctl.c#5 edit
.. //depot/projects/soc2005/launchd/launchers/ftp.launch#3 edit
.. //depot/projects/soc2005/launchd/launchers/ssh.launch#3 edit
.. //depot/projects/soc2005/launchd/liblaunch.c#2 edit

Differences ...

==== //depot/projects/soc2005/launchd/NOTES#2 (text+ko) ====

@@ -9,3 +9,11 @@
 	There are no plans to incorporate this aspect of launchd(8) into FreeBSD until 
 	Zeroconf is stable, and in the base system of FreeBSD (6.xx, 7.xx, X.xx ;))
 	
+
+	o launch_msg() doesn't need to be reimplemented until launchctl(1) is revamped
+	to work fully on FreeBSD (well, except for the controlling of launchd(8) part)
+	
+	After launchctl(1) is modified correctly, removal of CoreFoundation and 
+	Zeroconf calls from launchd(8) can be made, and finally liblaunch can be 
+	fixed to accomodate.
+	

==== //depot/projects/soc2005/launchd/includes/launch.h#2 (text+ko) ====

@@ -1,4 +1,31 @@
 /*
+ * $FreeBSD$
+ *
+ * Copyright (c) 2005 R. Tyler Ballance <tyler@tamu.edu> All rights reserved.
+ *
+ *	Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE * 
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
  * Copyright (c) 2005 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
@@ -112,6 +139,7 @@
 	LAUNCH_DATA_BOOL,
 	LAUNCH_DATA_STRING,
 	LAUNCH_DATA_OPAQUE,
+	LAUNCH_DATA_PROPERTY,
 	LAUNCH_DATA_ERRNO,
 } launch_data_type_t;
 

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

@@ -72,6 +72,8 @@
 #include <unistd.h>
 #include <dirent.h>
 #include <libgen.h>
+/* include libutil.h for basic property parsing (see: xx.launch) */
+#include <libutil.h>
 #include <pwd.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -98,6 +100,7 @@
 static void distill_config_file(launch_data_t);
 static void sock_dict_cb(launch_data_t what, const char *key, void *context);
 static void sock_dict_edit_entry(launch_data_t tmp, const char *key, launch_data_t fdarray, launch_data_t thejob);
+static launch_data_t read_conf_file(const char *, bool, bool);
 //static launch_data_t CF2launch_data(const void *);
 //static launch_data_t read_plist_file(const char *file, bool editondisk, bool load);
 //static const void  *CreateMyPropertyListFromFile(const char *);
@@ -330,11 +333,30 @@
 }
 
 static launch_data_t read_conf_file(const char *file, bool editondisk, bool load) {
-	launch_data_t r = NULL;
+	/* fill this with an array of launch_data_t structs */
+	launch_data_t retval = NULL; 
+	properties conf_props;
+	int fd;
+	
+	fd = open(file, O_RDONLY);
+	if (fd == -1)
+		return NULL; /* calling function must check for a NULL pointer */
+		
+	conf_props = properties_read(fd); /* read in config data */
 	
+	retval = launch_data_alloc(LAUNCH_DATA_PROPERTY);
+	launch_data_set_opaque(retval, (const void *)(conf_props), sizeof(properties));
 	
-	return r;
+	/* I figure we'll just add the properties(3) linked list to the 
+	 * opaque launch_data_t datatype (opaque ~= void *) 
+	 * 
+	 * this will probably come back to haunt me
+	 */
+		
+	close(fd);
+	return retval;
 }
+
 /*
 static launch_data_t read_plist_file(const char *file, bool editondisk, bool load)
 {

==== //depot/projects/soc2005/launchd/launchers/ftp.launch#3 (text+ko) ====

@@ -3,6 +3,7 @@
 # Simple, launchd(8) launcher for the ftp daemon
 #
 
+program	  = ftpd
 progpath  = /usr/libexec/ftpd
 #firstboot = /usr/libexec/ftpd
 progflags = -l
@@ -12,6 +13,6 @@
 ##################################
 
 ## inetd related options
+### start this daemon from the (x)inetd super server
 # inetd = false
 # inetd_wait = false
-

==== //depot/projects/soc2005/launchd/launchers/ssh.launch#3 (text+ko) ====

@@ -3,6 +3,7 @@
 # Simple, launchd(8) launcher for the SSH daemon
 #
 
+program   = sshd
 progpath  = /usr/bin/sshd
 #firstboot = /some/script/to/do/keygen
 progflags = -i
@@ -12,6 +13,6 @@
 ##################################
 
 ## inetd related options
+### start this daemon from the (x)inetd super server
 # inetd = false
 # inetd_wait = false
-

==== //depot/projects/soc2005/launchd/liblaunch.c#2 (text+ko) ====

@@ -156,6 +156,7 @@
 	if (d) {
 		d->type = t;
 		switch (t) {
+		case LAUNCH_DATA_PROPERTY:
 		case LAUNCH_DATA_DICTIONARY:
 		case LAUNCH_DATA_ARRAY:
 			d->_array = malloc(0);
@@ -168,10 +169,7 @@
 	return d;
 }
 
-launch_data_type_t launch_data_get_type(launch_data_t d)
-{
-	return d->type;
-}
+launch_data_type_t launch_data_get_type(launch_data_t d) { return d->type; }
 
 void launch_data_free(launch_data_t d)
 {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200507090918.j699I9Bw045960>