bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: porting stdioext to HP-NonStop


From: Bruno Haible
Subject: Re: porting stdioext to HP-NonStop
Date: Wed, 22 Dec 2010 17:58:57 +0100
User-agent: KMail/1.9.9

Hello Joachim,

> $ ./stdioext-flags
> #define _IOERR 0x40                    
> #define _IOREAD 0x80
> #define _IOWRT 0x4
> #define _IORW 0x100
> #define _IORW 0x100
> 
> Very nice.
> 
> Downloaded, unpacked, modified gllib/stdio-impl.h as per above, configured,
> compiled, checked, all 33 tests passed! 

Perfect! This was easier than I thought.

I'm checking in the patch below.

> I once tried, but failed, can you give me a full testdir with all gnulib 
> features to run and check?

The one with all gnulib features is pretty big. A better next step is
a testdir with only the POSIX replacements part of gnulib. I created
one through

  $ ./gnulib-tool --create-testdir --dir=/tmp/testdir-posix \
                  --with-tests --with-c++-tests \
                  `./posix-modules`

and uploaded it to
  http://www.haible.de/bruno/gnu/testdir-posix.tar.gz

> So that we can get this 'strange' platform sorted once and forever?

Well, the POSIX replacements part of gnulib is constantly growing:
We tackle more and more functions, add more checks to the unit tests
and find more platform bugs. So, if one platform passes all tests
today, there may be again five test failures in 6 months.


2010-12-22  Bruno Haible  <address@hidden>

        Port extended stdio modules to HP NonStop Kernel.
        * lib/stdio-impl.h (_IOERR, _IOREAD, _IOWRT, _IORW) [__TANDEM]: New
        macros.
        * lib/fbufmode.c: Update comments.
        * lib/fflush.c: Likewise.
        * lib/fpurge.c: Likewise.
        * lib/freadable.c: Likewise.
        * lib/freadahead.c: Likewise.
        * lib/freading.c: Likewise.
        * lib/freadptr.c: Likewise.
        * lib/freadseek.c: Likewise.
        * lib/fseeko.c: Likewise.
        * lib/fseterr.c: Likewise.
        * lib/fwritable.c: Likewise.
        * lib/fwriting.c: Likewise.
        Reported by Joachim Schmitz <address@hidden>.

--- lib/stdio-impl.h.orig       Wed Dec 22 17:33:17 2010
+++ lib/stdio-impl.h    Wed Dec 22 17:32:54 2010
@@ -75,6 +75,17 @@
 
 /* SystemV derived implementations.  */
 
+#ifdef __TANDEM                     /* NonStop Kernel */
+# ifndef _IOERR
+/* These values were determined by the program 'stdioext-flags' at
+   <http://lists.gnu.org/archive/html/bug-gnulib/2010-12/msg00165.html>.  */
+#  define _IOERR   0x40
+#  define _IOREAD  0x80
+#  define _IOWRT    0x4
+#  define _IORW   0x100
+# endif
+#endif
+
 #if defined _IOERR
 
 # if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */
--- lib/fbufmode.c.orig Wed Dec 22 17:33:16 2010
+++ lib/fbufmode.c      Wed Dec 22 12:44:24 2010
@@ -50,7 +50,7 @@
   return _IOFBF;
 #elif defined __EMX__               /* emx+gcc */
   return fp->_flags & (_IOLBF | _IONBF | _IOFBF);
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
 # if HAVE___FLBF                    /* Solaris >= 7 */
   if (__flbf (fp))
     return _IOLBF;
--- lib/fflush.c.orig   Wed Dec 22 17:33:16 2010
+++ lib/fflush.c        Wed Dec 22 12:23:58 2010
@@ -60,7 +60,7 @@
       fp->_ungetc_count = 0;
       fp->_rcount = - fp->_rcount;
     }
-# elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+# elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
   /* Nothing to do.  */
 # else                              /* other implementations */
   fseeko (fp, 0, SEEK_CUR);
--- lib/fpurge.c.orig   Wed Dec 22 17:33:16 2010
+++ lib/fpurge.c        Wed Dec 22 12:24:10 2010
@@ -91,7 +91,7 @@
   fp->_wcount = 0;
   fp->_ungetc_count = 0;
   return 0;
-# elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+# elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
   fp->_ptr = fp->_base;
   if (fp->_ptr != NULL)
     fp->_cnt = 0;
--- lib/freadable.c.orig        Wed Dec 22 17:33:16 2010
+++ lib/freadable.c     Wed Dec 22 12:24:21 2010
@@ -33,7 +33,7 @@
   return (fp_->_flags & (__SRW | __SRD)) != 0;
 #elif defined __EMX__               /* emx+gcc */
   return (fp->_flags & (_IORW | _IOREAD)) != 0;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
   return (fp->_flag & (_IORW | _IOREAD)) != 0;
 #elif defined __QNX__               /* QNX */
   return (fp->_Mode & 0x1 /* _MOPENR */) != 0;
