changeset 18974:6862081ffc74

stdioext: Port to OpenVMS. * lib/stdio-impl.h: OpenVMS uses struct _iobuf for FILE information. * lib/fpending.c (fpending): Remove non-working VMS specific code. * lib/fbufmode.c (fbufmode): Fix _IOLBF test to use fp_ macro. * lib/fflush.c (clear_ungetc_buffer): Add OpenVMS to comments. * lib/fpurge.c (fpurge): Likewise. * lib/freadable.c (freadable): Likewise. * lib/freadahead.c (freadahead): Likewise. * lib/freading.c (freading): Likewise. * lib/freadptr.c (freadptr): Likewise. * lib/freadseek.c (freadseek): Likewise. * lib/fseeko.c (fseeko): Likewise. * lib/fseterr.c (fseterr): Likewise. * lib/fwritable.c (fwriteable): Likewise. * lib/fwriting.c (fwriting): Likewise.
author John Malmberg <wb8tyw@qsl.net>
date Mon, 03 Jul 2017 08:05:19 -0500
parents 6cc62e6191fc
children 65a46d4e0cbd
files ChangeLog lib/fbufmode.c lib/fflush.c lib/fpending.c lib/fpurge.c lib/freadable.c lib/freadahead.c lib/freading.c lib/freadptr.c lib/freadseek.c lib/fseeko.c lib/fseterr.c lib/fwritable.c lib/fwriting.c lib/stdio-impl.h
diffstat 15 files changed, 35 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat Jul 01 18:05:00 2017 +0200
+++ b/ChangeLog	Mon Jul 03 08:05:19 2017 -0500
@@ -1,3 +1,21 @@
+2017-07-03  John E. Malmberg  <wb8tyw@gmail.com>
+
+	stdioext: Port to OpenVMS.
+	* lib/stdio-impl.h: OpenVMS uses struct _iobuf for FILE information.
+	* lib/fpending.c (fpending): Remove non-working VMS specific code.
+	* lib/fbufmode.c (fbufmode): Fix _IOLBF test to use fp_ macro.
+	* lib/fflush.c (clear_ungetc_buffer): Add OpenVMS to comments.
+	* lib/fpurge.c (fpurge): Likewise.
+	* lib/freadable.c (freadable): Likewise.
+	* lib/freadahead.c (freadahead): Likewise.
+	* lib/freading.c (freading): Likewise.
+	* lib/freadptr.c (freadptr): Likewise.
+	* lib/freadseek.c (freadseek): Likewise.
+	* lib/fseeko.c (fseeko): Likewise.
+	* lib/fseterr.c (fseterr): Likewise.
+	* lib/fwritable.c (fwriteable): Likewise.
+	* lib/fwriting.c (fwriting): Likewise.
+
 2017-07-01  Benno Schulenberg  <bensberg@telfort.nl>
 
 	glob: Declare variables at the very start of their scope.
--- a/lib/fbufmode.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/fbufmode.c	Mon Jul 03 08:05:19 2017 -0500
@@ -53,7 +53,7 @@
   return fp->_flags & (_IOLBF | _IONBF | _IOFBF);
 #elif defined __minix               /* Minix */
   return fp->_flags & (_IOLBF | _IONBF | _IOFBF);
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
 # if defined WINDOWS_OPAQUE_FILE
   if (fp_->_flag & 0x100)
     return _IOFBF; /* Impossible to distinguish _IOFBF and _IOLBF.  */
@@ -64,7 +64,7 @@
   if (__flbf (fp))
     return _IOLBF;
 #  else
-  if (fp->_flag & _IOLBF)
+  if (fp_->_flag & _IOLBF)
     return _IOLBF;
 #  endif
   if (fp_->_flag & _IONBF)
--- a/lib/fflush.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/fflush.c	Mon Jul 03 08:05:19 2017 -0500
@@ -63,7 +63,7 @@
       fp->_ungetc_count = 0;
       fp->_rcount = - fp->_rcount;
     }
-# elif defined _IOERR               /* Minix, AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+# elif defined _IOERR               /* Minix, AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
   /* Nothing to do.  */
 # else                              /* other implementations */
   fseeko (fp, 0, SEEK_CUR);
--- a/lib/fpending.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/fpending.c	Mon Jul 03 08:05:19 2017 -0500
@@ -41,7 +41,7 @@
   return fp->_ptr - fp->_buffer;
 #elif defined __minix                /* Minix */
   return fp_->_ptr - fp_->_buf;
-#elif defined _IOERR                 /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+#elif defined _IOERR                 /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
   return (fp_->_ptr ? fp_->_ptr - fp_->_base : 0);
 #elif defined __UCLIBC__             /* uClibc */
   return (fp->__modeflags & __FLAG_WRITING ? fp->__bufpos - fp->__bufstart : 0);
@@ -51,8 +51,6 @@
   return fp->__bufp - fp->__buffer;
 #elif defined EPLAN9                 /* Plan9 */
   return fp->wp - fp->buf;
-#elif defined __VMS                  /* VMS */
-  return (*fp)->_ptr - (*fp)->_base;
 #else
 # error "Please port gnulib fpending.c to your platform!"
   return 1;
