Introduction
Introduction Statistics Contact Development Disclaimer Help
Remove FIFO from sinit - sinit - suckless init
git clone git://git.suckless.org/sinit
Log
Files
Refs
README
LICENSE
---
commit b8cb53193c0d235cec99d70bb63838f27c3c5fda
parent c381441b7020aaeea599de9a5569e2be8fb147c6
Author: sin <[email protected]>
Date: Fri, 7 Feb 2014 16:15:48 +0000
Remove FIFO from sinit
We can just run /bin/rc.shutdown reboot|poweroff etc.
It complicates things when rootfs is mounted as ro etc.
Diffstat:
M config.def.h | 7 -------
M sinit.c | 62 ++---------------------------…
2 files changed, 3 insertions(+), 66 deletions(-)
---
diff --git a/config.def.h b/config.def.h
@@ -3,10 +3,3 @@
static const char *rcinitcmd[] = { "/bin/rc.init", NULL };
static const char *rcrebootcmd[] = { "/bin/rc.shutdown", "reboot", NULL };
static const char *rcpoweroffcmd[] = { "/bin/rc.shutdown", "poweroff", NULL };
-
-/* if you make this path NULL, then sinit will not use a FIFO */
-static const char *fifopath = "/var/run/sinit.fifo";
-static Command commands[] = {
- { "poweroff", spawn, { .v = rcpoweroffcmd } },
- { "reboot", spawn, { .v = rcrebootcmd } },
-};
diff --git a/sinit.c b/sinit.c
@@ -18,12 +18,6 @@ typedef union {
const void *v;
} Arg;
-typedef struct {
- const char *name;
- void (*func)(const Arg *arg);
- const Arg arg;
-} Command;
-
volatile sig_atomic_t signum;
typedef struct {
@@ -31,20 +25,16 @@ typedef struct {
void (*func)(void);
} Sigmap;
-static void dispatchcmd(int);
-static void sigfifo(void);
static void sigreap(void);
static void sigreboot(void);
static void spawn(const Arg *);
static Sigmap dispatchsig[] = {
- { SIGHUP, sigfifo },
{ SIGCHLD, sigreap },
{ SIGINT, sigreboot },
};
static int sigfd = -1;
-static int fifofd = -1;
#include "config.h"
@@ -53,7 +43,8 @@ main(void)
{
struct signalfd_siginfo siginfo;
sigset_t sigset;
- int maxfd, i, ret;
+ int i;
+ int ret;
ssize_t n;
fd_set rfds;
@@ -75,13 +66,7 @@ main(void)
while (1) {
FD_ZERO(&rfds);
FD_SET(sigfd, &rfds);
- maxfd = sigfd;
- if (fifofd != -1) {
- FD_SET(fifofd, &rfds);
- if (fifofd > maxfd)
- maxfd = fifofd;
- }
- ret = select(maxfd + 1, &rfds, NULL, NULL, NULL);
+ ret = select(sigfd + 1, &rfds, NULL, NULL, NULL);
if (ret < 0)
eprintf("sinit: select:");
if (ret > 0) {
@@ -93,9 +78,6 @@ main(void)
if (dispatchsig[i].sig == siginfo.ssi_…
dispatchsig[i].func();
}
- if (fifofd != -1)
- if (FD_ISSET(fifofd, &rfds))
- dispatchcmd(fifofd);
}
}
@@ -103,44 +85,6 @@ main(void)
}
static void
-dispatchcmd(int fd)
-{
- int i;
- char buf[BUFSIZ], *p;
- ssize_t n;
-
- n = read(fd, buf, sizeof(buf) - 1);
- if (n < 0)
- weprintf("sinit: read:");
- buf[n] = '\0';
- p = strchr(buf, '\n');
- if (p)
- *p = '\0';
- for (i = 0; i < LEN(commands); i++) {
- if (strcmp(commands[i].name, buf) == 0) {
- commands[i].func(&commands[i].arg);
- break;
- }
- }
-}
-
-static void
-sigfifo(void)
-{
- if (!fifopath)
- return;
- if (fifofd != -1)
- close(fifofd);
- unlink(fifopath);
- umask(0);
- if (mkfifo(fifopath, 0600) < 0)
- weprintf("sinit: mkfifo %s:", fifopath);
- fifofd = open(fifopath, O_RDWR | O_NONBLOCK);
- if (fifofd < 0)
- weprintf("sinit: open %s:", fifopath);
-}
-
-static void
sigreap(void)
{
while (waitpid(-1, NULL, WNOHANG) > 0)
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.