From: Karel Zak Date: Mon, 25 Aug 2014 13:31:53 +0000 (+0200) Subject: libblkid: move string trim function to strutils.h X-Git-Tag: v2.26-rc1~490 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=22e9e9c8e95e609a20f24ec60fcd706f601e0be7;p=thirdparty%2Futil-linux.git libblkid: move string trim function to strutils.h Signed-off-by: Karel Zak --- diff --git a/include/strutils.h b/include/strutils.h index 3883b4288f..cfe8a95603 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 b1eddd628b..4fea3ccb4a 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