|
|
|
@ -253,27 +253,27 @@ static int MIFget_integer(char *token, char **err) |
|
|
|
long l; |
|
|
|
double dtemp; |
|
|
|
char *endp; |
|
|
|
/* long strtol(char *, char **, int); */ |
|
|
|
|
|
|
|
*err = NULL; |
|
|
|
|
|
|
|
errno = 0; |
|
|
|
|
|
|
|
l = strtol(token, &endp, 0); /* handles base 8, 10, 16 automatically */ |
|
|
|
|
|
|
|
if(!errno && (*endp == '\0')) |
|
|
|
return((int) l); |
|
|
|
|
|
|
|
/* if error, probably caused by engineering suffixes, */ |
|
|
|
/* so try parsing with INPevaluate */ |
|
|
|
if(errno || (*endp != '\0')) { |
|
|
|
dtemp = INPevaluate(&token, &error, 1); |
|
|
|
if(error) { |
|
|
|
*err = "Bad integer, octal, or hex value"; |
|
|
|
l = 0; |
|
|
|
} |
|
|
|
else if(dtemp > 0.0) |
|
|
|
l = (long)(dtemp + 0.5); |
|
|
|
else |
|
|
|
l = (long)(dtemp - 0.5); |
|
|
|
|
|
|
|
dtemp = INPevaluate(&token, &error, 1); |
|
|
|
|
|
|
|
if(error) { |
|
|
|
*err = "Bad integer, octal, or hex value"; |
|
|
|
return(0); |
|
|
|
} |
|
|
|
|
|
|
|
return((int) l); |
|
|
|
return((int)floor(dtemp + 0.5)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|