On Fri, Nov 4, 2011 at 12:41 PM, Natanael Copa <[email protected]> wrote: > Displays a message that an account is not available and > exits non-zero. It is intended as a replacement shell field > for accounts that have been disabled. > > If the file /etc/nologin.txt exists, displays its contents > to the user instead of the default message. > > login_main - 108 +108 > .rodata 101552 101625 +73 > packed_usage 23057 23072 +15 > applet_names 1882 1890 +8 > applet_main 1140 1144 +4 > bbconfig_config_bz2 5214 5217 +3 > applet_nameofs 570 572 +2 > ------------------------------------------------------------------------------ > (add/remove: 2/0 grow/shrink: 6/0 up/down: 213/0) Total: 213 bytes > text data bss dec hex filename > 888199 6311 4712 899222 db896 busybox_old > 888436 6315 4712 899463 db987 busybox_unstripped > > Signed-off-by: Natanael Copa <[email protected]> > --- > loginutils/nologin.c | 41 +++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 41 insertions(+), 0 deletions(-) > create mode 100644 loginutils/nologin.c > > diff --git a/loginutils/nologin.c b/loginutils/nologin.c > new file mode 100644 > index 0000000..521538e > --- /dev/null > +++ b/loginutils/nologin.c > @@ -0,0 +1,41 @@ > +/* vi: set sw=4 ts=4: */ > +/* > + * nologin implementation for busybox > + * > + * Licensed under GPLv2 or later, see file LICENSE in this source tree. > + */ > + > +//config:config NOLOGIN > +//config: bool "nologin" > +//config: default n > +//config: help > +//config: displays a message that an account is not available and > +//config: exits non-zero. It is intended as a replacement shell field > +//config: for accounts that have been disabled. > +//config: > +//config: If the file /etc/nologin.txt exists, displays its contents > +//config: to the user instead of the default message. > + > +//applet:IF_NOLOGIN(APPLET(nologin, BB_DIR_SBIN, BB_SUID_DROP)) > +//kbuild:lib-$(CONFIG_NOLOGIN) += nologin.o > + > +//usage:#define nologin_trivial_usage > +//usage: "" > +//usage:#define nologin_full_usage "\n\n" > +//usage: "politely refuse a login\n" > + > +#include "libbb.h" > +#include <syslog.h> > + > +int nologin_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; > +int nologin_main(int argc UNUSED_PARAM, char **argv) > +{ > + int fd; > + fd = open("/etc/nologin.txt", O_RDONLY); > + if (bb_copyfd_eof(fd, STDOUT_FILENO) == -1) > + bb_error_msg_and_die("this account is not available"); > + if (ENABLE_FEATURE_CLEAN_UP) > + close(fd); > + return 1; > +}
Looks like it can be implemented as shell script in fewer bytes. -- vda _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
