aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2007-04-10 10:33:44 +0000
committerRoy Marples <roy@marples.name>2007-04-10 10:33:44 +0000
commit0c98067d57606c59866e9ff35f2a6aedaaedaf76 (patch)
tree6cb5a27b2e26d8c669770b3ff3b2516ff2e3db98 /src
parentc5ddc6ef74460f72ea56350c6ff002c9630f6552 (diff)
Misc network fixes so we work on my stable server. Splash plugin removed as splashtuils-1.4 now ships with its own.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile4
-rw-r--r--src/librc-misc.c9
-rw-r--r--src/runscript.c18
-rw-r--r--src/splash.c130
4 files changed, 13 insertions, 148 deletions
diff --git a/src/Makefile b/src/Makefile
index 91398f47..8996ce44 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -113,10 +113,6 @@ $(LIBRCSO): $(LIBRCOBJS)
$(CC) -fPIC -shared -Wl,-soname,$(LIBRCSO) -o $(LIBRCSO) $(LIBRCOBJS)
ln -sf $(LIBRCSO) librc.so
-splash: CFLAGS += -fPIC
-splash: splash.o
- $(CC) -fPIC -shared -Wl,-soname,splash.so -o splash.so splash.o
-
env-update: $(LIBEINFOSO) $(LIBRCSO) env-update.o
fstabinfo: $(LIBEINFOSO) fstabinfo.o
diff --git a/src/librc-misc.c b/src/librc-misc.c
index fcb536f2..b367ccc3 100644
--- a/src/librc-misc.c
+++ b/src/librc-misc.c
@@ -447,7 +447,10 @@ char **rc_get_list (char **list, const char *file)
token = strsep (&p, "#");
if (token && (strlen (token) > 1))
{
- token[strlen (token) - 1] = 0;
+ /* Stip the newline if present */
+ if (token[strlen (token) - 1] == '\n')
+ token[strlen (token) - 1] = 0;
+
list = rc_strlist_add (list, token);
}
}
@@ -745,9 +748,5 @@ char **rc_config_env (char **env)
free (line);
}
- /* Set this var to ensure that things are POSIX, which makes scripts work
- on non GNU systems with less effort. */
- env = rc_strlist_add (env, "POSIXLY_CORRECT=1");
-
return (env);
}
diff --git a/src/runscript.c b/src/runscript.c
index ad8a251c..0b440e29 100644
--- a/src/runscript.c
+++ b/src/runscript.c
@@ -234,14 +234,7 @@ static void cleanup (void)
if (in_control ())
{
- if (rc_service_state (applet, rc_service_starting))
- {
- if (rc_service_state (applet, rc_service_wasinactive))
- rc_mark_service (applet, rc_service_inactive);
- else
- rc_mark_service (applet, rc_service_stopped);
- }
- else if (rc_service_state (applet, rc_service_stopping))
+ if (rc_service_state (applet, rc_service_stopping))
{
/* If the we're shutting down, do it cleanly */
if ((softlevel &&
@@ -254,6 +247,13 @@ static void cleanup (void)
else
rc_mark_service (applet, rc_service_started);
}
+ else if (rc_service_state (applet, rc_service_starting))
+ {
+ if (rc_service_state (applet, rc_service_wasinactive))
+ rc_mark_service (applet, rc_service_inactive);
+ else
+ rc_mark_service (applet, rc_service_stopped);
+ }
if (exclusive && rc_exists (exclusive))
unlink (exclusive);
}
@@ -778,7 +778,7 @@ static void svc_stop (const char *service, bool deps)
if (rc_service_state (service, rc_service_wasinactive))
rc_mark_service (service, rc_service_inactive);
else
- rc_mark_service (service, rc_service_stopped);
+ rc_mark_service (service, rc_service_started);
eerrorx ("ERROR: %s failed to stop", applet);
}
diff --git a/src/splash.c b/src/splash.c
deleted file mode 100644
index dbea79a2..00000000
--- a/src/splash.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- splash.c
-
- Splash plugin for the Gentoo RC sytsem.
- splashutils needs to be re-written to support our new system.
- Until then, we provide this compatible module which calls the
- legacy bash scripts which is nasty. And slow.
-
- For any themes that use scripts, such as the live-cd theme,
- they will have to source /sbin/splash-functions.sh themselves like so
-
- if ! type splash >/dev/null 2>/dev/null ; then
- . /sbin/splash-functions.sh
- fi
-
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <rc.h>
-
-#ifndef LIB
-# define LIB "lib"
-#endif
-
-#define SPLASH_CACHEDIR "/" LIB "/splash/cache"
-
-#define SPLASH_CMD "bash -c 'export SOFTLEVEL='%s'; export BOOTLEVEL=${RC_BOOTLEVEL}; export DEFAULTLEVEL=${RC_DEFAULTLEVEL}; export svcdir=${RC_SVCDIR}; add_suffix() { echo \"$@\"; }; . /etc/init.d/functions.sh; . /sbin/splash-functions.sh; splash %s %s %s'"
-
-int _splash_hook (rc_hook_t hook, const char *name);
-
-static int _do_splash (const char *cmd, const char *arg1, const char *arg2)
-{
- char *c;
- int l;
- char *soft = getenv ("RC_SOFTLEVEL");
-
- if (! cmd || ! soft)
- return (-1);
-
- l = strlen (SPLASH_CMD) + strlen (soft) + strlen (cmd);
- if (arg1)
- l += strlen (arg1);
- if (arg2)
- l += strlen (arg2);
- c = malloc (sizeof (char *) * l);
- if (! c)
- return (-1);
-
- snprintf (c, l, SPLASH_CMD,
- arg1 ? strcmp (arg1, RC_LEVEL_SYSINIT) == 0 ? RC_LEVEL_BOOT : soft : soft,
- cmd, arg1 ? arg1 : "", arg2 ? arg2 : "");
- l = system (c);
- free (c);
- return (l);
-}
-
-int _splash_hook (rc_hook_t hook, const char *name)
-{
- switch (hook)
- {
- case rc_hook_runlevel_stop_in:
- if (strcmp (name, RC_LEVEL_SYSINIT) != 0)
- return (_do_splash ("rc_init", name, NULL));
- break;
- case rc_hook_runlevel_start_out:
- if (strcmp (name, RC_LEVEL_SYSINIT) == 0)
- return (_do_splash ("rc_init", name, NULL));
- else
- return (_do_splash ("rc_exit", name, NULL));
- default: ;
- }
-
- /* We don't care about splash unless we're changing runlevels */
- if (! rc_runlevel_starting () &&
- ! rc_runlevel_stopping ())
- return (0);
-
- switch (hook)
- {
- case rc_hook_service_stop_in:
- /* We need to stop localmount from unmounting our cache dir.
- Luckily plugins can add to the unmount list. */
- if (name && strcmp (name, "localmount") == 0)
- {
- char *umounts = getenv ("RC_NO_UMOUNTS");
- char *new;
- int i = strlen (SPLASH_CACHEDIR) + 1;
-
- if (umounts)
- i += strlen (umounts) + 1;
-
- new = malloc (sizeof (char *) * i);
- if (new)
- {
- if (umounts)
- snprintf (new, i, "%s:%s", umounts, SPLASH_CACHEDIR);
- else
- snprintf (new, i, "%s", SPLASH_CACHEDIR);
- }
-
- /* We unsetenv first as some libc's leak memory if we overwrite
- a var with a bigger value */
- if (umounts)
- unsetenv ("RC_NO_UMOUNTS");
- setenv ("RC_NO_UMOUNTS", new, 1);
-
- free (new);
- }
- return (_do_splash ("svc_stop", name, NULL));
- case rc_hook_service_stop_out:
- if (rc_service_state (name, rc_service_stopped))
- return (_do_splash ("svc_stopped", name, "0"));
- else
- return (_do_splash ("svc_started", name, "1"));
- case rc_hook_service_start_in:
- return (_do_splash ("svc_start", name, NULL));
- case rc_hook_service_start_out:
- if (rc_service_state (name, rc_service_stopped))
- return (_do_splash ("svc_started", name, "1"));
- else
- return (_do_splash ("svc_started", name, "0"));
- default: ;
- }
-
- return (0);
-}