[Initng-svn] r2328 - in initng: . devtool initfiles/daemon initfiles/debug initfiles/net initfiles/system plugins/find plugins/initctl plugins/iparser plugins/ngc2 plugins/pidfile/test plugins/reload plugins/rlparser plugins/usplash scripts/net src test tools

svn at initng.thinktux.net svn at initng.thinktux.net
Sun Dec 4 22:21:17 CET 2005


Author: jimmy
Date: Sun Dec  4 22:21:15 2005
New Revision: 2328

Modified:
   initng/Makefile.am
   initng/autogen.sh
   initng/configure.in
   initng/devtool/test_parser.c
   initng/initfiles/daemon/pump.ii
   initng/initfiles/daemon/udhcpc.ii
   initng/initfiles/debug/buggy.ii
   initng/initfiles/net/net.ii
   initng/initfiles/system/fbsplash.ii
   initng/plugins/find/initng_find.c
   initng/plugins/initctl/initng_initctl.c
   initng/plugins/initctl/initreq.h
   initng/plugins/iparser/initng_i_parser.c
   initng/plugins/ngc2/initng_ngc2.c
   initng/plugins/ngc2/initng_ngc2.h
   initng/plugins/ngc2/ngc2.c
   initng/plugins/pidfile/test/test_pidfile.c
   initng/plugins/reload/initng_reload.c
   initng/plugins/rlparser/initng_rl_parser.c
   initng/plugins/usplash/initng_usplash.h
   initng/scripts/net/dhclient-wrapper
   initng/scripts/net/dhcp
   initng/scripts/net/functions
   initng/scripts/net/interface
   initng/scripts/net/udhcpc-wrapper
   initng/scripts/net/wpa_supplicant
   initng/src/initng.h
   initng/src/initng_env_variable.c
   initng/src/initng_load_module.c
   initng/test/test_initng_load_module.c
   initng/tools/install_service.c
Log:
Subject: [PATCH] Allow to configure paths for /lib/initng + /etc/initng

This patch allows to configure directories which are used for initng
configuration, its plugins, sockets and databases. This solves the
following problems:

  * on multilib aware systems (e.g. Fedora), the plugins will be written
  into /lib64/initng but initng expects them in /lib/initng
  
  * for developing it might be useful not to work on /
  
  This patch requires (and adds) the following changes:
  
  * 'install_service' expands @/lib/initng@ and @/etc/initng@ to the
    configured paths. To do this, I added a static overlay table which
  gets evaluated before everything else.
      
  * the $INITNG_PLUGIN_DIR and $INITNG_ROOT environment variables will
  be set for script execution

  * a '--with-dev-dir' configure option was added which allows to
  configure an alternative path for /dev
	  
  * I added a new, automatically generated headerfile (initng-paths.h)
  which contains the definitions for all the paths. The 'config.h'
  file can NOT be used because evaluation of e.g. $(iconfdir) happens
  to late.
	
  NOTES FOR SCRIPT-WRITERS: do not use /lib/initng or /etc/initng anymore
  but quote them with '@...@'. Within bash-scripts, use:
  - $INITNG_PLUGIN_DIR instead of /lib/initng and
  - $INITNG_ROOT instead of /etc/initng
	      
  WARNING FOR PACKAGERS: location of /var depends on the value of
  $(localstatedir). Unfortunately, configuration methods (e.g. the
  %configure macro of rpm) differ between the various distributions and
  assign different default values to this variable (sometimes '/var',
  sometimes '/var/run'). So make sure that '--localstatedir=/var' will
  be passed to ./configure
				
Bug #319				



Modified: initng/Makefile.am
==============================================================================
--- initng/Makefile.am	(original)
+++ initng/Makefile.am	Sun Dec  4 22:21:15 2005
@@ -2,6 +2,9 @@
 
 sbin_SCRIPTS = gen_system_runlevel
 
+BUILT_SOURCES = initng-paths.h
+CLEANFILES =    initng-paths.h
+
 EXTRA_DIST = \
 	$(sbin_SCRIPTS) \
 	autogen.sh \
@@ -20,3 +23,13 @@
 	@echo "If you have initng running, you can reload it with:"
 	@echo "# /sbin/ngc -c"
 	@echo