--- a/lib/fpurge.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/fpurge.c	Mon Jul 03 08:05:19 2017 -0500
@@ -98,7 +98,7 @@
   if (fp->_ptr != NULL)
     fp->_count = 0;
   return 0;
-# elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+# elif defined _IOERR               /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
   fp_->_ptr = fp_->_base;
   if (fp_->_ptr != NULL)
     fp_->_cnt = 0;
--- a/lib/freadable.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/freadable.c	Mon Jul 03 08:05:19 2017 -0500
@@ -40,7 +40,7 @@
   return (fp->_flags & (_IORW | _IOREAD)) != 0;
 #elif defined __minix               /* Minix */
   return (fp->_flags & _IOREAD) != 0;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
   return (fp_->_flag & (_IORW | _IOREAD)) != 0;
 #elif defined __QNX__               /* QNX */
   return (fp->_Mode & 0x1 /* _MOPENR */) != 0;
--- a/lib/freadahead.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/freadahead.c	Mon Jul 03 08:05:19 2017 -0500
@@ -58,7 +58,7 @@
   if ((fp_->_flags & _IOWRITING) != 0)
     return 0;
   return fp_->_count;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
   if ((fp_->_flag & _IOWRT) != 0)
     return 0;
   return fp_->_cnt;
--- a/lib/freading.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/freading.c	Mon Jul 03 08:05:19 2017 -0500
@@ -42,7 +42,7 @@
   return (fp->_flags & _IOREAD) != 0;
 # elif defined __minix               /* Minix */
   return (fp->_flags & _IOREADING) != 0;
-# elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+# elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
 #  if defined __sun                  /* Solaris */
   return (fp_->_flag & _IOREAD) != 0 && (fp_->_flag & _IOWRT) == 0;
 #  else
--- a/lib/freadptr.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/freadptr.c	Mon Jul 03 08:05:19 2017 -0500
@@ -65,7 +65,7 @@
     return NULL;
   *sizep = size;
   return (const char *) fp_->_ptr;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
   if ((fp_->_flag & _IOWRT) != 0)
     return NULL;
   size = fp_->_cnt;
--- a/lib/freadseek.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/freadseek.c	Mon Jul 03 08:05:19 2017 -0500
@@ -48,7 +48,7 @@
 #elif defined __minix               /* Minix */
   fp_->_ptr += increment;
   fp_->_count -= increment;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
   fp_->_ptr += increment;
   fp_->_cnt -= increment;
 #elif defined __UCLIBC__            /* uClibc */
--- a/lib/fseeko.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/fseeko.c	Mon Jul 03 08:05:19 2017 -0500
@@ -80,7 +80,7 @@
 #elif defined __minix               /* Minix */
   if (fp_->_ptr == fp_->_buf
       && (fp_->_ptr == NULL || fp_->_count == 0))
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
   if (fp_->_ptr == fp_->_base
       && (fp_->_ptr == NULL || fp_->_cnt == 0))
 #elif defined __UCLIBC__            /* uClibc */
@@ -150,7 +150,7 @@
       fp_->_flags &= ~__SEOF;
 #elif defined __EMX__               /* emx+gcc */
       fp->_flags &= ~_IOEOF;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
       fp_->_flag &= ~_IOEOF;
 #elif defined __MINT__              /* Atari FreeMiNT */
       fp->__offset = pos;
--- a/lib/fseterr.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/fseterr.c	Mon Jul 03 08:05:19 2017 -0500
@@ -38,7 +38,7 @@
   fp->_flags |= _IOERR;
 #elif defined __minix               /* Minix */
   fp->_flags |= _IOERR;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
   fp_->_flag |= _IOERR;
 #elif defined __UCLIBC__            /* uClibc */
   fp->__modeflags |= __FLAG_ERROR;
--- a/lib/fwritable.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/fwritable.c	Mon Jul 03 08:05:19 2017 -0500
@@ -40,7 +40,7 @@
   return (fp->_flags & (_IORW | _IOWRT)) != 0;
 #elif defined __minix               /* Minix */
   return (fp->_flags & _IOWRITE) != 0;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
   return (fp_->_flag & (_IORW | _IOWRT)) != 0;
 #elif defined __QNX__               /* QNX */
   return (fp->_Mode & 0x2 /* _MOPENW */) != 0;
--- a/lib/fwriting.c	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/fwriting.c	Mon Jul 03 08:05:19 2017 -0500
@@ -36,7 +36,7 @@
   return (fp->_flags & _IOWRT) != 0;
 #elif defined __minix               /* Minix */
   return (fp->_flags & _IOWRITING) != 0;
-#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel */
+#elif defined _IOERR                /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw, MSVC, NonStop Kernel, OpenVMS */
   return (fp_->_flag & _IOWRT) != 0;
 #elif defined __UCLIBC__            /* uClibc */
   return (fp->__modeflags & __FLAG_WRITING) != 0;
--- a/lib/stdio-impl.h	Sat Jul 01 18:05:00 2017 +0200
+++ b/lib/stdio-impl.h	Mon Jul 03 08:05:19 2017 -0500
@@ -99,6 +99,8 @@
                          int _file; \
                          unsigned int _flag; \
                        } *) fp)
+# elif defined __VMS                /* OpenVMS */
+#  define fp_ ((struct _iobuf *) fp)
 # else
 #  define fp_ fp
 # endif