+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.
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;
#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 */
* *
****************************************************************************/
-#if defined(VTHREADS) || defined(__PikeOS__)
+#if defined(VTHREADS) || defined(__PikeOS__) || defined(__DJGPP__)
/* Sockets not supported on these platforms. */
#undef HAVE_SOCKETS
__gnat_handler_installed = 1;
}
+#elif defined (__DJGPP__)
+
+void
+__gnat_install_handler ()
+{
+ __gnat_handler_installed = 1;
+}
+
#elif defined(__ANDROID__)
/*******************/
*/
-#if defined (WINNT) || defined (__CYGWIN__)
+#if defined (WINNT) || defined (__CYGWIN__) || defined(__DJGPP__)
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)
{
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)
{
case 5 : WIN_SETMODE (handle, _O_U16TEXT); break;
}
}
+#endif
#ifdef __CYGWIN__
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;
/* 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))