about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/daemontools-extras/s6-log.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/daemontools-extras/s6-log.c b/src/daemontools-extras/s6-log.c
index 92e3886..60de6b3 100644
--- a/src/daemontools-extras/s6-log.c
+++ b/src/daemontools-extras/s6-log.c
@@ -1058,23 +1058,15 @@ static void normal_stdin (scriptelem_t const *script, unsigned int scriptlen, si
 
 static void last_stdin (scriptelem_t const *script, unsigned int scriptlen, size_t linelimit, unsigned int gflags)
 {
-  int cont = 1 ;
-  while (cont)
+  for (;;)
   {
     char c ;
     switch (sanitize_read(fd_read(0, &c, 1)))
     {
-      case 0 :
-        cont = 0 ;
-        break ;
+      case 0 : return ;
       case -1 :
         if ((errno != EPIPE) && verbosity) strerr_warnwu1sys("read from stdin") ;
-        if (!indata.len)
-        {
-          prepare_to_exit() ;
-          cont = 0 ;
-          break ;
-        }
+        if (!indata.len) goto eof ;
  addfinalnewline:
         c = '\n' ;
       case 1 :
@@ -1082,8 +1074,7 @@ static void last_stdin (scriptelem_t const *script, unsigned int scriptlen, size
         if (c == '\n')
         {
           script_run(script, scriptlen, indata.s, indata.len - 1, gflags) ;
-          prepare_to_exit() ;
-          cont = 0 ;
+          goto eof ;
         }
         else if (linelimit && indata.len > linelimit)
         {
@@ -1093,6 +1084,8 @@ static void last_stdin (scriptelem_t const *script, unsigned int scriptlen, size
         break ;
     }
   }
+ eof:
+  prepare_to_exit() ;
 }
 
 static inputproc_func_ref handle_stdin = &normal_stdin ;