From 23106a29b0342ef8ada46bfc3df33b5d8e9c5e77 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Tue, 29 Jan 2013 15:25:47 +0100 Subject: lib/strutils: simplify strtosize(), return info about suffix Signed-off-by: Karel Zak --- include/strutils.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'include/strutils.h') diff --git a/include/strutils.h b/include/strutils.h index 38eb1ce6a..695343405 100644 --- a/include/strutils.h +++ b/include/strutils.h @@ -1,6 +1,7 @@ #ifndef UTIL_LINUX_STRUTILS #define UTIL_LINUX_STRUTILS +#include #include #include #include @@ -11,6 +12,7 @@ #endif +extern int parse_size(const char *str, uintmax_t *res, int *power); extern int strtosize(const char *str, uintmax_t *res); extern uintmax_t strtosize_or_err(const char *str, const char *errmesg); @@ -50,6 +52,25 @@ static inline void xstrncpy(char *dest, const char *src, size_t n) dest[n-1] = 0; } +static inline char *strdup_to_offset(void *stru, size_t offset, const char *str) +{ + char *n = NULL; + char **o = (char **) ((char *) stru + offset); + + if (str) { + n = strdup(str); + if (!n) + return NULL; + } + + free(*o); + *o = n; + return n; +} + +#define strdup_to_struct_member(_s, _m, _str) \ + strdup_to_offset((void *) _s, offsetof(__typeof__(*(_s)), _m), _str) + extern void strmode(mode_t mode, char *str); /* Options for size_to_human_string() */ -- cgit v1.2.3-55-g7522