[RFC/PATCH 03/10] libbb: add str_isblank() macro
Bartosz Golaszewski
bartekgola at gmail.com
Thu Aug 13 13:57:23 UTC 2015
Add a wrapper around skip_whitespace() which evaluates to true if given
string contains only whitespace characters.
Signed-off-by: Bartosz Golaszewski <bartekgola at gmail.com>
---
include/libbb.h | 2 ++
libbb/skip_whitespace.c | 17 +++++++++++++++++
2 files changed, 19 insertions(+)
diff --git a/include/libbb.h b/include/libbb.h
index 136d4fd..478c030 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -337,6 +337,8 @@ extern char *skip_whitespace(const char *) FAST_FUNC;
extern char *skip_non_whitespace(const char *) FAST_FUNC;
extern char *skip_dev_pfx(const char *tty_name) FAST_FUNC;
+#define str_isblank(str) (*skip_whitespace(str) == '\0')
+
extern char *strrstr(const char *haystack, const char *needle) FAST_FUNC;
//TODO: supply a pointer to char[11] buffer (avoid statics)?
diff --git a/libbb/skip_whitespace.c b/libbb/skip_whitespace.c
index b6cfbba..3df0fa9 100644
--- a/libbb/skip_whitespace.c
+++ b/libbb/skip_whitespace.c
@@ -37,3 +37,20 @@ char* FAST_FUNC skip_dev_pfx(const char *tty_name)
tty_name += 5;
return (char*)tty_name;
}
+
+#if ENABLE_UNIT_TEST
+
+BBUNIT_DEFINE_TEST(str_isblank)
+{
+ BBUNIT_ASSERT_TRUE(str_isblank(" \t\t\n\v\f\r"));
+ BBUNIT_ASSERT_TRUE(str_isblank(""));
+ BBUNIT_ASSERT_TRUE(str_isblank(" "));
+ BBUNIT_ASSERT_TRUE(str_isblank("\n\t "));
+
+ BBUNIT_ASSERT_FALSE(str_isblank(" \t\t e"));
+ BBUNIT_ASSERT_FALSE(str_isblank("ee "));
+
+ BBUNIT_ENDTEST;
+}
+
+#endif /* ENABLE_UNIT_TEST */
--
2.1.4
More information about the busybox
mailing list