coreutils

custom mini coreutils
git clone git://git.evenfri.pw/coreutils.git
Log | Files | Refs | README

commit aeaa7220e510c0204425fa15e010c9d666673a6a
parent 5d466fab83d16dcff3dc41e59e34df4a92a74646
Author: evenfri <evenfri@4plt.ch>
Date:   Mon, 26 Oct 2026 22:58:48 +0800

PATCH: set defines to upper case. FEAT: while 1 for shell proc

Diffstat:
Minit.c | 51++++++++++++++++++++++++++++-----------------------
1 file changed, 28 insertions(+), 23 deletions(-)

diff --git a/init.c b/init.c @@ -1,40 +1,45 @@ #include <libc.h> -#define msg_clear "\033[2J\033[H" - -#define msg_welcome "[init] starting...\n" -#define msg_proc "[init] mouting /proc...\n" -#define msg_sys "[init] mouting /sys...\n" -#define msg_dev "[init] mouting /dev...\n" +#define MSG_CLEAR "\033[2J\033[H" +#define MSG_WELCOME "[init] starting...\n" +#define MSG_PROC "[init] mouting /proc...\n" +#define MSG_SYS "[init] mouting /sys...\n" +#define MSG_DEV "[init] mouting /dev...\n" int main(void) { - write(stdout, msg_clear, strlen(msg_clear)); + write(stdout, MSG_CLEAR, strlen(MSG_CLEAR)); - write(stdout, msg_welcome, strlen(msg_welcome)); + write(stdout, MSG_WELCOME, strlen(MSG_WELCOME)); - write(stdout, msg_proc, strlen(msg_proc)); + write(stdout, MSG_PROC, strlen(MSG_PROC)); mount("proc", "/proc", "proc", 0, NULL); - write(stdout, msg_sys, strlen(msg_sys)); + write(stdout, MSG_SYS, strlen(MSG_SYS)); mount("sysfs", "/sys", "sysfs", 0, NULL); - write(stdout, msg_dev, strlen(msg_dev)); + write(stdout, MSG_DEV, strlen(MSG_DEV)); mount("devtmpfs", "/dev", "devtmpfs", 0, NULL); - int pid = fork(); - if (pid == 0) { - char *argv[] = { "/bin/sh", NULL }; - char *envp[] = { "PATH=/bin:/sbin", NULL }; - - execve("/bin/sh", argv, envp); - - write(stderr, "[init] Failed to exec /bin/sh!\n", 31); - exit(1); - } - while (1) { + int pid = fork(); + if (pid < 0) { + sleep(1); + continue; + } + + if (pid == 0) { + char *argv[] = { "/bin/sh", NULL }; + char *envp[] = { "PATH=/bin:/sbin", NULL }; + + execve("/bin/sh", argv, envp); + const char msg[] = "[init] Failed to exec /bin/sh!\n"; + write(stderr, msg, sizeof(msg) - 1); + _exit(1); + } + int status; - waitpid(-1, &status, 0); + waitpid(pid, &status, 0); } + return 0; }