about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2021-12-24 08:26:31 +0000
committerLaurent Bercot <ska@appnovation.com>2021-12-24 08:26:31 +0000
commit3962885e117e92a9b01d3a9d45895602115e725f (patch)
tree35e1ddf57d6ffce186be45b2e40c3f1fd9a649c7
parente1614d5b8c1d2717c28c8a4d8c60ca293c8f4662 (diff)
downloads6-3962885e117e92a9b01d3a9d45895602115e725f.tar.gz
s6-3962885e117e92a9b01d3a9d45895602115e725f.tar.xz
s6-3962885e117e92a9b01d3a9d45895602115e725f.zip
s6-log: clarify last_stdin logic
Signed-off-by: Laurent Bercot <ska@appnovation.com>
-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 ;