aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorOlivier Hainque <hainque@adacore.com>2007-09-26 12:41:58 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2007-09-26 12:41:58 +0200
commit8dfea8e71402226d8589cf0dcbaef8c0f19db236 (patch)
tree4e574c2bb77d20de915d980ed78369f3b541db69 /gcc
parented18d8583b01ea9b8053162d3bb6dc0714921530 (diff)
downloadgcc-8dfea8e71402226d8589cf0dcbaef8c0f19db236.zip
gcc-8dfea8e71402226d8589cf0dcbaef8c0f19db236.tar.gz
gcc-8dfea8e71402226d8589cf0dcbaef8c0f19db236.tar.bz2
adaint.c (if defined (__Lynx__)): Wrap #def/#undef VMOS_DEV around #include <utime.h> and #define GCC_RESOURCE_H...
2007-09-26 Olivier Hainque <hainque@adacore.com> * adaint.c (if defined (__Lynx__)): Wrap #def/#undef VMOS_DEV around #include <utime.h> and #define GCC_RESOURCE_H before #include <sys/wait.h>. Add more protections in __gnat_translate_vms. * expect.c (if defined (__Lynx__)): #define GCC_RESOURCE_H before #include <sys/wait.h>. From-SVN: r128782
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/adaint.c49
-rw-r--r--gcc/ada/expect.c6
2 files changed, 40 insertions, 15 deletions
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index dcc7c13..74fb670 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -76,14 +76,22 @@
#include "version.h"
#endif
-#ifdef __MINGW32__
+#if defined (__MINGW32__)
+
#include "mingw32.h"
#include <sys/utime.h>
#include <ctype.h>
-#else
-#ifndef VMS
+
+#elif defined (__Lynx__)
+
+/* Lynx utime.h only defines the entities of interest to us if
+ defined (VMOS_DEV), so ... */
+#define VMOS_DEV
+#include <utime.h>
+#undef VMOS_DEV
+
+#elif !defined (VMS)
#include <utime.h>
-#endif
#endif
#ifdef __MINGW32__
@@ -92,6 +100,14 @@
#endif
#elif defined (__vxworks) && defined (__RTP__)
#include <wait.h>
+#elif defined (__Lynx__)
+/* ??? We really need wait.h and it includes resource.h on Lynx. GCC
+ has a resource.h header as well, included instead of the lynx
+ version in our setup, causing lots of errors. We don't really need
+ the lynx contents of this file, so just workaround the issue by
+ preventing the inclusion of the GCC header from doing anything. */
+#define GCC_RESOURCE_H
+#include <sys/wait.h>
#else
#include <sys/wait.h>
#endif
@@ -2430,8 +2446,8 @@ __gnat_translate_vms (char *src)
*(retpos++) = '.';
}
- /* There is qualified path */
- while (*pos1 != ']' && *pos1 != '>') {
+ /* There is a qualified path */
+ while (*pos1 && *pos1 != ']' && *pos1 != '>') {
switch (*pos1) {
case '.':
/* '.' is used to separate directories. Replace it with '/' but
@@ -2445,13 +2461,18 @@ __gnat_translate_vms (char *src)
}
break;
case '-' :
- /* Equivalent to Unix .. but there may be several in a row */
- while (*pos1 == '-') {
- pos1++;
- *(retpos++) = '.'; *(retpos++) = '.'; *(retpos++) = '/';
+ /* When after '.' '[' '<' is equivalent to Unix ".." but there
+ may be several in a row */
+ if (*(pos1 - 1) == '.' || *(pos1 - 1) == '[' ||
+ *(pos1 - 1) == '<') {
+ while (*pos1 == '-') {
+ pos1++;
+ *(retpos++) = '.'; *(retpos++) = '.'; *(retpos++) = '/';
+ }
+ retpos--;
+ break;
}
- retpos--;
- break;
+ /* otherwise fall through to default */
default:
*(retpos++) = *(pos1++);
}
@@ -2540,7 +2561,7 @@ __gnat_to_canonical_file_spec (char *filespec)
if (strchr (filespec, ']') || strchr (filespec, ':'))
{
- char *tspec = (char *) decc$translate_vms (filespec);
+ char *tspec = (char *) __gnat_translate_vms (filespec);
if (tspec != (char *) -1)
strncpy (new_canonical_filespec, tspec, MAXPATH);
@@ -2549,7 +2570,7 @@ __gnat_to_canonical_file_spec (char *filespec)
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"))
&& (filespec1 = getenv (filespec)))
{
- char *tspec = (char *) decc$translate_vms (filespec1);
+ char *tspec = (char *) __gnat_translate_vms (filespec1);
if (tspec != (char *) -1)
strncpy (new_canonical_filespec, tspec, MAXPATH);
diff --git a/gcc/ada/expect.c b/gcc/ada/expect.c
index 6d2cf86..7503de0 100644
--- a/gcc/ada/expect.c
+++ b/gcc/ada/expect.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 2001-2005, AdaCore *
+ * Copyright (C) 2001-2007, AdaCore *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -51,6 +51,10 @@
#endif
#elif defined (__vxworks) && defined (__RTP__)
#include <wait.h>
+#elif defined (__Lynx__)
+/* ??? See comment in adaint.c. */
+#define GCC_RESOURCE_H
+#include <sys/wait.h>
#else
#include <sys/wait.h>
#endif