aboutsummaryrefslogtreecommitdiffstats
path: root/extension
diff options
context:
space:
mode:
Diffstat (limited to 'extension')
-rw-r--r--extension/ChangeLog16
-rw-r--r--extension/filefuncs.c28
-rw-r--r--extension/fnmatch.c14
-rw-r--r--extension/gawkdirfd.h4
-rw-r--r--extension/gawkfts.c4
-rw-r--r--extension/time.c24
6 files changed, 88 insertions, 2 deletions
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 328d58ba..965e0c66 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,19 @@
+2013-12-29 John E. Malmberg <wb8tyw@qsl.net>
+
+ * filefuncs.c: Fix compile on VMS.
+ * time.c: Fix compile on VMS.
+
+2013-12-29 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawkfts.c: Wrap include of <sys/param.h> in HAVE_SYS_PARAM_H,
+ as I should have done to start with. For VMS.
+
+2013-12-29 John E. Malmberg <wb8tyw@qsl.net>
+
+ * gawkdirfd.h: Adjust include for VMS.
+ * filefuncs.c: Make it compile on VMS.
+ * fnmatch.c: Make it compile on VMS.
+
2013-12-21 Mike Frysinger <vapier@gentoo.org>
* configure.ac: Remove MirBSD and OS/390 hack to create
diff --git a/extension/filefuncs.c b/extension/filefuncs.c
index 61cadfec..3eb2a6b5 100644
--- a/extension/filefuncs.c
+++ b/extension/filefuncs.c
@@ -36,6 +36,34 @@
#define _BSD_SOURCE
+#ifdef __VMS
+#if (__CRTL_VER >= 70200000) && !defined (__VAX)
+#define _LARGEFILE 1
+#endif
+
+#ifndef __VAX
+#ifdef __CRTL_VER
+#if __CRTL_VER >= 80200000
+#define _USE_STD_STAT 1
+#endif
+#endif
+#endif
+#define _POSIX_C_SOURCE 1
+#define _XOPEN_SOURCE 1
+#include <stat.h>
+#ifndef S_ISVTX
+#define S_ISVTX (0)
+#endif
+#ifndef major
+#define major(s) (s)
+#endif
+#ifndef minor
+#define minor(s) (0)
+#endif
+#include <unixlib.h>
+#endif
+
+
#include <stdio.h>
#include <assert.h>
#include <errno.h>
diff --git a/extension/fnmatch.c b/extension/fnmatch.c
index a67bc25f..a85bcc78 100644
--- a/extension/fnmatch.c
+++ b/extension/fnmatch.c
@@ -45,15 +45,29 @@
#define _(msgid) gettext(msgid)
#define N_(msgid) msgid
+#ifdef __VMS
+#define __iswctype iswctype
+#define __btowc btowc
+#endif
+
#define _GNU_SOURCE 1 /* use GNU extensions if they're there */
#ifdef HAVE_FNMATCH_H
#include <fnmatch.h>
#else
+#ifdef __VMS
+#include "fnmatch.h" /* version that comes with gawk */
+#else
#include "../missing_d/fnmatch.h" /* version that comes with gawk */
#endif
+#define HAVE_FNMATCH_H
+#endif
#ifndef HAVE_FNMATCH
+#ifdef __VMS
+#include "fnmatch.c" /* ditto */
+#else
#include "../missing_d/fnmatch.c" /* ditto */
+#endif
#define HAVE_FNMATCH
#endif
diff --git a/extension/gawkdirfd.h b/extension/gawkdirfd.h
index a3a2b6a6..d1edf65f 100644
--- a/extension/gawkdirfd.h
+++ b/extension/gawkdirfd.h
@@ -35,7 +35,11 @@
* Unlike the main gawk code base, this include is NOT dependant
* upon MinGW or EMX.
*/
+#ifndef __VMS
#include "../nonposix.h"
+#else
+#include "nonposix.h"
+#endif
#ifndef DIR_TO_FD
# define DIR_TO_FD(d) (FAKE_FD_VALUE)
diff --git a/extension/gawkfts.c b/extension/gawkfts.c
index 81803b88..25a4c108 100644
--- a/extension/gawkfts.c
+++ b/extension/gawkfts.c
@@ -43,11 +43,11 @@ static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94";
#include <limits.h>
/* #include "namespace.h" */
-#ifndef ZOS_USS
+#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#else
#include <stdio.h>
-#endif /* ZOS_USS */
+#endif
#include <sys/stat.h>
#include <assert.h>
diff --git a/extension/time.c b/extension/time.c
index 9fadfe54..b1e9a40a 100644
--- a/extension/time.c
+++ b/extension/time.c
@@ -39,6 +39,30 @@
#include <sys/types.h>
#include <sys/stat.h>
+#ifdef __VMS
+#define HAVE_NANOSLEEP
+#define HAVE_GETTIMEOFDAY
+#ifdef gettimeofday
+#undef gettimeofday
+#endif
+#ifdef __ia64__
+/* nanosleep not working on IA64 */
+static int
+vms_fake_nanosleep(const struct timespec *rqdly, struct timespec *rmdly)
+{
+ int result;
+
+ result = sleep(rqdly->tv_sec);
+ if (result == 0) {
+ return 0;
+ } else {
+ return -1;
+ }
+}
+#define nanosleep(x,y) vms_fake_nanosleep(x, y)
+#endif
+#endif
+
#include "gawkapi.h"
#include "gettext.h"