diff --git a/.gitignore b/.gitignore index bf6dcb5..20bfbf6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ kernel-hdr build progs/rsh +progs/rc diff --git a/etc/inittab b/etc/inittab new file mode 100644 index 0000000..90659da --- /dev/null +++ b/etc/inittab @@ -0,0 +1,3 @@ +# Runlevels: 1 + +l0:1:once:/bin/login diff --git a/progs/base/bin/ucat.c b/progs/base/bin/ucat.c new file mode 100644 index 0000000..aaef2c0 --- /dev/null +++ b/progs/base/bin/ucat.c @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include + +int main(int argc, char **argv) { + struct sockaddr_un un; + ssize_t rd; + int fd; + char buf[1024]; + + if (argc != 2) { + fprintf(stderr, "usage: %s SOCKET\n", argv[0]); + return -1; + } + + un.sun_family = AF_UNIX; + strcpy(un.sun_path, argv[1]); + + if ((fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) { + perror("socket()"); + return -1; + } + + if (connect(fd, (struct sockaddr *) &un, sizeof(un)) != 0) { + perror("connect()"); + return -1; + } + + while ((rd = recv(fd, buf, sizeof(buf), 0)) > 0) { + write(STDOUT_FILENO, buf, rd); + } + + close(fd); + + return 0; +}