[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