From 694b514148681193e1710daa073f5bc1263b0d95 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Fri, 7 Nov 2008 01:12:16 +0000 Subject: login: fix /etc/nologin support build system: fix config warnings ("Overlong line") function old new delta login_main 1735 1774 +39 __libc_tcdrain - 23 +23 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 1/0 up/down: 62/0) Total: 62 bytes --- loginutils/login.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'loginutils/login.c') diff --git a/loginutils/login.c b/loginutils/login.c index 8732b99f1..861382f12 100644 --- a/loginutils/login.c +++ b/loginutils/login.c @@ -118,18 +118,25 @@ static void die_if_nologin(void) { FILE *fp; int c; + int empty = 1; - if (access("/etc/nologin", F_OK)) + fp = fopen_for_read("/etc/nologin"); + if (!fp) /* assuming it does not exist */ return; - fp = fopen_for_read("/etc/nologin"); - if (fp) { - while ((c = getc(fp)) != EOF) - bb_putchar((c=='\n') ? '\r' : c); - fflush(stdout); - fclose(fp); - } else + while ((c = getc(fp)) != EOF) { + if (c == '\n') + bb_putchar('\r'); + bb_putchar(c); + empty = 0; + } + if (empty) puts("\r\nSystem closed for routine maintenance\r"); + + fclose(fp); + fflush(NULL); + /* Users say that they do need this prior to exit: */ + tcdrain(STDOUT_FILENO); exit(EXIT_FAILURE); } #else -- cgit v1.2.3