zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

blob 39b9daad (592B) - Raw


      1 #include <stdlib.h>
      2 #include "shgetc.h"
      3 #include "floatscan.h"
      4 #include "stdio_impl.h"
      5 
      6 static long double strtox(const char *s, char **p, int prec)
      7 {
      8 	FILE f;
      9 	sh_fromstring(&f, s);
     10 	shlim(&f, 0);
     11 	long double y = __floatscan(&f, prec, 1);
     12 	off_t cnt = shcnt(&f);
     13 	if (p) *p = cnt ? (char *)s + cnt : (char *)s;
     14 	return y;
     15 }
     16 
     17 float strtof(const char *restrict s, char **restrict p)
     18 {
     19 	return strtox(s, p, 0);
     20 }
     21 
     22 double strtod(const char *restrict s, char **restrict p)
     23 {
     24 	return strtox(s, p, 1);
     25 }
     26 
     27 long double strtold(const char *restrict s, char **restrict p)
     28 {
     29 	return strtox(s, p, 2);
     30 }