Don't rely on the contents of stderr of shell commands.
authorBruno Haible <bruno@clisp.org>
Tue, 11 Nov 2008 01:28:25 +0000 (02:28 +0100)
committerBruno Haible <bruno@clisp.org>
Tue, 11 Nov 2008 01:28:25 +0000 (02:28 +0100)
ChangeLog
tests/test-select-fd.c
tests/test-select-in.sh
tests/test-select-out.sh

index 1105e8441a3da95aca8b077f9f265247ebd446a6..4a57aa3bb6b3a6c9dbcc0416e36a2ec1f4bccc1e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-11-10  Bruno Haible  <bruno@clisp.org>
+
+       * tests/test-select-fd.c (main): Accept the result file name as fourth
+       argument.
+       * tests/test-select-in.sh: Pass t-select-in.tmp as fourth argument.
+       * tests/test-select-out.sh: Pass t-select-out.tmp as fourth argument.
+
 2008-11-10  Bruno Haible  <bruno@clisp.org>
 
        * lib/netdb.in.h: Use HAVE_STRUCT_ADDRINFO, HAVE_DECL_GETADDRINFO,
index d362170a87ac5aa32d8d665ebbfded8ec84cb5ef..ddd2013de0af00010779895f711b86812899a590 100644 (file)
@@ -25,7 +25,7 @@
 int
 main (int argc, char *argv[])
 {
-  if (argc == 3)
+  if (argc == 4)
     {
       char mode = argv[1][0];
 
@@ -35,32 +35,38 @@ main (int argc, char *argv[])
 
          if (fd >= 0)
            {
-             fd_set fds;
-             struct timeval timeout;
-             int ret;
+             const char *result_file_name = argv[3];
+             FILE *result_file = fopen (result_file_name, "wb");
 
-             FD_ZERO (&fds);
-             FD_SET (fd, &fds);
-             timeout.tv_sec = 0;
-             timeout.tv_usec = 10000;
-             ret = (mode == 'r'
-                    ? select (fd + 1, &fds, NULL, NULL, &timeout)
-                    : select (fd + 1, NULL, &fds, NULL, &timeout));
-             if (ret < 0)
+             if (result_file != NULL)
                {
-                 perror ("select failed");
-                 exit (1);
-               }
-             if ((ret == 0) != ! FD_ISSET (fd, &fds))
-               {
-                 fprintf (stderr, "incorrect return value\n");
-                 exit (1);
+                 fd_set fds;
+                 struct timeval timeout;
+                 int ret;
+
+                 FD_ZERO (&fds);
+                 FD_SET (fd, &fds);
+                 timeout.tv_sec = 0;
+                 timeout.tv_usec = 10000;
+                 ret = (mode == 'r'
+                        ? select (fd + 1, &fds, NULL, NULL, &timeout)
+                        : select (fd + 1, NULL, &fds, NULL, &timeout));
+                 if (ret < 0)
+                   {
+                     perror ("select failed");
+                     exit (1);
+                   }
+                 if ((ret == 0) != ! FD_ISSET (fd, &fds))
+                   {
+                     fprintf (stderr, "incorrect return value\n");
+                     exit (1);
+                   }
+                 fprintf (result_file, "%d\n", ret);
+                 exit (0);
                }
-             fprintf (stderr, "%d\n", ret);
-             exit (0);
            }
        }
     }
-  fprintf (stderr, "Usage: test-select-fd mode fd\n");
+  fprintf (stderr, "Usage: test-select-fd mode fd result-file-name\n");
   exit (1);
 }
index b93fee9a04802b28e8bee2a22f7db5bf70fa685a..8fd9d9c45c8515a4e413c2375a91de55c5e93b9b 100755 (executable)
@@ -8,20 +8,24 @@ tmpfiles="$tmpfiles t-select-in.tmp"
 
 # Regular files.
 
-./test-select-fd${EXEEXT} r 0 < ./test-select-fd${EXEEXT} 2> t-select-in.tmp
+rm -f t-select-in.tmp
+./test-select-fd${EXEEXT} r 0 t-select-in.tmp < ./test-select-fd${EXEEXT}
 test `cat t-select-in.tmp` = "1" || exit 1
 
 # Pipes.
 
-{ sleep 1; echo abc; } | ./test-select-fd${EXEEXT} r 0 2> t-select-in.tmp
+rm -f t-select-in.tmp
+{ sleep 1; echo abc; } | ./test-select-fd${EXEEXT} r 0 t-select-in.tmp
 test `cat t-select-in.tmp` = "0" || exit 1
 
-echo abc | { sleep 1; ./test-select-fd${EXEEXT} r 0; } 2> t-select-in.tmp
+rm -f t-select-in.tmp
+echo abc | { sleep 1; ./test-select-fd${EXEEXT} r 0 t-select-in.tmp; }
 test `cat t-select-in.tmp` = "1" || exit 1
 
 # Special files.
 
-./test-select-fd${EXEEXT} r 0 < /dev/null 2> t-select-in.tmp
+rm -f t-select-in.tmp
+./test-select-fd${EXEEXT} r 0 t-select-in.tmp < /dev/null
 test `cat t-select-in.tmp` = "1" || exit 1
 
 rm -fr $tmpfiles
index f83beeb1f580aeac3db2c2f3690fde4e9ad8027c..556aae7b45f65cb786e19f87d39701f81981de5a 100755 (executable)
@@ -8,20 +8,24 @@ tmpfiles="$tmpfiles t-select-out.out t-select-out.tmp"
 
 # Regular files.
 
-./test-select-fd${EXEEXT} w 1 > t-select-out.out 2> t-select-out.tmp
+rm -f t-select-out.tmp
+./test-select-fd${EXEEXT} w 1 t-select-out.tmp > t-select-out.out
 test `cat t-select-out.tmp` = "1" || exit 1
 
 # Pipes.
 
-( { echo abc; ./test-select-fd${EXEEXT} w 1; } | { sleep 1; cat; } ) > /dev/null 2> t-select-out.tmp
+rm -f t-select-out.tmp
+( { echo abc; ./test-select-fd${EXEEXT} w 1 t-select-out.tmp; } | { sleep 1; cat; } ) > /dev/null
 test `cat t-select-out.tmp` = "0" || exit 1
 
-( { sleep 1; echo abc; ./test-select-fd${EXEEXT} w 1; } | cat) > /dev/null 2> t-select-out.tmp
+rm -f t-select-out.tmp
+( { sleep 1; echo abc; ./test-select-fd${EXEEXT} w 1 t-select-out.tmp; } | cat) > /dev/null
 test `cat t-select-out.tmp` = "1" || exit 1
 
 # Special files.
 
-./test-select-fd${EXEEXT} w 1 > /dev/null 2> t-select-out.tmp
+rm -f t-select-out.tmp
+./test-select-fd${EXEEXT} w 1 t-select-out.tmp > /dev/null
 test `cat t-select-out.tmp` = "1" || exit 1
 
 rm -fr $tmpfiles