scm_istring2number(str, len, radix) char *str; int len; int radix;
scm_istring2number (char *str, int len, int radix)
scm_istring2number(str, len, radix)     char *str;     int len;     int radix;{  int i = 0;  char ex = 0;  char ex_p = 0, rx_p = 0;	/* Only allow 1 exactness and 1 radix prefix */#if 0  SCM res;#endif  if (len==1)    if (*str=='+' || *str=='-') /* Catches lone `+' and `-' for speed */      return SCM_BOOL_F;  while ((len-i) >= 2  &&  str[i]=='#' && ++i)    switch (str[i++]) {    case 'b': case 'B':  if (rx_p++) return SCM_BOOL_F; radix = 2;  break;    case 'o': case 'O':  if (rx_p++) return SCM_BOOL_F; radix = 8;  break;    case 'd': case 'D':  if (rx_p++) return SCM_BOOL_F; radix = 10; break;    case 'x': case 'X':  if (rx_p++) return SCM_BOOL_F; radix = 16; break;    case 'i': case 'I':  if (ex_p++) return SCM_BOOL_F; ex = 2;     break;    case 'e': case 'E':  if (ex_p++) return SCM_BOOL_F; ex = 1;     break;    default:  return SCM_BOOL_F;    }  switch (ex) {  case 1:    return scm_istr2int(&str[i], len-i, radix);  case 0:    return scm_istr2int(&str[i], len-i, radix);#if 0    if NFALSEP(res) return res;#ifdef FLOATS  case 2: return scm_istr2flo(&str[i], len-i, radix);#endif#endif  }  return SCM_BOOL_F;}