From ea1ea21af5153ef84ac00dee8a1eaa54662b0aa2 Mon Sep 17 00:00:00 2001
From: Mark Mitchell <mark@codesourcery.com>
Date: Mon, 12 Jan 2004 08:11:08 +0000
Subject: [PATCH] testsuite_hooks.h (__gnu_test::try_mkfifo): Declare it.

	* testsuite/testsuite_hooks.h (__gnu_test::try_mkfifo): Declare it.
	* testsuite/testsuite_hooks.cc (__gnu_test::try_mkfifo): Define
	it.
	* testsuite/27_io/basic_filebuf/close/char/4879.cc: Use try_mkfifo
	and remove Cygwin XFAIL.
	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Likewise.
	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc:
	Likewise.
	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
	* testsuite/27_io/objects/char/7.cc: Likewise.
	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
	* testsuite/27_io/objects/wchar_t/7.cc: Likewise.
	* testsuite/27_io/objects/wchar_t/9661-1.cc: Likewise.

From-SVN: r75706
---
 libstdc++-v3/ChangeLog                         | 18 ++++++++++++++++++
 .../27_io/basic_filebuf/close/char/4879.cc     |  7 +++----
 .../27_io/basic_filebuf/close/char/9964.cc     |  6 ++----
 .../27_io/basic_filebuf/imbue/char/13171-2.cc  |  3 ++-
 .../27_io/basic_filebuf/open/char/9507.cc      |  6 ++----
 .../basic_filebuf/showmanyc/char/9533-1.cc     |  6 ++----
 .../basic_filebuf/underflow/char/10097.cc      |  6 ++----
 libstdc++-v3/testsuite/27_io/objects/char/7.cc |  6 ++----
 .../testsuite/27_io/objects/char/9661-1.cc     |  6 ++----
 .../testsuite/27_io/objects/wchar_t/7.cc       |  3 ++-
 .../testsuite/27_io/objects/wchar_t/9661-1.cc  |  3 ++-
 libstdc++-v3/testsuite/testsuite_hooks.cc      | 11 +++++++++++
 libstdc++-v3/testsuite/testsuite_hooks.h       |  5 +++++
 13 files changed, 55 insertions(+), 31 deletions(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 982288702061..e59eb5afd011 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,21 @@
+2004-01-12  Mark Mitchell  <mark@codesourcery.com>
+
+	* testsuite/testsuite_hooks.h (__gnu_test::try_mkfifo): Declare it.
+	* testsuite/testsuite_hooks.cc (__gnu_test::try_mkfifo): Define
+	it.
+	* testsuite/27_io/basic_filebuf/close/char/4879.cc: Use try_mkfifo
+	and remove Cygwin XFAIL.
+	* testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/open/char/9507.cc: Likewise.
+	* testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc:
+	Likewise.
+	* testsuite/27_io/basic_filebuf/underflow/char/10097.cc: Likewise.
+	* testsuite/27_io/objects/char/7.cc: Likewise.
+	* testsuite/27_io/objects/char/9661-1.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/7.cc: Likewise.
+	* testsuite/27_io/objects/wchar_t/9661-1.cc: Likewise.
+
 2004-01-11  Gabriel Dos Reis  <gdr@integrable-solutions.net>
 
 	* include/std/std_complex.h (std::complex<>::real): Return a
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc
index 90107cd72a90..bd585443be1b 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc
@@ -23,9 +23,6 @@
 // various tests for filebuf::open() and filebuf::close() including
 // the non-portable functionality in the libstdc++-v3 IO library
 
-// XXX cygwin does not support mkfifo
-// { dg-do run { xfail *-*-cygwin* } }
-
 #include <fstream>
 #include <iostream>
 #include <unistd.h>
@@ -40,12 +37,14 @@
 void
 test_04()
 {
+  using namespace __gnu_test;
+
   bool test __attribute__((unused)) = true;
   const char* name = "tmp_fifo1";
   signal(SIGPIPE, SIG_IGN);
   
   unlink(name);
-  if (0 != mkfifo(name, S_IRWXU))
+  if (0 != try_mkfifo(name, S_IRWXU))
     {
       std::cerr << "failed to create fifo" << std::endl;
       exit(-1);
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
index 895c0956e234..d51a5b1167bb 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
@@ -23,9 +23,6 @@
 // various tests for filebuf::open() and filebuf::close() including
 // the non-portable functionality in the libstdc++-v3 IO library
 
-// XXX cygwin does not support mkfifo
-// { dg-do run { xfail *-*-cygwin* } }
-
 #include <fstream>
 #include <unistd.h>
 #include <signal.h>
@@ -38,6 +35,7 @@
 void test_07()
 {
   using namespace std;
+  using namespace __gnu_test;
   bool test __attribute__((unused)) = true;
 
   const char* name = "tmp_fifo3";
@@ -45,7 +43,7 @@ void test_07()
   signal(SIGPIPE, SIG_IGN);
 
   unlink(name);  
-  mkfifo(name, S_IRWXU);
+  try_mkfifo(name, S_IRWXU);
   
   int child = fork();
   VERIFY( child != -1 );
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc
index 74aa1fc0dfa6..367017a3bfef 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc
@@ -31,13 +31,14 @@ void test01()
 {
   bool test __attribute__((unused)) = true;
   using namespace std;
+  using namespace __gnu_test;
 
   locale loc_fr(__gnu_test::try_named_locale("fr_FR"));
   locale loc_en(__gnu_test::try_named_locale("en_US"));
 
   const char* name = "tmp_fifo_13171-2";
   unlink(name);
-  mkfifo(name, S_IRWXU);
+  try_mkfifo(name, S_IRWXU);
   
   int child = fork();
   if (child == 0)
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
index 85eeededdd21..601e570ae25e 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
@@ -23,9 +23,6 @@
 // various tests for filebuf::open() and filebuf::close() including
 // the non-portable functionality in the libstdc++-v3 IO library
 
-// XXX cygwin does not support mkfifo
-// { dg-do run { xfail *-*-cygwin* } }
-
 #include <fstream>
 #include <unistd.h>
 #include <signal.h>
@@ -37,13 +34,14 @@
 // libstdc++/9507
 void test_06()
 {
+  using namespace __gnu_test;
   bool test __attribute__((unused)) = true;
   const char* name = "tmp_fifo2";
 
   signal(SIGPIPE, SIG_IGN);
 
   unlink(name);
-  mkfifo(name, S_IRWXU);
+  try_mkfifo(name, S_IRWXU);
 	
   if (!fork())
     {
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
index 057f72de32cf..2839e2f722c8 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
@@ -18,9 +18,6 @@
 
 // 27.8.1.4 Overridden virtual functions
 
-// XXX cygwin does not support mkfifo
-// { dg-do run { xfail *-*-cygwin* } }
-
 #include <unistd.h>
 #include <signal.h>
 #include <fcntl.h>
@@ -33,6 +30,7 @@
 void test_01()
 {
   using namespace std;
+  using namespace __gnu_test;
   bool test __attribute__((unused)) = true;
   const char* name = "tmp_fifo1";
 
@@ -41,7 +39,7 @@ void test_01()
   signal(SIGPIPE, SIG_IGN);
   unlink(name);
   
-  if (0 != mkfifo(name, S_IRWXU))
+  if (0 != try_mkfifo(name, S_IRWXU))
     {
       VERIFY( false );
     }
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
index 156421092dd0..c3c3cf19048e 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
@@ -20,9 +20,6 @@
 
 // 27.8.1.4 Overridden virtual functions
 
-// XXX cygwin does not support mkfifo
-// { dg-do run { xfail *-*-cygwin* } }
-
 #include <fstream>
 #include <unistd.h>
 #include <signal.h>
@@ -48,6 +45,7 @@ public:
 void test16()
 {
   using namespace std;
+  using namespace __gnu_test;
   bool test __attribute__((unused)) = true;
 
   const char* name = "tmp_fifo1";
@@ -55,7 +53,7 @@ void test16()
   signal(SIGPIPE, SIG_IGN);
   unlink(name);
   
-  if (0 != mkfifo(name, S_IRWXU))
+  if (0 != try_mkfifo(name, S_IRWXU))
     {
       VERIFY( false );
     }
diff --git a/libstdc++-v3/testsuite/27_io/objects/char/7.cc b/libstdc++-v3/testsuite/27_io/objects/char/7.cc
index 21a7b49c4796..06983d9fb7a7 100644
--- a/libstdc++-v3/testsuite/27_io/objects/char/7.cc
+++ b/libstdc++-v3/testsuite/27_io/objects/char/7.cc
@@ -20,9 +20,6 @@
 
 // 27.3 Standard iostream objects
 
-// XXX cygwin does not support mkfifo
-// { dg-do run { xfail *-*-cygwin* } }
-
 #include <fstream>
 #include <iostream>
 #include <unistd.h>
@@ -36,6 +33,7 @@
 void test07()
 {
   using namespace std;
+  using namespace __gnu_test;
   bool test __attribute__((unused)) = true;
 
   const char* name = "tmp_fifo4";
@@ -43,7 +41,7 @@ void test07()
   signal(SIGPIPE, SIG_IGN);
 
   unlink(name);  
-  mkfifo(name, S_IRWXU);
+  try_mkfifo(name, S_IRWXU);
   
   int child = fork();
   VERIFY( child != -1 );
diff --git a/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc b/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
index 61855064277b..5b1780e1f0d8 100644
--- a/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
+++ b/libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
@@ -18,9 +18,6 @@
 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 // USA.
 
-// XXX cygwin does not support mkfifo
-// { dg-do run { xfail *-*-cygwin* } }
-
 #include <testsuite_hooks.h>
 #include <cstdio>
 #include <iostream>
@@ -36,6 +33,7 @@
 void test01()
 {
   using namespace std;
+  using namespace __gnu_test;
 
   bool test __attribute__((unused)) = true;
 
@@ -44,7 +42,7 @@ void test01()
   signal(SIGPIPE, SIG_IGN);
 
   unlink(name);  
-  mkfifo(name, S_IRWXU);
+  try_mkfifo(name, S_IRWXU);
   
   int child = fork();
   VERIFY( child != -1 );
diff --git a/libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc b/libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc
index 004687af01f9..a1c97670038a 100644
--- a/libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc
+++ b/libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc
@@ -33,6 +33,7 @@
 void test07()
 {
   using namespace std;
+  using namespace __gnu_test;
   bool test __attribute__((unused)) = true;
 
   const char* name = "tmp_fifo4";
@@ -40,7 +41,7 @@ void test07()
   signal(SIGPIPE, SIG_IGN);
 
   unlink(name);  
-  mkfifo(name, S_IRWXU);
+  try_mkfifo(name, S_IRWXU);
   
   int child = fork();
   VERIFY( child != -1 );
diff --git a/libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc b/libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc
index 9c9d082546d5..38b832049b87 100644
--- a/libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc
+++ b/libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc
@@ -33,6 +33,7 @@
 void test01()
 {
   using namespace std;
+  using namespace __gnu_test;
 
   bool test __attribute__((unused)) = true;
 
@@ -41,7 +42,7 @@ void test01()
   signal(SIGPIPE, SIG_IGN);
 
   unlink(name);  
-  mkfifo(name, S_IRWXU);
+  try_mkfifo(name, S_IRWXU);
   
   int child = fork();
   VERIFY( child != -1 );
diff --git a/libstdc++-v3/testsuite/testsuite_hooks.cc b/libstdc++-v3/testsuite/testsuite_hooks.cc
index 2f4add63f433..21c0c0c77e70 100644
--- a/libstdc++-v3/testsuite/testsuite_hooks.cc
+++ b/libstdc++-v3/testsuite/testsuite_hooks.cc
@@ -208,6 +208,17 @@ namespace __gnu_test
       }
   }
 
+  int
+  try_mkfifo (const char* filename, mode_t mode)
+  {
+#ifdef _NEWLIB_VERSION
+    /* Newlib does not have mkfifo.  */
+    exit(0);
+#else
+    return mkfifo(filename, mode);
+#endif
+  }
+
   counter::size_type  counter::count = 0;
   unsigned int copy_constructor::count_ = 0;
   unsigned int copy_constructor::throw_on_ = 0;
diff --git a/libstdc++-v3/testsuite/testsuite_hooks.h b/libstdc++-v3/testsuite/testsuite_hooks.h
index d3755c66f6e1..efe0f85eaa10 100644
--- a/libstdc++-v3/testsuite/testsuite_hooks.h
+++ b/libstdc++-v3/testsuite/testsuite_hooks.h
@@ -63,6 +63,9 @@
 #include <cstddef>
 #include <locale>
 #include <ext/pod_char_traits.h>
+#ifdef _GLIBCXX_HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
 
 #ifdef _GLIBCXX_ASSERT
 # include <cassert>
@@ -141,6 +144,8 @@ namespace __gnu_test
   std::locale
   try_named_locale(const char* name);
 
+  int
+  try_mkfifo (const char* filename, mode_t mode);
 
   // Test data types.
   struct pod_char
-- 
GitLab