Revision 70b4f4bb cutils.c
b/cutils.c | ||
---|---|---|
291 | 291 |
* value must be terminated by whitespace, ',' or '\0'. Return -1 on |
292 | 292 |
* error. |
293 | 293 |
*/ |
294 |
ssize_t strtosz_suffix(const char *nptr, char **end, const char default_suffix)
|
|
294 |
int64_t strtosz_suffix(const char *nptr, char **end, const char default_suffix)
|
|
295 | 295 |
{ |
296 |
ssize_t retval = -1;
|
|
296 |
int64_t retval = -1;
|
|
297 | 297 |
char *endptr, c, d; |
298 | 298 |
int mul_required = 0; |
299 | 299 |
double val, mul, integral, fraction; |
... | ... | |
365 | 365 |
goto fail; |
366 | 366 |
} |
367 | 367 |
} |
368 |
if ((val * mul >= ~(size_t)0) || val < 0) {
|
|
368 |
if ((val * mul >= INT64_MAX) || val < 0) {
|
|
369 | 369 |
goto fail; |
370 | 370 |
} |
371 | 371 |
retval = val * mul; |
... | ... | |
378 | 378 |
return retval; |
379 | 379 |
} |
380 | 380 |
|
381 |
ssize_t strtosz(const char *nptr, char **end)
|
|
381 |
int64_t strtosz(const char *nptr, char **end)
|
|
382 | 382 |
{ |
383 | 383 |
return strtosz_suffix(nptr, end, STRTOSZ_DEFSUFFIX_MB); |
384 | 384 |
} |
Also available in: Unified diff