+
+initng-paths.h:		$(top_builddir)/config.status
+	@echo '#ifndef INITNG_INITNG_PATHS_H'  >$@
+	@echo '#define INITNG_INITNG_PATHS_H' >>$@
+	@echo '#define DEVDIR			"$(devdir)"'        >>$@
+	@echo '#define ETCDIR			"$(sysconfdir)"'    >>$@
+	@echo '#define VARDIR			"$(localstatedir)"' >>$@
+	@echo '#define INITNG_ROOT		"$(iconfdir)"'      >>$@
+	@echo '#define INITNG_PLUGIN_DIR	"$(pkglibdir)"'     >>$@
+	@echo '#endif /* INITNG_INITNG_PATHS_H */'                  >>$@

Modified: initng/autogen.sh
==============================================================================
--- initng/autogen.sh	(original)
+++ initng/autogen.sh	Sun Dec  4 22:21:15 2005
@@ -133,4 +133,5 @@
 	--sysconfdir=/etc \
 	--libdir=/lib \
 	--sbindir=/sbin \
+	--localstatedir=/var \
 	--mandir=/usr/share/man

Modified: initng/configure.in
==============================================================================
--- initng/configure.in	(original)
+++ initng/configure.in	Sun Dec  4 22:21:15 2005
@@ -107,6 +107,12 @@
 AS_AC_EXPAND(SBINDIR, $sbindir)
 AS_AC_EXPAND(LIBDIR, $libdir)
 
+AC_ARG_WITH(dev-dir, AC_HELP_STRING([--with-dev-dir],[Directory for the initng control socket]),
+            [devdir="$with_dev_dir"],
+            [devdir=/dev])
+AC_SUBST(devdir)
+
+
 AC_ARG_WITH(doc-dir, AC_HELP_STRING([--with-doc-dir],[Directory to install documentation]))
 if ! test -z "$with_doc_dir"; then
    DOCDIR=$with_doc_dir

Modified: initng/devtool/test_parser.c
==============================================================================
--- initng/devtool/test_parser.c	(original)
+++ initng/devtool/test_parser.c	Sun Dec  4 22:21:15 2005
@@ -50,6 +50,7 @@
 #include "../src/initng_service_data_types.h"
 #include "../src/initng_fd.h"
 #include "../src/initng_common.h"
+#include "../initng-paths.h"
 
 /* include some soruce files directly, remember this is only a test */
 #include "../src/initng_global.c"
@@ -243,7 +244,7 @@
     int i;
     int result = NOT_OK;
 
-    sprintf(tmp, "/etc/initng/%s", dirname);
+    sprintf(tmp, INITNG_ROOT "/%s", dirname);
 
     d = opendir(tmp);
     if (!d)

Modified: initng/initfiles/daemon/pump.ii
==============================================================================
--- initng/initfiles/daemon/pump.ii	(original)
+++ initng/initfiles/daemon/pump.ii	Sun Dec  4 22:21:15 2005
@@ -23,8 +23,8 @@
 
 		[[ ${d} == *' nontp '* ]] && exit 0
 
-		. /lib/initng/scripts/net/functions
-		. /lib/initng/scripts/net/system
+		. @/lib/initng@/scripts/net/functions
+		. @/lib/initng@/scripts/net/system
 
 		eval ntp_servers_${ifvar}=$( pump -i ${iface} --status | sed -n -e 's/^.*Ntpservers: //p' )
 		system_ntp

Modified: initng/initfiles/daemon/udhcpc.ii
==============================================================================
--- initng/initfiles/daemon/udhcpc.ii	(original)
+++ initng/initfiles/daemon/udhcpc.ii	Sun Dec  4 22:21:15 2005
@@ -13,6 +13,6 @@
 		[[ -n ${h} && ${h} != "(none)" && ${h} != "localhost" \
 			&& ${opts} != *' -h '* && ${d} != *' nohostname '* ]] \
 				&& opts="${opts} --hostname=${h}"
