diff options
Diffstat (limited to 'contrib/binutils/libiberty/strtod.c')
| -rw-r--r-- | contrib/binutils/libiberty/strtod.c | 122 | 
1 files changed, 0 insertions, 122 deletions
| diff --git a/contrib/binutils/libiberty/strtod.c b/contrib/binutils/libiberty/strtod.c deleted file mode 100644 index c86c73de9b38..000000000000 --- a/contrib/binutils/libiberty/strtod.c +++ /dev/null @@ -1,122 +0,0 @@ -/* Implementation of strtod for systems with atof. -   Copyright (C) 1991, 1995 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 -terms of the GNU General Public License as published by the -Free Software Foundation; either version 2, or (at your option) -any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU CC; see the file COPYING.  If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -As a special exception, if you link this library with files -compiled with a GNU compiler to produce an executable, this does not cause -the resulting executable to be covered by the GNU General Public License. -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> - -extern double atof (); - -/* Disclaimer: this is currently just used by CHILL in GDB and therefore -   has not been tested well.  It may have been tested for nothing except -   that it compiles.  */ - -double -strtod (str, ptr) -     char *str; -     char **ptr; -{ -  char *p; - -  if (ptr == (char **)0) -    return atof (str); -   -  p = str; -   -  while (isspace (*p)) -    ++p; -   -  if (*p == '+' || *p == '-') -    ++p; - -  /* INF or INFINITY.  */ -  if ((p[0] == 'i' || p[0] == 'I') -      && (p[1] == 'n' || p[1] == 'N') -      && (p[2] == 'f' || p[2] == 'F')) -    { -      if ((p[3] == 'i' || p[3] == 'I') -	  && (p[4] == 'n' || p[4] == 'N') -	  && (p[5] == 'i' || p[5] == 'I') -	  && (p[6] == 't' || p[6] == 'T') -	  && (p[7] == 'y' || p[7] == 'Y')) -	{ -	  *ptr = p + 7; -	  return atof (str); -	} -      else -	{ -	  *ptr = p + 3; -	  return atof (str); -	} -    } - -  /* NAN or NAN(foo).  */ -  if ((p[0] == 'n' || p[0] == 'N') -      && (p[1] == 'a' || p[1] == 'A') -      && (p[2] == 'n' || p[2] == 'N')) -    { -      p += 3; -      if (*p == '(') -	{ -	  ++p; -	  while (*p != '\0' && *p != ')') -	    ++p; -	  if (*p == ')') -	    ++p; -	} -      *ptr = p; -      return atof (str); -    } - -  /* digits, with 0 or 1 periods in it.  */ -  if (isdigit (*p) || *p == '.') -    { -      int got_dot = 0; -      while (isdigit (*p) || (!got_dot && *p == '.')) -	{ -	  if (*p == '.') -	    got_dot = 1; -	  ++p; -	} - -      /* Exponent.  */ -      if (*p == 'e' || *p == 'E') -	{ -	  int i; -	  i = 1; -	  if (p[i] == '+' || p[i] == '-') -	    ++i; -	  if (isdigit (p[i])) -	    { -	      while (isdigit (p[i])) -		++i; -	      *ptr = p + i; -	      return atof (str); -	    } -	} -      *ptr = p; -      return atof (str); -    } -  /* Didn't find any digits.  Doesn't look like a number.  */ -  *ptr = str; -  return 0.0; -} | 
