/* Implementation of strtod for systems with atof.
- Copyright (C) 1991, 1995 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1995, 2002 Free Software Foundation, Inc.
This file is part of the libiberty library. This library is free
software; you can redistribute it and/or modify it under the
This exception does not however invalidate any other reasons why
the executable file might be covered by the GNU General Public License. */
-#include <ctype.h>
+/*
+
+@deftypefn Supplemental double strtod (const char *@var{string}, char **@var{endptr})
+
+This ISO C function converts the initial portion of @var{string} to a
+@code{double}. If @var{endptr} is not @code{NULL}, a pointer to the
+character after the last character used in the conversion is stored in
+the location referenced by @var{endptr}. If no conversion is
+performed, zero is returned and the value of @var{string} is stored in
+the location referenced by @var{endptr}.
+
+@end deftypefn
+
+*/
+
+#include "ansidecl.h"
+#include "safe-ctype.h"
extern double atof ();
p = str;
- while (isspace (*p))
+ while (ISSPACE (*p))
++p;
if (*p == '+' || *p == '-')
&& (p[6] == 't' || p[6] == 'T')
&& (p[7] == 'y' || p[7] == 'Y'))
{
- *ptr = p + 7;
+ *ptr = p + 8;
return atof (str);
}
else
}
/* digits, with 0 or 1 periods in it. */
- if (isdigit (*p) || *p == '.')
+ if (ISDIGIT (*p) || *p == '.')
{
int got_dot = 0;
- while (isdigit (*p) || (!got_dot && *p == '.'))
+ while (ISDIGIT (*p) || (!got_dot && *p == '.'))
{
if (*p == '.')
got_dot = 1;
i = 1;
if (p[i] == '+' || p[i] == '-')
++i;
- if (isdigit (p[i]))
+ if (ISDIGIT (p[i]))
{
- while (isdigit (p[i]))
+ while (ISDIGIT (p[i]))
++i;
*ptr = p + i;
return atof (str);