-		exec udhcpc ${opts} --now --script=/lib/initng/scripts/net/udhcpc-wrapper --pidfile=/var/run/udhcpc-${NAME}.pid --interface=${NAME}
+		exec udhcpc ${opts} --now --script=@/lib/initng@/scripts/net/udhcpc-wrapper --pidfile=/var/run/udhcpc-${NAME}.pid --interface=${NAME}
 	}
 }

Modified: initng/initfiles/debug/buggy.ii
==============================================================================
--- initng/initfiles/debug/buggy.ii	(original)
+++ initng/initfiles/debug/buggy.ii	Sun Dec  4 22:21:15 2005
@@ -10,9 +10,9 @@
 	exec stop  = /sbin/ifdown;
 	exec_args stop = lo;
 #elsed
-	exec start = /lib/initng/scripts/net/interface;
+	exec start = @/lib/initng@/scripts/net/interface;
 	exec_args start = ${NAME} start;
-	exec stop  = /lib/initng/scripts/net/interface;
+	exec stop  = @/lib/initng@/scripts/net/interface;
 	exec_args stop  = ${NAME} stop;
 #endd
 }
@@ -29,9 +29,9 @@
 	exec stop  = /sbin/ifdown;
 	exec_args stop  = ${NAME};
 #elsed
-	exec start = /lib/initng/scripts/net/interface;
+	exec start = @/lib/initng@/scripts/net/interface;
 	exec_args start = ${NAME} start;
-	exec stop  = /lib/initng/scripts/net/interface;
+	exec stop  = @/lib/initng@/scripts/net/interface;
 	exec_args stop  = ${NAME} stop;
 #endd
 }

Modified: initng/initfiles/net/net.ii
==============================================================================
--- initng/initfiles/net/net.ii	(original)
+++ initng/initfiles/net/net.ii	Sun Dec  4 22:21:15 2005
@@ -49,9 +49,9 @@
 #endd
 	use = system/static-modules system/coldplug;
 #ifd gentoo
-	exec start = /lib/initng/scripts/net/interface;
+	exec start = @/lib/initng@/scripts/net/interface;
 	exec_args start = $NAME start;
-	exec stop  = /lib/initng/scripts/net/interface;
+	exec stop  = @/lib/initng@/scripts/net/interface;
 	exec_args stop  = $NAME stop;
 #elsed
 	exec start = /sbin/ifup;
@@ -71,9 +71,9 @@
 #endd
 	use = system/static-modules system/coldplug daemon/cardmgr;
 #ifd gentoo
-	exec start = /lib/initng/scripts/net/interface;
+	exec start = @/lib/initng@/scripts/net/interface;
 	exec_args start = $NAME start;
-	exec stop = /lib/initng/scripts/net/interface;
+	exec stop = @/lib/initng@/scripts/net/interface;
 	exec_args stop  = $NAME stop;
 #elsed
 	exec start = /sbin/ifup;

Modified: initng/initfiles/system/fbsplash.ii
==============================================================================
--- initng/initfiles/system/fbsplash.ii	(original)
+++ initng/initfiles/system/fbsplash.ii	Sun Dec  4 22:21:15 2005
@@ -1,15 +1,15 @@
 service system/fbsplash/start {
 	need = system/initial;
-	exec start = /lib/initng/scripts/splash/fbsplash.sh;
+	exec start = @/lib/initng@/scripts/splash/fbsplash.sh;
 	exec_args start = start;
-	exec stop = /lib/initng/scripts/splash/fbsplash.sh;
+	exec stop = @/lib/initng@/scripts/splash/fbsplash.sh;
 	exec_args stop = shutdown;
 }
 
 service system/fbsplash/stop {
 	need = system/initial;
 	just_before = daemon/gdm daemon/kdm daemon/xdm daemon/wdm daemon/entranced;
-	exec start = /lib/initng/scripts/splash/fbsplash.sh;
+	exec start = @/lib/initng@/scripts/splash/fbsplash.sh;
 	exec_args start = stop;
 }
 

Modified: initng/plugins/find/initng_find.c
==============================================================================
--- initng/plugins/find/initng_find.c	(original)
+++ initng/plugins/find/initng_find.c	Sun Dec  4 22:21:15 2005
@@ -38,6 +38,7 @@
 #include "../../src/initng_plugin_hook.h"
 #include "../../src/initng_plugin_callers.h"
 #include "../../src/initng_common.h"
