diff --git a/Makefile.am b/Makefile.am index c3d5869..8077cac 100644 --- a/Makefile.am +++ b/Makefile.am @@ -11,7 +11,7 @@ if HOST_LINUX login_SOURCES += os/linux.c endif -login_SOURCES += login.c +login_SOURCES += login.c motd.c login_SOURCES += compat/explicit_bzero.c login_SOURCES += compat/timingsafe_memcmp.c diff --git a/login.c b/login.c index 8e9691b..533ce67 100644 --- a/login.c +++ b/login.c @@ -19,6 +19,7 @@ #endif #include "login.h" +#include "motd.h" #include "os/os.h" static bool do_login(struct passwd* pwd, int pflag) @@ -104,6 +105,8 @@ static bool do_login(struct passwd* pwd, int pflag) (void)signal(SIGQUIT, SIG_DFL); (void)signal(SIGINT, SIG_DFL); + motd(); + execve( pwd->pw_shell, (char *[]){pwd->pw_shell,"-l",0}, diff --git a/motd.c b/motd.c new file mode 100644 index 0000000..56c5197 --- /dev/null +++ b/motd.c @@ -0,0 +1,16 @@ +#include +#include + +void motd(void) +{ + int fd, size; + char buf[8192]; + + if((fd = open("/etc/motd", O_RDONLY, 0)) == -1) + return; + + while((size = read(fd, buf, sizeof(buf))) > 0) + write(STDOUT_FILENO, buf, size); + + close(fd); +} diff --git a/motd.h b/motd.h new file mode 100644 index 0000000..197ef59 --- /dev/null +++ b/motd.h @@ -0,0 +1 @@ +void motd(void);