diff options
-rw-r--r-- | include/strutils.h | 37 | ||||
-rw-r--r-- | libblkid/src/probe.c | 23 |
2 files changed, 41 insertions, 19 deletions
diff --git a/include/strutils.h b/include/strutils.h index 3883b4288..cfe8a9560 100644 --- a/include/strutils.h +++ b/include/strutils.h @@ -161,4 +161,41 @@ static inline const char *skip_blank(const char *p) return p; } + +/* Removes whitespace from the right-hand side of a string (trailing + * whitespace). + * + * Returns size of the new string (without \0). + */ +static inline size_t rtrim_whitespace(unsigned char *str) +{ + size_t i = strlen((char *) str); + + while (i--) { + if (!isspace(str[i])) + break; + } + str[++i] = '\0'; + return i; +} + +/* Removes whitespace from the left-hand side of a string. + * + * Returns size of the new string (without \0). + */ +static inline size_t ltrim_whitespace(unsigned char *str) +{ + size_t len; + unsigned char *p; + + for (p = str; p && isspace(*p); p++); + + len = strlen((char *) p); + + if (len && p > str) + memmove(str, p, len + 1); + + return len; +} + #endif diff --git a/libblkid/src/probe.c b/libblkid/src/probe.c index b1eddd628..4fea3ccb4 100644 --- a/libblkid/src/probe.c +++ b/libblkid/src/probe.c @@ -111,6 +111,7 @@ #include "blkidP.h" #include "all-io.h" #include "sysfs.h" +#include "strutils.h" /* chains */ extern const struct blkid_chaindrv superblocks_drv; @@ -1717,14 +1718,7 @@ int blkid_uuid_is_empty(const unsigned char *buf, size_t len) */ size_t blkid_rtrim_whitespace(unsigned char *str) { - size_t i = strlen((char *) str); - - while (i--) { - if (!isspace(str[i])) - break; - } - str[++i] = '\0'; - return i; + return rtrim_whitespace(str); } /* Removes whitespace from the left-hand side of a string. @@ -1733,18 +1727,9 @@ size_t blkid_rtrim_whitespace(unsigned char *str) */ size_t blkid_ltrim_whitespace(unsigned char *str) { - size_t len; - unsigned char *p; - - for (p = str; p && isspace(*p); p++); - - len = strlen((char *) p); - - if (len && p > str) - memmove(str, p, len + 1); - - return len; + return ltrim_whitespace(str); } + /* * Some mkfs-like utils wipe some parts (usually begin) of the device. * For example LVM (pvcreate) or mkswap(8). This information could be used |