[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