diff options
| -rw-r--r-- | Makefile | 17 | ||||
| -rw-r--r-- | bin/shalt.c | 13 | ||||
| -rwxr-xr-x | rc.shutdown | 2 | 
3 files changed, 31 insertions, 1 deletions
| @@ -2,9 +2,20 @@  PREFIX  = /usr  INITDIR = ${PREFIX}/lib/init +BINDIR  = ${PREFIX}/bin +CC      = cc -install: +all: bin/shalt + +bin/shalt: +	${CC} -o bin/shalt bin/shalt.c + +clean: +	rm -f bin/shalt + +install: bin/shalt  	mkdir -p ${DESTDIR}/etc +	install -Dm755 -t ${DESTDIR}${BINDIR} bin/shalt  	install -Dm644 rc.conf ${DESTDIR}/etc/init/rc.conf  	install -Dm644 rc.lib ${DESTDIR}${INITDIR}/rc.lib  	install -Dm644 -t ${DESTDIR}/etc/init/ contrib/getty.boot contrib/runit.boot @@ -15,6 +26,7 @@ install:  	install -Dm644 README ${DESTDIR}${INITDIR}/README  uninstall: +	rm -f ${DESTDIR}${BINDIR}/shalt  	rm -f ${DESTDIR}/etc/init/rc.conf  	rm -f ${DESTDIR}/etc/init/rc.local  	rm -f ${DESTDIR}/etc/init/getty.boot ${DESTDIR}/etc/init/runit.boot @@ -22,3 +34,6 @@ uninstall:  	rm -f ${DESTDIR}${INITDIR}/rc.shutdown  	rm -f ${DESTDIR}${INITDIR}/rc.lib  	rm -f ${DESTDIR}${INITDIR}/README + + +.PHONY: all clean install uninstall diff --git a/bin/shalt.c b/bin/shalt.c new file mode 100644 index 0000000..924d85d --- /dev/null +++ b/bin/shalt.c @@ -0,0 +1,13 @@ +#include <unistd.h> +#include <sys/reboot.h> + +/* Simple halt utility                                        */ +/* Reboot if the argument is r, Poweroff is the argument is p */ + +int main (int argc, char *argv[]) { +    switch ((int)argv[argc < 2 ? 0 : 1][0] + geteuid()) { +    case 'p': reboot(RB_POWER_OFF); break; +    case 'r': reboot(RB_AUTOBOOT); break; +    default: return 1; +    }; return 0; +} diff --git a/rc.shutdown b/rc.shutdown index a9ca570..848f114 100755 --- a/rc.shutdown +++ b/rc.shutdown @@ -53,3 +53,5 @@ for file in /etc/init/*.post.shutdown ; do  	[ -f "$file" ] && \  		out "Running $file" && . "$file"  done + +case "$1" in reboot) shalt r ;; poweroff) shalt p ;; esac | 
