aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile188
-rw-r--r--src/libeinfo/libeinfo.c26
-rw-r--r--src/librc/librc.h8
-rw-r--r--src/rc-misc.h1
-rw-r--r--src/rc/checkpath.c4
-rw-r--r--src/rc/fstabinfo.c6
-rw-r--r--src/rc/mountinfo.c6
-rw-r--r--src/rc/rc-depend.c6
-rw-r--r--src/rc/rc-logger.c4
-rw-r--r--src/rc/rc-plugin.c6
-rw-r--r--src/rc/rc-status.c6
-rw-r--r--src/rc/rc-update.c6
-rw-r--r--src/rc/rc.c11
-rw-r--r--src/rc/runscript.c24
-rw-r--r--src/rc/start-stop-daemon.c6
15 files changed, 62 insertions, 246 deletions
diff --git a/src/Makefile b/src/Makefile
index dee2d001..f843a812 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,188 +1,6 @@
# Copyright 2007-2008 Roy Marples
-# We should strive to keep this Makefile working with the default make
-# shipped with the OS's we support. Mainly because I'm lazy and just want
-# to type make instead of gmake, but also so that other distros can pick
-# it up and not rely on GNU Make.
+SUBDIR= libeinfo librc rc
-CC ?= gcc
-AR ?= ar
-RANLIB ?= ranlib
-CFLAGS += -O2 -pipe
-LDFLAGS += -L.
-PICFLAG = -fPIC
-
-# GNU Make way of detecting gcc flags we can use
-check_gcc=$(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \
- then echo "$(1)"; else echo "$(2)"; fi)
-
-# pmake check for extra cflags
-WEXTRA != for x in -Wdeclaration-after-statement -Wsequence-point -Wextra; do \
- if $(CC) $$x -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \
- then echo -n "$$x "; fi \
- done
-
-# Loads of nice flags to ensure our code is good
-CFLAGS += -pedantic -std=c99 \
- -Wall -Wunused -Wimplicit -Wshadow -Wformat=2 \
- -Wmissing-declarations -Wno-missing-prototypes -Wwrite-strings \
- -Wbad-function-cast -Wnested-externs -Wcomment -Winline \
- -Wchar-subscripts -Wcast-align -Wno-format-nonliteral \
- $(call check_gcc, -Wdeclaration-after-statement) \
- $(call check_gcc, -Wsequence-point) \
- $(call check_gcc, -Wextra) $(WEXTRA)
-
-# For debugging. -Werror is pointless due to ISO C issues with dlsym
-#CFLAGS += -ggdb
-
-# Set PAM = pam for pam support
-PAM =
-
-# Set TERMCAP = termcap for termcap support
-TERMCAP =
-
-LIBEINFOSOVER = 1
-LIBEINFOSO = libeinfo.so.$(LIBRCSOVER)
-LIBEINFOOBJS= libeinfo.o
-LDLIBS_LIBEINFO =
-
-LIBRCSOVER = 1
-LIBRCSO = librc.so.$(LIBRCSOVER)
-LIBRCOBJS = librc.o librc-depend.o librc-daemon.o librc-misc.o librc-strlist.o
-LDLIBS_LIBRC =
-
-RCOBJS = checkpath.o fstabinfo.o mountinfo.o \
- rc-depend.o rc-logger.o rc-misc.o rc-plugin.o rc-status.o \
- rc-update.o \
- runscript.o start-stop-daemon.o rc.o
-LDLIBS_RC = -leinfo -lrc -lutil
-
-LIB_TARGETS = $(LIBEINFOSO) $(LIBRCSO)
-ULIB_TARGETS = libeinfo.a librc.a
-SBIN_TARGETS = rc
-SYS_WHITELIST = env_whitelist
-
-TARGET = $(LIB_TARGETS) $(ULIB_TARGETS) $(BIN_TARGETS) $(SBIN_TARGETS)
-
-RC_BINLINKS = einfon einfo ewarnn ewarn eerrorn eerror ebegin eend ewend \
- eindent eoutdent esyslog eval_ecolors \
- veinfo vewarn vebegin veend vewend veindent veoutdent \
- service_starting service_started \
- service_stopping service_stopped \
- service_inactive service_wasinactive \
- service_coldplugged service_started_daemon \
- checkpath fstabinfo mountinfo rc-depend \
- service_get_value service_set_value get_options save_options \
- shell_var
-RC_SBINLINKS = mark_service_starting mark_service_started \
- mark_service_stopping mark_service_stopped \
- mark_service_inactive mark_service_wasinactive \
- mark_service_coldplugged mark_service_failed \
- rc-abort
-BINLINKS = rc-status
-SBINLINKS = rc-update runscript start-stop-daemon
-ALL_LINKS = $(BINLINKS) $(SBINLINKS) $(RC_BINLINKS) $(RC_SBINLINKS)
-
-CPPFLAGS += -DLIB=\"$(LIB)\"
-
-# IMPORTANT!!!
-# Ensure that we don't ship with a .svn directory to avoid RPATH security
-# issues. However, this does ease development a little
-LDFLAGS += -Wl,-rpath .
-
-# Load an optional Makefiles - the order is important
-TOPDIR = ..
-include $(TOPDIR)/default.mk
-include Makefile.$(TERMCAP)
-include Makefile.$(OS)
-include Makefile.$(PAM)
-
-all: .depend $(TARGET)
-
-version.h:
- sed -n -e 's/^VERSION =[[:space:]]*\([^[:space:]]*\).*/#define VERSION "\1\"/p' ../Makefile > version.h
- if test -n "${BRANDING}"; then \
- echo "#define BRANDING \"${BRANDING}\"" >> version.h; \
- fi
-
-.SUFFIXES: .lo
-.c.lo:
- $(CC) $(CFLAGS) $(CPPFLAGS) $(PICFLAG) -c $< -o $@
-.o.a:
- $(AR) rc $@.tmp $^
- $(RANLIB) $@.tmp
- mv $@.tmp $@
-
-LIBEINFOOBJS_SO = $(LIBEINFOOBJS:.o=.lo)
-$(LIBEINFOOBJS): CPPFLAGS += $(CPPFLAGS_LIBEINFO)
-$(LIBEINFOOBJS_SO): CPPFLAGS += $(CPPFLAGS_LIBEINFO)
-$(LIBEINFOSO): einfo.map $(LIBEINFOOBJS_SO)
- $(CC) $(LDFLAGS) $(PICFLAG) -shared \
- -Wl,-soname,$(LIBEINFOSO) \
- -Wl,-version-script einfo.map \
- -o $(LIBEINFOSO) $(LIBEINFOOBJS_SO) $(LDLIBS_LIBEINFO)
- ln -sf $(LIBEINFOSO) libeinfo.so
-libeinfo.a: $(LIBEINFOOBJS)
-
-LIBRCOBJS_SO = $(LIBRCOBJS:.o=.lo)
-$(LIBRCSO): rc.map $(LIBRCOBJS_SO)
- $(CC) $(LDFLAGS) $(PICFLAG) -shared \
- -Wl,-soname,$(LIBRCSO) \
- -Wl,-version-script rc.map \
- -o $(LIBRCSO) $(LIBRCOBJS_SO) $(LDLIBS_LIBRC)
- ln -sf $(LIBRCSO) librc.so
-librc.a: $(LIBRCOBJS)
-
-$(RCOBJS): version.h
-$(RCOBJS): CPPFLAGS += $(CPPFLAGS_SSD)
-rc: $(RCOBJS)
-rc: LDLIBS += $(LDLIBS_RC) $(LIBEINFOSO) $(LIBRCSO)
-rc: LDFLAGS += $(BIN_LDFLAGS)
-
-$(ALL_LINKS): rc
- ln -sf rc $@
-links: $(ALL_LINKS)
-
-install:: $(TARGET)
- install -d $(DESTDIR)/$(LIB)
- install -m 0444 $(LIB_TARGETS) $(DESTDIR)/$(LIB)
- install -d $(DESTDIR)/usr/$(LIB)
- install -m 0444 $(ULIB_TARGETS) $(DESTDIR)/usr/$(LIB)
- ln -sf /$(LIB)/$(LIBEINFOSO) $(DESTDIR)/usr/$(LIB)/libeinfo.so
- ln -sf /$(LIB)/$(LIBRCSO) $(DESTDIR)/usr/$(LIB)/librc.so
- install -d $(DESTDIR)/usr/include
- install -m 0444 einfo.h rc.h $(DESTDIR)/usr/include
- install -d $(DESTDIR)/bin
- install -d $(DESTDIR)/sbin
- install -m 0555 $(SBIN_TARGETS) $(DESTDIR)/sbin
- install -d $(DESTDIR)/$(RC_LIB)/conf.d
- install -m 0444 $(SYS_WHITELIST) $(DESTDIR)/$(RC_LIB)/conf.d
- install -d $(DESTDIR)/$(RC_LIB)/bin
- install -d $(DESTDIR)/$(RC_LIB)/sbin
- for x in $(BINLINKS); do ln -sf /sbin/rc $(DESTDIR)/bin/$$x; done
- for x in $(SBINLINKS); do ln -sf rc $(DESTDIR)/sbin/$$x; done
- for x in $(RC_BINLINKS); do ln -sf /sbin/rc $(DESTDIR)/$(RC_LIB)/bin/$$x; done
- for x in $(RC_SBINLINKS); do ln -sf /sbin/rc $(DESTDIR)/$(RC_LIB)/sbin/$$x; done
- if test "$(PAM)" = "pam"; then \
- install -d $(DESTDIR)/etc/pam.d; \
- install -m 0644 start-stop-daemon.pam $(DESTDIR)/etc/pam.d/start-stop-daemon; \
- fi
-
-clean-links:
- rm -f $(ALL_LINKS)
-clean:: clean-links
- echo > .depend
- touch -r Makefile .depend
- rm -f $(TARGET) version.h
- rm -f *.lo *.o *~ *.core *.so *.a
-
-check:
- $(MAKE) -C test $@
-
-include .depend
-_DEPS != ls *.c *.h
-.depend: version.h $(_DEPS)$(wildcard *.c *.h)
- $(CC) $(CPPFLAGS) -MM *.c > .depend
-
-depend::
- $(CC) $(CPPFLAGS) -MM *.c > .depend
+TOPDIR= ..
+include $(TOPDIR)/subdir.mk
diff --git a/src/libeinfo/libeinfo.c b/src/libeinfo/libeinfo.c
index d80af9c0..14f254eb 100644
--- a/src/libeinfo/libeinfo.c
+++ b/src/libeinfo/libeinfo.c
@@ -50,10 +50,7 @@ const char libeinfo_copyright[] = "Copyright (c) 2007-2008 Roy Marples";
#include <unistd.h>
#include "einfo.h"
-#include "rc.h"
-#include "rc-misc.h"
-
-#include "hidden-visibility.h"
+#include "../hidden-visibility.h"
hidden_proto(ecolor)
hidden_proto(ebegin)
hidden_proto(ebeginv)
@@ -415,19 +412,20 @@ static bool colour_terminal (FILE * __EINFO_RESTRICT f)
ee += strlen (ecolors[i].name);
if (ee && *ee == '=') {
+ char *d = strdup (ee + 1);
+ if (d) {
+ char *end = strchr (d, ':');
+ if (end)
+ *end = '\0';
- char *d = xstrdup (ee + 1);
- char *end = strchr (d, ':');
- if (end)
- *end = '\0';
+ c = atoi(d);
- c = atoi(d);
-
- end = strchr (d, ';');
- if (end && *++end == '0')
- bold = _me;
+ end = strchr (d, ';');
+ if (end && *++end == '0')
+ bold = _me;
- free (d);
+ free (d);
+ }
}
}
strlcpy (tmp, tgoto (bold, 0, 0), sizeof (tmp));
diff --git a/src/librc/librc.h b/src/librc/librc.h
index cf61217a..32b5000a 100644
--- a/src/librc/librc.h
+++ b/src/librc/librc.h
@@ -34,10 +34,10 @@
#define _IN_LIBRC
+#include <sys/types.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/time.h>
-#include <sys/types.h>
#include <sys/wait.h>
#include <dirent.h>
@@ -65,10 +65,10 @@
#include "librc-depend.h"
#include "rc.h"
-#include "rc-misc.h"
-#include "strlist.h"
+#include "../rc-misc.h"
+#include "../strlist.h"
-#include "hidden-visibility.h"
+#include "../hidden-visibility.h"
#define librc_hidden_proto(x) hidden_proto(x)
#define librc_hidden_def(x) hidden_def(x)
diff --git a/src/rc-misc.h b/src/rc-misc.h
index 70ddd976..c9f699eb 100644
--- a/src/rc-misc.h
+++ b/src/rc-misc.h
@@ -35,6 +35,7 @@
#include <sys/stat.h>
#include <errno.h>
#include <stdbool.h>
+#include <string.h>
#ifndef LIB
# define LIB "lib"
diff --git a/src/rc/checkpath.c b/src/rc/checkpath.c
index 612a0769..a4d3da1e 100644
--- a/src/rc/checkpath.c
+++ b/src/rc/checkpath.c
@@ -43,8 +43,8 @@
#include <unistd.h>
#include "builtins.h"
-#include "einfo.h"
-#include "rc-misc.h"
+#include "../libeinfo/einfo.h"
+#include "../rc-misc.h"
static const char *applet;
diff --git a/src/rc/fstabinfo.c b/src/rc/fstabinfo.c
index 5f8e469a..04f03846 100644
--- a/src/rc/fstabinfo.c
+++ b/src/rc/fstabinfo.c
@@ -65,10 +65,10 @@
#endif
#include "builtins.h"
-#include "einfo.h"
+#include "../libeinfo/einfo.h"
#include "rc.h"
-#include "rc-misc.h"
-#include "strlist.h"
+#include "../rc-misc.h"
+#include "../strlist.h"
#ifdef HAVE_GETMNTENT
static struct mntent *getmntfile (const char *file)
diff --git a/src/rc/mountinfo.c b/src/rc/mountinfo.c
index 05ce8dd7..155e8601 100644
--- a/src/rc/mountinfo.c
+++ b/src/rc/mountinfo.c
@@ -50,10 +50,10 @@
#include <regex.h>
#include "builtins.h"
-#include "einfo.h"
+#include "../libeinfo/einfo.h"
#include "rc.h"
-#include "rc-misc.h"
-#include "strlist.h"
+#include "../rc-misc.h"
+#include "../strlist.h"
static const char *applet;
diff --git a/src/rc/rc-depend.c b/src/rc/rc-depend.c
index c5e9e662..da99a5c3 100644
--- a/src/rc/rc-depend.c
+++ b/src/rc/rc-depend.c
@@ -40,10 +40,10 @@
#include <string.h>
#include "builtins.h"
-#include "einfo.h"
+#include "../libeinfo/einfo.h"
#include "rc.h"
-#include "rc-misc.h"
-#include "strlist.h"
+#include "../rc-misc.h"
+#include "../strlist.h"
static const char *applet;
diff --git a/src/rc/rc-logger.c b/src/rc/rc-logger.c
index 675a4d23..133026af 100644
--- a/src/rc/rc-logger.c
+++ b/src/rc/rc-logger.c
@@ -48,9 +48,9 @@
# include <libutil.h>
#endif
-#include "einfo.h"
+#include "../libeinfo/einfo.h"
#include "rc-logger.h"
-#include "rc-misc.h"
+#include "../rc-misc.h"
#include "rc.h"
#define LOGFILE RC_SVCDIR "/rc.log"
diff --git a/src/rc/rc-plugin.c b/src/rc/rc-plugin.c
index 613f049e..3f59544b 100644
--- a/src/rc/rc-plugin.c
+++ b/src/rc/rc-plugin.c
@@ -41,11 +41,11 @@
#include <string.h>
#include <unistd.h>
-#include "einfo.h"
+#include "../libeinfo/einfo.h"
#include "rc.h"
-#include "rc-misc.h"
+#include "../rc-misc.h"
#include "rc-plugin.h"
-#include "strlist.h"
+#include "../strlist.h"
#define RC_PLUGIN_HOOK "rc_plugin_hook"
diff --git a/src/rc/rc-status.c b/src/rc/rc-status.c
index 155192fa..1b943cf6 100644
--- a/src/rc/rc-status.c
+++ b/src/rc/rc-status.c
@@ -36,10 +36,10 @@
#include <unistd.h>
#include "builtins.h"
-#include "einfo.h"
+#include "../libeinfo/einfo.h"
#include "rc.h"
-#include "rc-misc.h"
-#include "strlist.h"
+#include "../rc-misc.h"
+#include "../strlist.h"
static const char *applet;
diff --git a/src/rc/rc-update.c b/src/rc/rc-update.c
index 4f07503f..bbf23af0 100644
--- a/src/rc/rc-update.c
+++ b/src/rc/rc-update.c
@@ -39,10 +39,10 @@
#include <unistd.h>
#include "builtins.h"
-#include "einfo.h"
+#include "../libeinfo/einfo.h"
#include "rc.h"
-#include "rc-misc.h"
-#include "strlist.h"
+#include "../rc-misc.h"
+#include "../strlist.h"
static const char *applet = NULL;
diff --git a/src/rc/rc.c b/src/rc/rc.c
index a33b6dcf..cbb9a152 100644
--- a/src/rc/rc.c
+++ b/src/rc/rc.c
@@ -59,12 +59,12 @@ const char rc_copyright[] = "Copyright (c) 2007-2008 Roy Marples";
#include <unistd.h>
#include "builtins.h"
-#include "einfo.h"
+#include "../libeinfo/einfo.h"
#include "rc.h"
#include "rc-logger.h"
-#include "rc-misc.h"
+#include "../rc-misc.h"
#include "rc-plugin.h"
-#include "strlist.h"
+#include "../strlist.h"
#include "version.h"
@@ -1063,14 +1063,13 @@ int main (int argc, char **argv)
run_script (INITEARLYSH);
uname (&uts);
- printf ("\n %sOpenRC %s" VERSION "%s is starting up %s",
+ printf ("\n %sOpenRC %s" VERSION "%s is starting up %s\n\n",
#ifdef BRANDING
BRANDING
#else
""
#endif
- "\n\n",
- ecolor (ECOLOR_GOOD), ecolor (ECOLOR_HILITE),
+ , ecolor (ECOLOR_GOOD), ecolor (ECOLOR_HILITE),
ecolor (ECOLOR_NORMAL));
if (! rc_yesno (getenv ("EINFO_QUIET")) &&
diff --git a/src/rc/runscript.c b/src/rc/runscript.c
index 1385bb02..615b4119 100644
--- a/src/rc/runscript.c
+++ b/src/rc/runscript.c
@@ -54,11 +54,11 @@
#endif
#include "builtins.h"
-#include "einfo.h"
+#include "../libeinfo/einfo.h"
#include "rc.h"
-#include "rc-misc.h"
+#include "../rc-misc.h"
#include "rc-plugin.h"
-#include "strlist.h"
+#include "../strlist.h"
#define SELINUX_LIB RC_LIBDIR "/runscript_selinux.so"
@@ -1080,14 +1080,10 @@ int runscript (int argc, char **argv)
if ((softlevel = xstrdup (getenv ("RC_SOFTLEVEL"))) == NULL) {
/* Ensure our environment is pure
Also, add our configuration to it */
+ char *p;
env = env_filter ();
- tmplist = env_config ();
- rc_strlist_join (&env, tmplist);
- rc_strlist_free (tmplist);
- tmplist = NULL;
if (env) {
- char *p;
#ifdef __linux__
/* clearenv isn't portable, but there's no harm in using it
@@ -1108,12 +1104,16 @@ int runscript (int argc, char **argv)
}
tmp = NULL;
#endif
-
- STRLIST_FOREACH (env, p, i)
- putenv (p);
- /* We don't free our list as that would be null in environ */
}
+ tmplist = env_config ();
+ rc_strlist_join (&env, tmplist);
+ rc_strlist_free (tmplist);
+ tmplist = NULL;
+ STRLIST_FOREACH (env, p, i)
+ putenv (p);
+ /* We don't free our list as that would be null in environ */
+
softlevel = rc_runlevel_get ();
}
diff --git a/src/rc/start-stop-daemon.c b/src/rc/start-stop-daemon.c
index bf03dbec..bfd92026 100644
--- a/src/rc/start-stop-daemon.c
+++ b/src/rc/start-stop-daemon.c
@@ -68,10 +68,10 @@ static struct pam_conv conv = { NULL, NULL};
#endif
#include "builtins.h"
-#include "einfo.h"
+#include "../libeinfo/einfo.h"
#include "rc.h"
-#include "rc-misc.h"
-#include "strlist.h"
+#include "../rc-misc.h"
+#include "../strlist.h"
typedef struct schedulelist
{