+#include "../../initng-paths.h"
 
 #include "initng_find.h"
 

Modified: initng/plugins/initctl/initng_initctl.c
==============================================================================
--- initng/plugins/initctl/initng_initctl.c	(original)
+++ initng/plugins/initctl/initng_initctl.c	Sun Dec  4 22:21:15 2005
@@ -44,6 +44,7 @@
 #include "../../src/initng_plugin.h"
 #include "../../src/initng_load_module.h"
 #include "../../src/initng_static_states.h"
+#include "../../initng-paths.h"
 
 #include <utmp.h>
 #include "initreq.h"

Modified: initng/plugins/initctl/initreq.h
==============================================================================
--- initng/plugins/initctl/initreq.h	(original)
+++ initng/plugins/initctl/initreq.h	Sun Dec  4 22:21:15 2005
@@ -17,9 +17,9 @@
 #include <sys/param.h>
 
 #if defined(__FreeBSD_kernel__)
-#  define INIT_FIFO  "/etc/.initctl"
+#  define INIT_FIFO  ETCDIR "/.initctl"
 #else
-#  define INIT_FIFO  "/dev/initctl"
+#  define INIT_FIFO  DEVDIR "/initctl"
 #endif
 
 #define INIT_MAGIC 0x03091969

Modified: initng/plugins/iparser/initng_i_parser.c
==============================================================================
--- initng/plugins/iparser/initng_i_parser.c	(original)
+++ initng/plugins/iparser/initng_i_parser.c	Sun Dec  4 22:21:15 2005
@@ -39,6 +39,7 @@
 #include "../../src/initng_plugin_hook.h"
 #include "../../src/initng_error.h"
 #include "../../src/initng_handler.h"
+#include "../../initng-paths.h"
 
 #include "initng_i_parser.h"
 

Modified: initng/plugins/ngc2/initng_ngc2.c
==============================================================================
--- initng/plugins/ngc2/initng_ngc2.c	(original)
+++ initng/plugins/ngc2/initng_ngc2.c	Sun Dec  4 22:21:15 2005
@@ -49,9 +49,10 @@
 #include "../../src/initng_error.h"
 #include "../../src/initng_plugin.h"
 #include "../../src/initng_static_states.h"
-
 #include "../../src/initng_control_command.h"
 
+#include "../../initng-paths.h"
+
 #include "initng_ngc2.h"
 
 static void accepted_client(f_module_h * from);

Modified: initng/plugins/ngc2/initng_ngc2.h
==============================================================================
--- initng/plugins/ngc2/initng_ngc2.h	(original)
+++ initng/plugins/ngc2/initng_ngc2.h	Sun Dec  4 22:21:15 2005
@@ -21,9 +21,9 @@
 #include "../../src/initng_active_db.h"
 #include "../../src/initng_system_states.h"
 
-#define SOCKET_FILENAME_REAL "/dev/initng/initng"
-#define SOCKET_FILENAME_TEST "/dev/initng/initng-test"
-#define SOCKET_ROOTPATH "/dev/initng/"
+#define SOCKET_ROOTPATH      DEVDIR "/initng/"
+#define SOCKET_FILENAME_REAL SOCKET_ROOTPATH "initng"
+#define SOCKET_FILENAME_TEST SOCKET_ROOTPATH "initng-test"
 
 #define PROTOCOL_VERSION 3
 

Modified: initng/plugins/ngc2/ngc2.c
==============================================================================
--- initng/plugins/ngc2/ngc2.c	(original)
+++ initng/plugins/ngc2/ngc2.c	Sun Dec  4 22:21:15 2005
@@ -38,6 +38,8 @@
 #include "../../src/initng.h"
 #include "../../src/initng_control_command.h"
 #include "../../src/initng_active_state.h"
+#include "../../initng-paths.h"
+
 #include "initng_ngc2.h"
 
 /* maximum size of string rescived, warning ngc -p can contain a lot */

