/*
 Issue:
   On NetBSD/vax 6 BETA2 strtod() does not check for VAX FP overflow correctly
   and so large numbers trigger a SIGFPE.

 Files:
  - sigfpe_test.c: this file
  - strtod.c: strtod implementation from NetBSD libc for debugging
  - arith.h gd_qnan.h gdtoa.h gdtoaimp.h: (infrastructure files)

cc -Wall -DNO_FENV_H -g -o sigfpe_test sigfpe_test.c strtod.c && ./sigfpe_test

SIGFPPE at strtod.c:522
   dval(&rv) *= bigtens[j];

*/
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
   const char *s= "12345678901234567890123456789012345678901234567890123456";
   char *ep;
   double d;

   d = strtod(s, &ep);
   if (ep == s || errno == ERANGE)
       puts("Not a valid number");
   else
       printf("Valid number: %lf", d);
   return 0;
}