strod() & _str_ext_cvt() made more strictly conforming
This commit is contained in:
parent
33c9811ba9
commit
2c9fbebe4e
2 changed files with 7 additions and 6 deletions
|
@ -455,7 +455,7 @@ add_exponent(struct EXTEND *e, int exp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_str_ext_cvt(char *s, char **ss, struct EXTEND *e)
|
_str_ext_cvt(const char *s, char **ss, struct EXTEND *e)
|
||||||
{
|
{
|
||||||
/* Like strtod, but for extended precision */
|
/* Like strtod, but for extended precision */
|
||||||
register int c;
|
register int c;
|
||||||
|
@ -463,7 +463,7 @@ _str_ext_cvt(char *s, char **ss, struct EXTEND *e)
|
||||||
int digitseen = 0;
|
int digitseen = 0;
|
||||||
int exp = 0;
|
int exp = 0;
|
||||||
|
|
||||||
if (ss) *ss = s;
|
if (ss) *ss = (char *)s;
|
||||||
while (isspace(*s)) s++;
|
while (isspace(*s)) s++;
|
||||||
|
|
||||||
e->sign = 0;
|
e->sign = 0;
|
||||||
|
@ -496,7 +496,7 @@ _str_ext_cvt(char *s, char **ss, struct EXTEND *e)
|
||||||
}
|
}
|
||||||
if (! digitseen) return;
|
if (! digitseen) return;
|
||||||
|
|
||||||
if (ss) *ss = s - 1;
|
if (ss) *ss = (char *)s - 1;
|
||||||
|
|
||||||
if (c == 'E' || c == 'e') {
|
if (c == 'E' || c == 'e') {
|
||||||
int exp1 = 0;
|
int exp1 = 0;
|
||||||
|
@ -519,7 +519,7 @@ _str_ext_cvt(char *s, char **ss, struct EXTEND *e)
|
||||||
exp_overflow = 1;
|
exp_overflow = 1;
|
||||||
}
|
}
|
||||||
} while (c = *++s, isdigit(c));
|
} while (c = *++s, isdigit(c));
|
||||||
if (ss) *ss = s;
|
if (ss) *ss = (char *)s;
|
||||||
}
|
}
|
||||||
exp += sign * exp1;
|
exp += sign * exp1;
|
||||||
if (exp_overflow) {
|
if (exp_overflow) {
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
/* $Header$ */
|
/* $Header$ */
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#include "ext_fmt.h"
|
#include "ext_fmt.h"
|
||||||
|
|
||||||
void _str_ext_cvt(char *s, char **ss, struct EXTEND *e);
|
void _str_ext_cvt(const char *s, char **ss, struct EXTEND *e);
|
||||||
double _ext_dbl_cvt(struct EXTEND *e);
|
double _ext_dbl_cvt(struct EXTEND *e);
|
||||||
|
|
||||||
double
|
double
|
||||||
strtod(char *p, char **pp)
|
strtod(const char *p, char **pp)
|
||||||
{
|
{
|
||||||
struct EXTEND e;
|
struct EXTEND e;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue