diff options
author | Harshavardhana <harsha@zresearch.com> | 2009-02-19 10:34:28 -0800 |
---|---|---|
committer | Anand V. Avati <avati@amp.gluster.com> | 2009-02-21 21:14:23 +0530 |
commit | b5e0ee918fdff566e45bb255130b9efa6b8fb7b0 (patch) | |
tree | 42691ef026458d74d2fee4dd89b4d52dd3c8a119 | |
parent | 9679f8db65de29a40f622c12c2cc538d70b052b2 (diff) |
new function gf_string2double for float/double values
fixed warning
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
-rw-r--r-- | libglusterfs/src/common-utils.c | 39 | ||||
-rw-r--r-- | libglusterfs/src/common-utils.h | 1 |
2 files changed, 40 insertions, 0 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 616c7a8ce..acac5e052 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -796,6 +796,39 @@ _gf_string2uint (const char *str, unsigned int *n, int base) } static int +_gf_string2double (const char *str, double *n) +{ + double value = 0.0; + char *tail = NULL; + int old_errno = 0; + + if (str == NULL || n == NULL) { + errno = EINVAL; + return -1; + } + + old_errno = errno; + errno = 0; + value = strtod (str, &tail); + + if (errno == ERANGE || errno == EINVAL) { + return -1; + } + + if (errno == 0) { + errno = old_errno; + } + + if (tail[0] != '\0') { + return -1; + } + + *n = value; + + return 0; +} + +static int _gf_string2longlong (const char *str, long long *n, int base) { long long value = 0; @@ -911,6 +944,12 @@ gf_string2uint (const char *str, unsigned int *n) return _gf_string2uint (str, n, 0); } +int +gf_string2double (const char *str, double *n) +{ + return _gf_string2double (str, n); +} + int gf_string2longlong (const char *str, long long *n) { diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index 2016b51eb..6c7390571 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -281,6 +281,7 @@ int gf_string2long (const char *str, long *n); int gf_string2ulong (const char *str, unsigned long *n); int gf_string2int (const char *str, int *n); int gf_string2uint (const char *str, unsigned int *n); +int gf_string2double (const char *str, double *n); int gf_string2longlong (const char *str, long long *n); int gf_string2ulonglong (const char *str, unsigned long long *n); |