static int have_monotonic; /* did clock_gettime (CLOCK_MONOTONIC) work? */
+#if WIN32
+/* note: the comment below could not be substantiated, but what would I care */
+/* MSDN says this is required to handle SIGFPE */
+volatile double SIGFPE_REQ = 0.0f;
+#endif
+
/*****************************************************************************/
typedef struct
cur = newcnt; \
}
+#define array_slim(stem) \
+ if (stem ## max < array_roundsize (stem ## cnt >> 2)) \
+ { \
+ stem ## max = array_roundsize (stem ## cnt >> 1); \
+ base = realloc (base, sizeof (*base) * (stem ## max)); \
+ fprintf (stderr, "slimmed down " # stem " to %d\n", stem ## max);/*D*/\
+ }
+
#define array_free(stem, idx) \
free (stem ## s idx); stem ## cnt idx = stem ## max idx = 0;
static void
sighandler (int signum)
{
+#if WIN32
+ signal (signum, sighandler);
+#endif
+
signals [signum - 1].gotsig = 1;
if (!gotsig)
if (!((WL)w)->next)
{
+#if WIN32
+ signal (w->signum, sighandler);
+#else
struct sigaction sa;
sa.sa_handler = sighandler;
sigfillset (&sa.sa_mask);
sa.sa_flags = SA_RESTART; /* if restarting works we save one iteration */
sigaction (w->signum, &sa, 0);
+#endif
}
}