1 /* $NetBSD: strtold_subr.c,v 1.1 2006/03/15 17:35:18 kleink Exp $ */ 2 3 /* 4 * Written by Klaus Klein <kleink@NetBSD.org>, November 16, 2005. 5 * Public domain. 6 */ 7 8 /* 9 * NOTICE: This is not a standalone file. To use it, #include it in 10 * the format-specific strtold_*.c, like so: 11 * 12 * #define GDTOA_LD_FMT <gdtoa extended-precision format code> 13 * #include "strtold_subr.c" 14 */ 15 16 #include <sys/cdefs.h> 17 #if defined(LIBC_SCCS) && !defined(lint) 18 __RCSID("$NetBSD: strtold_subr.c,v 1.1 2006/03/15 17:35:18 kleink Exp $"); 19 #endif /* LIBC_SCCS and not lint */ 20 21 #include "namespace.h" 22 #include <math.h> 23 #include <stdlib.h> 24 #include "gdtoa.h" 25 26 #ifdef __weak_alias 27 __weak_alias(strtold, _strtold) 28 #endif 29 30 #ifndef __HAVE_LONG_DOUBLE 31 #error no extended-precision long double type 32 #endif 33 34 #ifndef GDTOA_LD_FMT 35 #error GDTOA_LD_FMT must be defined by format-specific source file 36 #endif 37 38 #define STRTOP(x) __CONCAT(strtop, x) 39 40 long double 41 strtold(const char *nptr, char **endptr) 42 { 43 long double ld; 44 45 (void)STRTOP(GDTOA_LD_FMT)(nptr, endptr, &ld); 46 return ld; 47 } 48