Modified: initng/plugins/pidfile/test/test_pidfile.c
==============================================================================
--- initng/plugins/pidfile/test/test_pidfile.c	(original)
+++ initng/plugins/pidfile/test/test_pidfile.c	Sun Dec  4 22:21:15 2005
@@ -2,7 +2,7 @@
 #include <sys/types.h>
 #include <unistd.h>
 
-#define PIDFILE "/var/run/test.pid"
+#define PIDFILE VARDIR "/run/test.pid"
 
 static void set_pid_file(void)
 {

Modified: initng/plugins/reload/initng_reload.c
==============================================================================
--- initng/plugins/reload/initng_reload.c	(original)
+++ initng/plugins/reload/initng_reload.c	Sun Dec  4 22:21:15 2005
@@ -36,11 +36,12 @@
 #include "../../src/initng_static_data_id.h"
 #include "../../src/initng_active_state.h"
 #include "../../src/initng_process_db.h"
+#include "../../initng-paths.h"
 
 #include "initng_reload.h"
 
-#define SAVE_FILE "/var/initng_db_backup.v11"
-#define SAVE_FILE_FAKE "/var/initng_db_backup.v11"
+#define SAVE_FILE      VARDIR "/initng_db_backup.v11"
+#define SAVE_FILE_FAKE VARDIR "/initng_db_backup.v11"
 
 s_command FAST_RELOAD = { 'c', "hot_reload", VOID_COMMAND, NO_OPT,
     {(void *) &cmd_fast_reload},

Modified: initng/plugins/rlparser/initng_rl_parser.c
==============================================================================
--- initng/plugins/rlparser/initng_rl_parser.c	(original)
+++ initng/plugins/rlparser/initng_rl_parser.c	Sun Dec  4 22:21:15 2005
@@ -36,6 +36,7 @@
 #include "../../src/initng_plugin_hook.h"
 #include "../../src/initng_handler.h"
 #include "../../src/initng_service.h"
+#include "../../initng-paths.h"
 
 #include "initng_rl_parser.h"
 

Modified: initng/plugins/usplash/initng_usplash.h
==============================================================================
--- initng/plugins/usplash/initng_usplash.h	(original)
+++ initng/plugins/usplash/initng_usplash.h	Sun Dec  4 22:21:15 2005
@@ -21,7 +21,7 @@
 #ifndef INITNG_USPLASH_H
 #define INITNG_USPLASH_H
 
-#define USPLASH_FIFO "/dev/usplash_fifo"
+#define USPLASH_FIFO DEVDIR "/usplash_fifo"
 int last_percent;
 
 int print_output(active_h * service);

Modified: initng/scripts/net/dhclient-wrapper
==============================================================================
--- initng/scripts/net/dhclient-wrapper	(original)
+++ initng/scripts/net/dhclient-wrapper	Sun Dec  4 22:21:15 2005
@@ -35,4 +35,4 @@
 export nis_domain_${interface}="${new_nis_domain}"
 export nis_servers_${interface}="${new_nis_servers}"
 
-/lib/initng/scripts/net/dhcp ${action}
+${INITNG_PLUGIN_DIR}/scripts/net/dhcp ${action}

Modified: initng/scripts/net/dhcp
==============================================================================
--- initng/scripts/net/dhcp	(original)
+++ initng/scripts/net/dhcp	Sun Dec  4 22:21:15 2005
@@ -6,7 +6,7 @@
 
 action="$1"
 
-. /lib/initng/scripts/net/functions
+. ${INITNG_PLUGIN_DIR}/scripts/net/functions
 . "${libdir}/system"
 
 # Bring the interface up

Modified: initng/scripts/net/functions
==============================================================================
--- initng/scripts/net/functions	(original)
+++ initng/scripts/net/functions	Sun Dec  4 22:21:15 2005
@@ -221,7 +221,7 @@
 #############################################################################
 
 # Load some Gentoo functions to save re-writing loads of stuff
-[[ -z ${libdir} ]] && libdir="/lib/initng/scripts/net"
+[[ -z ${libdir} ]] && libdir="${INITNG_PLUGIN_DIR}/scripts/net"
 source "${libdir}/gentoo-functions"
 
 RC_VERBOSE="yes"

Modified: initng/scripts/net/interface
==============================================================================
--- initng/scripts/net/interface	(original)
+++ initng/scripts/net/interface	Sun Dec  4 22:21:15 2005
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-. "/lib/initng/scripts/net/functions"
+. "${INITNG_PLUGIN_DIR}/scripts/net/functions"
 
 interface_get_vars() {
 	echo "config_$1 routes_$1 fallback_$1 fallback_route_$1 metric_$1"

Modified: initng/scripts/net/udhcpc-wrapper
==============================================================================
--- initng/scripts/net/udhcpc-wrapper	(original)
+++ initng/scripts/net/udhcpc-wrapper	Sun Dec  4 22:21:15 2005
@@ -14,4 +14,4 @@
 export nis_domain_${interface}="${nisdomain}"
 export nis_servers_${interface}="${nissrv}"
 
-/lib/initng/scripts/net/dhcp "$@"
+${INITNG_PLUGIN_DIR}/scripts/net/dhcp "$@"

Modified: initng/scripts/net/wpa_supplicant
==============================================================================
--- initng/scripts/net/wpa_supplicant	(original)
+++ initng/scripts/net/wpa_supplicant	Sun Dec  4 22:21:15 2005
@@ -3,7 +3,7 @@
 # Distributed under the terms of the GNU General Public License v2
 # Contributed by Roy Marples (uberlord at gentoo.org)
 
-. /lib/initng/scripts/net/functions
+. ${INITNG_PLUGIN_DIR}/scripts/net/functions
 
 wpa_supplicant() {
 	LC_ALL=C /usr/sbin/wpa_supplicant "$@"

Modified: initng/src/initng.h
==============================================================================
--- initng/src/initng.h	(original)
+++ initng/src/initng.h	Sun Dec  4 22:21:15 2005
@@ -44,8 +44,6 @@
 /*#define DEBUG */
 
 /* specify paths */
-#define INITNG_ROOT     "/etc/initng"
-#define INITNG_PLUGIN_DIR "/lib/initng"
 #define INITNG_EXT      ".i"
 
 /* standard console */

Modified: initng/src/initng_env_variable.c
==============================================================================
--- initng/src/initng_env_variable.c	(original)
+++ initng/src/initng_env_variable.c	Sun Dec  4 22:21:15 2005
@@ -46,10 +46,14 @@
 #include "initng_string_tools.h"
 #include "initng_global.h"
 
+#include "../initng-paths.h"
+
 const char *initng_environ[] = {
     "INITNG=" INITNG_VERSION,
     "INITNG_CREATOR=" INITNG_CREATOR,
     "INIT_VERSION=" INITNG_VERSION,
+    "INITNG_PLUGIN_DIR=" INITNG_PLUGIN_DIR,
+    "INITNG_ROOT=" INITNG_ROOT,
     "PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/opt/bin",
     "HOME=/root",
     "USER=root",
@@ -76,7 +80,7 @@
      */
 
     /*  At least 11 allocatons below, and place for plugin added to (about 100) */
-    allocate = 112;
+    allocate = 114;
 
     /* count existing env's */
 #ifdef USE_OLD_ENV

Modified: initng/src/initng_load_module.c
==============================================================================
--- initng/src/initng_load_module.c	(original)
+++ initng/src/initng_load_module.c	Sun Dec  4 22:21:15 2005
@@ -34,6 +34,7 @@
 #include "initng_toolbox.h"
 #include "initng_main.h"
 #include "initng_common.h"
+#include "../initng-paths.h"
 
 /* 
  * Some modules depend on other modules.

Modified: initng/test/test_initng_load_module.c
==============================================================================
--- initng/test/test_initng_load_module.c	(original)
+++ initng/test/test_initng_load_module.c	Sun Dec  4 22:21:15 2005
@@ -23,11 +23,12 @@
     g.Argv[1] = NULL;
 
     TEST("test a non-existant plugin ...\n");
-    m = open_module("/lib/initng/libplug_nonexistant.so", "nonexistant");
+    m = open_module(INITNG_PLUGIN_DIR "/libplug_nonexistant.so",
+                    "nonexistant");
     CU_ASSERT(m == NULL);
 
     TEST("test the simplest plugin ...\n");
-    m = open_module("/lib/initng/libplug_empty.so", "plug_empty");
+    m = open_module(INITNG_PLUGIN_DIR "/libplug_empty.so", "plug_empty");
     CU_ASSERT(m != NULL);
 
     if (m != NULL)
@@ -41,15 +42,17 @@
     }
 
     TEST("missing module_init() ...\n");
-    m = open_module("/lib/initng/libplug_broken_0.so", "plug_broken_0");
+    m = open_module(INITNG_PLUGIN_DIR "/libplug_broken_0.so",
+                    "plug_broken_0");
     CU_ASSERT(m == NULL);
 
     TEST("missing module_unload() ...\n");
-    m = open_module("/lib/initng/libplug_broken_1.so", "plug_broken_1");
+    m = open_module(INITNG_PLUGIN_DIR "/libplug_broken_1.so",
+                    "plug_broken_1");
     CU_ASSERT(m == NULL);
 
     TEST("module_needs specified, but empty ...\n");
-    m = open_module("/lib/initng/libplug_needs.so", "plug_needs");
+    m = open_module(INITNG_PLUGIN_DIR "/libplug_needs.so", "plug_needs");
     CU_ASSERT(m != NULL);
     if (m != NULL)
     {
@@ -66,7 +69,8 @@
     }
 
     TEST("module_needs specified, non-empty ...\n");
-    m = open_module("/lib/initng/libplug_needs_empty.so", "plug_needs_empty");
+    m = open_module(INITNG_PLUGIN_DIR "/libplug_needs_empty.so",
+                    "plug_needs_empty");
     CU_ASSERT(m != NULL);
     if (m != NULL)
     {

Modified: initng/tools/install_service.c
==============================================================================
--- initng/tools/install_service.c	(original)
+++ initng/tools/install_service.c	Sun Dec  4 22:21:15 2005
@@ -30,8 +30,11 @@
 #include <sys/types.h>
 #include <sys/wait.h>
 
+#include "../initng-paths.h"
+
 /*#define DEBUG */
 
+#undef D_
 #ifdef DEBUG
 #define D_(fmt,...) printf(fmt, ## __VA_ARGS__)
 #else
@@ -57,10 +60,16 @@
 
 struct s_overlay
 {
-    char *opt;
-    char *value;
+    char const *opt;
+    char const *value;
 } overlay[1001];
 
+static struct s_overlay const STATIC_OVERLAYS[] = {
+    {"/lib/initng", INITNG_PLUGIN_DIR},
+    {"/etc/initng", INITNG_ROOT},
+    {0, 0}
+};
+
 static char *at_default_path = NULL;
 
 /* #define MAX_AT_DEF_PATHS 100 */
@@ -316,6 +325,18 @@
         return 0;                           /* @@ => @ translation, no looping required */
     }
 
+    /* handle some special phrases */
+    for (i=0; STATIC_OVERLAYS[i].opt; ++i)
+    {
+        if (strcmp(fullphrase, STATIC_OVERLAYS[i].opt) == 0)
+        {
+            printf("  **\t\"@%s@\" set by overlay to \"%s\".\n", fullphrase,
+                   STATIC_OVERLAYS[i].value);
+            fputs(STATIC_OVERLAYS[i].value, stream);
+            return (0);
+        }
+    }
+
     /*    if (!path)
        return; */
     if (!(phrase = strrchr(fullphrase, '/')))
@@ -835,7 +856,7 @@
         load_overlay_file(file);
 
         /* a standard path for overlay */
-        load_overlay_file("/etc/initng/initng.overlay");
+        load_overlay_file(INITNG_ROOT "/initng.overlay");
 
         /*printf("Overlays found:\n");
            for(j=0;j<1000 && overlay[j].opt;j++)
@@ -1064,11 +1085,11 @@
     /* free the overlay table */
     for (i = 0; i < 1000 && overlay[i].opt; i++)
     {
-        free(overlay[i].opt);
+        free((char *) overlay[i].opt);      /* const-cast */
         overlay[i].opt = NULL;
         if (overlay[i].value)
         {
-            free(overlay[i].value);
+            free((char *) overlay[i].value);    /* const-cast */
             overlay[i].value = NULL;
         }
     }


More information about the Initng-svn mailing list