login: fix /etc/nologin support
authorDenis Vlasenko <vda.linux@googlemail.com>
Fri, 7 Nov 2008 01:12:16 +0000 (01:12 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Fri, 7 Nov 2008 01:12:16 +0000 (01:12 -0000)
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
mailutils/Config.in

index 8732b99f1e2b3c28404f7871bb2198f894ffb6cd..861382f12159f8877ba7a7c1b1b827f33ae778d6 100644 (file)
@@ -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
index b8d69773731a4bc1281c4f5ea3d70873f69ee4e9..4edb0aefddaa3d9357a95b05c3eebdfcc2be3139 100644 (file)
@@ -17,15 +17,18 @@ config POPMAILDIR
        bool "popmaildir"
        default n
        help
-         Simple yet powerful POP3 mail popper. Delivers content of remote mailboxes to local Maildir.
+         Simple yet powerful POP3 mail popper. Delivers content
+         of remote mailboxes to local Maildir.
 
 config FEATURE_POPMAILDIR_DELIVERY
        bool "Allow message filters and custom delivery program"
        default n
        depends on POPMAILDIR
        help
-         Allow to use a custom program to filter the content of the message before actual delivery (-F "prog [args...]").
-         Allow to use a custom program for message actual delivery (-M "prog [args...]").
+         Allow to use a custom program to filter the content
+         of the message before actual delivery (-F "prog [args...]").
+         Allow to use a custom program for message actual delivery
+         (-M "prog [args...]").
 
 config REFORMIME
        bool "reformime"
@@ -38,7 +41,8 @@ config FEATURE_REFORMIME_COMPAT
        default y
        depends on REFORMIME
        help
-         Accept (for compatibility only) and ignore options other than -x and -X.
+         Accept (for compatibility only) and ignore options
+         other than -x and -X.
 
 config SENDMAIL
        bool "sendmail"
@@ -59,6 +63,7 @@ config FEATURE_SENDMAIL_MAILXX
        default n
        depends on FEATURE_SENDMAIL_MAILX
        help
-         Allow to specify Cc: addresses and some additional headers: Errors-To:.
+         Allow to specify Cc: addresses and some additional headers:
+         Errors-To:
 
 endmenu