X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Futil.c;h=f5adedc531a2521f46924cda1619df5af5463055;hp=152724949d3c14d1823cc488f63bf0daa8096932;hb=f7900e258dfb8ab55f333d02d96f908ca0ea8899;hpb=47a81ba2e101058459328d2da3d9b950a8030c86 diff --git a/src/shared/util.c b/src/shared/util.c index 152724949..f5adedc53 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -353,6 +353,23 @@ int safe_atolli(const char *s, long long int *ret_lli) { return 0; } +int safe_atod(const char *s, double *ret_d) { + char *x = NULL; + double d; + + assert(s); + assert(ret_d); + + errno = 0; + d = strtod(s, &x); + + if (!x || x == s || *x || errno) + return errno ? -errno : -EINVAL; + + *ret_d = (double) d; + return 0; +} + /* Split a string into words. */ char *split(const char *c, size_t *l, const char *separator, char **state) { char *current;