diff options
author | Olivier Hainque <hainque@adacore.com> | 2007-09-26 12:41:58 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2007-09-26 12:41:58 +0200 |
commit | 8dfea8e71402226d8589cf0dcbaef8c0f19db236 (patch) | |
tree | 4e574c2bb77d20de915d980ed78369f3b541db69 | |
parent | ed18d8583b01ea9b8053162d3bb6dc0714921530 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ada/adaint.c | 49 | ||||
-rw-r--r-- | gcc/ada/expect.c | 6 |
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 |