[PATCH 1/3] libbb: add str_isblank() macro
Bartosz Golaszewski
bartekgola at gmail.com
Fri Sep 30 10:04:40 UTC 2016
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 3752df9..8deddc8 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -355,6 +355,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.7.4
More information about the busybox
mailing list