ctrl_c.c: Do not use macro SA_RESTART for DJGPP.

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

	* ctrl_c.c: Do not use macro SA_RESTART for DJGPP.
	* gsocket.h: Do not support sockets for DJGPP.
	* init.c (__gnat_install_handler): Implememt for DJGPP
	* sysdep.c: Include <io.h> for DJGPP
	(_setmode): Define to setmode for DJGPP
	(__gnat_set_mode): Add implementation for DJGPP
	(__gnat_localtime_tzoff): Use localtime_r for DJGPP
	* terminals.c: Add DJGPP to list of unsupported platforms.
	* env.c (__gnat_clearenv): use _gnat_unsetenv on all entries for DJGPP

From-SVN: r240997
This commit is contained in:
Andris Pavenis 2016-10-11 21:12:52 +03:00 committed by Andris Pavenis
parent a32fc2165b
commit 4f100fd7db
7 changed files with 58 additions and 7 deletions

View File

@ -1,3 +1,15 @@
2016-10-11 Andris Pavenis <andris.pavenis@iki.fi>
* ctrl_c.c: Do not use macro SA_RESTART for DJGPP.
* gsocket.h: Do not support sockets for DJGPP.
* init.c (__gnat_install_handler): Implememt for DJGPP
* sysdep.c: Include <io.h> for DJGPP
(_setmode): Define to setmode for DJGPP
(__gnat_set_mode): Add implementation for DJGPP
(__gnat_localtime_tzoff): Use localtime_r for DJGPP
* terminals.c: Add DJGPP to list of unsupported platforms.
* env.c (__gnat_clearenv): use _gnat_unsetenv on all entries for DJGPP
2016-10-11 Pierre-Marie de Rodat <derodat@adacore.com>
* exp_dbug.adb (Debug_Renaming_Declaration): Process underlying types.

View File

@ -92,8 +92,8 @@ __gnat_install_int_handler (void (*proc) (void))
if (sigint_intercepted == 0)
{
act.sa_handler = __gnat_int_handler;
#if defined (__Lynx__) || defined (VMS)
/* LynxOS and VMS do not support SA_RESTART. */
#if defined (__Lynx__) || defined (VMS) || defined(__DJGPP__)
/* LynxOS, VMS and DJGPP do not support SA_RESTART. */
act.sa_flags = 0;
#else
act.sa_flags = SA_RESTART;

View File

@ -302,7 +302,7 @@ void __gnat_clearenv (void)
#elif defined (__MINGW32__) || defined (__FreeBSD__) || defined (__APPLE__) \
|| (defined (__vxworks) && defined (__RTP__)) || defined (__CYGWIN__) \
|| defined (__NetBSD__) || defined (__OpenBSD__) || defined (__rtems__) \
|| defined (__DragonFly__)
|| defined (__DragonFly__) || defined (__DJGPP__)
/* On Windows, FreeBSD and MacOS there is no function to clean all the
environment but there is a "clean" way to unset a variable. So go
through the environ table and call __gnat_unsetenv on all entries */

View File

@ -29,7 +29,7 @@
* *
****************************************************************************/
#if defined(VTHREADS) || defined(__PikeOS__)
#if defined(VTHREADS) || defined(__PikeOS__) || defined(__DJGPP__)
/* Sockets not supported on these platforms. */
#undef HAVE_SOCKETS

View File

@ -2516,6 +2516,14 @@ __gnat_install_handler (void)
__gnat_handler_installed = 1;
}
#elif defined (__DJGPP__)
void
__gnat_install_handler ()
{
__gnat_handler_installed = 1;
}
#elif defined(__ANDROID__)
/*******************/

View File

@ -126,7 +126,7 @@ extern struct tm *localtime_r(const time_t *, struct tm *);
*/
#if defined (WINNT) || defined (__CYGWIN__)
#if defined (WINNT) || defined (__CYGWIN__) || defined(__DJGPP__)
const char __gnat_text_translation_required = 1;
@ -137,6 +137,11 @@ const char __gnat_text_translation_required = 1;
#define WIN_SETMODE _setmode
#endif
#if defined(__DJGPP__)
#include <io.h>
#define _setmode setmode
#endif /* __DJGPP__ */
void
__gnat_set_binary_mode (int handle)
{
@ -149,6 +154,30 @@ __gnat_set_text_mode (int handle)
WIN_SETMODE (handle, O_TEXT);
}
#ifdef __DJGPP__
void
__gnat_set_mode (int handle, int mode)
{
/* the values here must be synchronized with
System.File_Control_Block.Content_Encodding:
None = 0
Default_Text = 1
Text = 2
U8text = 3
Wtext = 4
U16text = 5 */
switch (mode) {
case 0 : setmode(handle, O_BINARY); break;
case 1 : setmode(handle, O_TEXT); break;
case 2 : setmode(handle, O_TEXT); break;
case 3 : setmode(handle, O_TEXT); break;
case 4 : setmode(handle, O_BINARY); break;
case 5 : setmode(handle, O_BINARY); break;
}
}
#else
void
__gnat_set_mode (int handle, int mode)
{
@ -171,6 +200,7 @@ __gnat_set_mode (int handle, int mode)
case 5 : WIN_SETMODE (handle, _O_U16TEXT); break;
}
}
#endif
#ifdef __CYGWIN__
@ -795,7 +825,8 @@ __gnat_localtime_tzoff (const time_t *timer ATTRIBUTE_UNUSED,
struct tm */
#elif defined (__APPLE__) || defined (__FreeBSD__) || defined (__linux__) \
|| defined (__GLIBC__) || defined (__DragonFly__) || defined (__OpenBSD__)
|| defined (__GLIBC__) || defined (__DragonFly__) || defined (__OpenBSD__) \
|| defined(__DJGPP__)
{
localtime_r (timer, &tp);
*off = tp.tm_gmtoff;

View File

@ -32,7 +32,7 @@
/* First all usupported platforms. Add stubs for exported routines. */
#if defined (VMS) || defined (__vxworks) || defined (__Lynx__) \
|| defined (__ANDROID__) || defined (__PikeOS__)
|| defined (__ANDROID__) || defined (__PikeOS__) || defined(__DJGPP__)
#define ATTRIBUTE_UNUSED __attribute__((unused))