Signed-off-by: Christian Brauner <christian.brauner@canonical.com>
if (uli > UINT_MAX)
return -ERANGE;
- *converted = (unsigned)uli;
+ *converted = (unsigned int)uli;
return 0;
}
*converted = (int)sli;
return 0;
}
+
+int lxc_safe_long(const char *numstr, long int *converted)
+{
+ char *err = NULL;
+ signed long int sli;
+
+ errno = 0;
+ sli = strtol(numstr, &err, 0);
+ if (errno > 0)
+ return -errno;
+
+ if (!err || err == numstr || *err != '\0')
+ return -EINVAL;
+
+ if (sli > LONG_MAX)
+ return -ERANGE;
+
+ *converted = sli;
+ return 0;
+}
/* Helper functions to parse numbers. */
int lxc_safe_uint(const char *numstr, unsigned int *converted);
int lxc_safe_int(const char *numstr, int *converted);
+int lxc_safe_long(const char *numstr, long int *converted);
#endif /* __LXC_UTILS_H */