--- lib/freadahead.c.orig       Wed Dec 22 17:33:16 2010
+++ lib/freadahead.c    Wed Dec 22 12:24:36 2010
@@ -48,7 +48,7 @@
   /* equivalent to
      (fp->_ungetc_count == 0 ? fp->_rcount : fp->_ungetc_count - fp->_rcount) 
*/
   return (fp->_rcount > 0 ? fp->_rcount : fp->_ungetc_count - fp->_rcount);
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
   if ((fp_->_flag & _IOWRT) != 0)
     return 0;
   return fp_->_cnt;
--- lib/freading.c.orig Wed Dec 22 17:33:16 2010
+++ lib/freading.c      Wed Dec 22 12:24:45 2010
@@ -39,7 +39,7 @@
   return (fp_->_flags & __SRD) != 0;
 #elif defined __EMX__               /* emx+gcc */
   return (fp->_flags & _IOREAD) != 0;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
 # if defined __sun                  /* Solaris */
   return (fp->_flag & _IOREAD) != 0 && (fp->_flag & _IOWRT) == 0;
 # else
--- lib/freadptr.c.orig Wed Dec 22 17:33:16 2010
+++ lib/freadptr.c      Wed Dec 22 12:24:55 2010
@@ -56,7 +56,7 @@
     abort ();
   *sizep = fp->_rcount;
   return fp->_ptr;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
   if ((fp_->_flag & _IOWRT) != 0)
     return NULL;
   size = fp_->_cnt;
--- lib/freadseek.c.orig        Wed Dec 22 17:33:16 2010
+++ lib/freadseek.c     Wed Dec 22 12:25:04 2010
@@ -42,7 +42,7 @@
 #elif defined __EMX__               /* emx+gcc */
   fp->_ptr += increment;
   fp->_rcount -= increment;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
   fp_->_ptr += increment;
   fp_->_cnt -= increment;
 #elif defined __UCLIBC__            /* uClibc */
--- lib/fseeko.c.orig   Wed Dec 22 17:33:16 2010
+++ lib/fseeko.c        Wed Dec 22 12:25:24 2010
@@ -69,7 +69,7 @@
       && fp->_rcount == 0
       && fp->_wcount == 0
       && fp->_ungetc_count == 0)
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
   if (fp_->_ptr == fp_->_base
       && (fp_->_ptr == NULL || fp_->_cnt == 0))
 #elif defined __UCLIBC__            /* uClibc */
@@ -131,7 +131,7 @@
       fp_->_flags &= ~__SEOF;
 #elif defined __EMX__               /* emx+gcc */
       fp->_flags &= ~_IOEOF;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
       fp->_flag &= ~_IOEOF;
 #elif defined __MINT__              /* Atari FreeMiNT */
       fp->__offset = pos;
--- lib/fseterr.c.orig  Wed Dec 22 17:33:16 2010
+++ lib/fseterr.c       Wed Dec 22 12:18:20 2010
@@ -35,7 +35,7 @@
   fp_->_flags |= __SERR;
 #elif defined __EMX__               /* emx+gcc */
   fp->_flags |= _IOERR;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
   fp_->_flag |= _IOERR;
 #elif defined __UCLIBC__            /* uClibc */
   fp->__modeflags |= __FLAG_ERROR;
--- lib/fwritable.c.orig        Wed Dec 22 17:33:16 2010
+++ lib/fwritable.c     Wed Dec 22 12:25:41 2010
@@ -33,7 +33,7 @@
   return (fp_->_flags & (__SRW | __SWR)) != 0;
 #elif defined __EMX__               /* emx+gcc */
   return (fp->_flags & (_IORW | _IOWRT)) != 0;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
   return (fp->_flag & (_IORW | _IOWRT)) != 0;
 #elif defined __QNX__               /* QNX */
   return (fp->_Mode & 0x2 /* _MOPENW */) != 0;
--- lib/fwriting.c.orig Wed Dec 22 17:33:16 2010
+++ lib/fwriting.c      Wed Dec 22 12:25:51 2010
@@ -33,7 +33,7 @@
   return (fp_->_flags & __SWR) != 0;
 #elif defined __EMX__               /* emx+gcc */
   return (fp->_flags & _IOWRT) != 0;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, 
OpenServer, mingw, NonStop Kernel */
   return (fp->_flag & _IOWRT) != 0;
 #elif defined __UCLIBC__            /* uClibc */
   return (fp->__modeflags & __FLAG_WRITING) != 0;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]