adaint.c: Include process.h, signal.h, dir.h and utime.h for DJGPP.

2016-10-11  Andris Pavenis  <andris.pavenis@iki.fi>

	* adaint.c: Include process.h, signal.h, dir.h and utime.h for DJGPP.
	ISALPHA: include <ctype.h> and define to isalpha for DJGPP when IN_RTS is defined.
	(DIR_SEPARATOR) define to '\\' for DJGPP.
	(__gnat_get_file_names_case_sensitive): return 0 for DJGPP unless
	overriden in environment
	(__gnat_is_absolute_path): Support MS-DOS style absolute paths for DJGPP.
	(__gnat_portable_spawn): Use spewnvp for DJGPP.
	(__gnat_portable_no_block_spawn): Use spawnvp for DJGPP.
	(__gnat_portable_wait): Return 0 for DJGPP.

From-SVN: r240999
This commit is contained in:
Andris Pavenis 2016-10-11 21:24:45 +03:00 committed by Andris Pavenis
parent a5297b0470
commit 91f2eb13cb
2 changed files with 44 additions and 7 deletions

View File

@ -1,3 +1,15 @@
2016-10-11 Andris Pavenis <andris.pavenis@iki.fi>
* adaint.c: Include process.h, signal.h, dir.h and utime.h for DJGPP.
ISALPHA: include <ctype.h> and define to isalpha for DJGPP when IN_RTS is defined.
(DIR_SEPARATOR) define to '\\' for DJGPP.
(__gnat_get_file_names_case_sensitive): return 0 for DJGPP unless
overriden in environment
(__gnat_is_absolute_path): Support MS-DOS style absolute paths for DJGPP.
(__gnat_portable_spawn): Use spewnvp for DJGPP.
(__gnat_portable_no_block_spawn): Use spawnvp for DJGPP.
(__gnat_portable_wait): Return 0 for DJGPP.
2016-10-11 Andris Pavenis <andris.pavenis@iki.fi>
* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS): Define for DJGPP target

View File

@ -112,7 +112,18 @@
extern "C" {
#endif
#if defined (__MINGW32__) || defined (__CYGWIN__)
#if defined (__DJGPP__)
/* For isalpha-like tests in the compiler, we're expected to resort to
safe-ctype.h/ISALPHA. This isn't available for the runtime library
build, so we fallback on ctype.h/isalpha there. */
#ifdef IN_RTS
#include <ctype.h>
#define ISALPHA isalpha
#endif
#elif defined (__MINGW32__) || defined (__CYGWIN__)
#include "mingw32.h"
@ -165,11 +176,16 @@ UINT CurrentCCSEncoding;
#include <sys/wait.h>
#endif
#if defined (_WIN32)
#if defined (__DJGPP__)
#include <process.h>
#include <signal.h>
#include <dir.h>
#include <utime.h>
#undef DIR_SEPARATOR
#define DIR_SEPARATOR '\\'
#elif defined (_WIN32)
#include <windows.h>
#include <accctrl.h>
#include <aclapi.h>
@ -554,7 +570,7 @@ __gnat_get_file_names_case_sensitive (void)
{
/* By default, we suppose filesystems aren't case sensitive on
Windows and Darwin (but they are on arm-darwin). */
#if defined (WINNT) \
#if defined (WINNT) || defined (__DJGPP__) \
|| (defined (__APPLE__) && !(defined (__arm__) || defined (__arm64__)))
file_names_case_sensitive_cache = 0;
#else
@ -570,7 +586,7 @@ __gnat_get_file_names_case_sensitive (void)
int
__gnat_get_env_vars_case_sensitive (void)
{
#if defined (WINNT)
#if defined (WINNT) || defined (__DJGPP__)
return 0;
#else
return 1;
@ -1640,7 +1656,7 @@ __gnat_is_absolute_path (char *name, int length)
#else
return (length != 0) &&
(*name == '/' || *name == DIR_SEPARATOR
#if defined (WINNT)
#if defined (WINNT) || defined(__DJGPP__)
|| (length > 1 && ISALPHA (name[0]) && name[1] == ':')
#endif
);
@ -2228,7 +2244,7 @@ __gnat_portable_spawn (char *args[] ATTRIBUTE_UNUSED)
#if defined (__vxworks) || defined(__PikeOS__)
return -1;
#elif defined (_WIN32)
#elif defined (__DJGPP__) || defined (_WIN32)
/* args[0] must be quotes as it could contain a full pathname with spaces */
char *args_0 = args[0];
args[0] = (char *)xmalloc (strlen (args_0) + 3);
@ -2600,6 +2616,12 @@ __gnat_portable_no_block_spawn (char *args[] ATTRIBUTE_UNUSED)
/* Not supported. */
return -1;
#elif defined(__DJGPP__)
if (spawnvp (P_WAIT, args[0], args) != 0)
return -1;
else
return 0;
#elif defined (_WIN32)
HANDLE h = NULL;
@ -2643,6 +2665,9 @@ __gnat_portable_wait (int *process_status)
pid = win32_wait (&status);
#elif defined (__DJGPP__)
/* Child process has already ended in case of DJGPP.
No need to do anything. Just return success. */
#else
pid = waitpid (-1, &status, 0);