libbb: add is_suffixed_with() function
Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
5b865deb3f
commit
7448b513c8
@ -413,6 +413,7 @@ const char *bb_basename(const char *name) FAST_FUNC;
|
|||||||
char *last_char_is(const char *s, int c) FAST_FUNC;
|
char *last_char_is(const char *s, int c) FAST_FUNC;
|
||||||
const char* endofname(const char *name) FAST_FUNC;
|
const char* endofname(const char *name) FAST_FUNC;
|
||||||
char *is_prefixed_with(const char *string, const char *key) FAST_FUNC;
|
char *is_prefixed_with(const char *string, const char *key) FAST_FUNC;
|
||||||
|
char *is_suffixed_with(const char *string, const char *key) FAST_FUNC;
|
||||||
|
|
||||||
int ndelay_on(int fd) FAST_FUNC;
|
int ndelay_on(int fd) FAST_FUNC;
|
||||||
int ndelay_off(int fd) FAST_FUNC;
|
int ndelay_off(int fd) FAST_FUNC;
|
||||||
|
@ -28,6 +28,25 @@ char* FAST_FUNC is_prefixed_with(const char *string, const char *key)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return NULL if string is not suffixed with key. Return pointer to the
|
||||||
|
* beginning of prefix key in string. If key is an empty string return pointer
|
||||||
|
* to the end of string.
|
||||||
|
*/
|
||||||
|
char* FAST_FUNC is_suffixed_with(const char *string, const char *key)
|
||||||
|
{
|
||||||
|
size_t key_len = strlen(key);
|
||||||
|
ssize_t len_diff = strlen(string) - key_len;
|
||||||
|
|
||||||
|
if (len_diff >= 0) {
|
||||||
|
if (strcmp(string + len_diff, key) == 0) {
|
||||||
|
return (char*)key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* returns the array index of the string */
|
/* returns the array index of the string */
|
||||||
/* (index of first match is returned, or -1) */
|
/* (index of first match is returned, or -1) */
|
||||||
int FAST_FUNC index_in_str_array(const char *const string_array[], const char *key)
|
int FAST_FUNC index_in_str_array(const char *const string_array[], const char *key)
|
||||||
@ -133,4 +152,18 @@ BBUNIT_DEFINE_TEST(is_prefixed_with)
|
|||||||
BBUNIT_ENDTEST;
|
BBUNIT_ENDTEST;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BBUNIT_DEFINE_TEST(is_suffixed_with)
|
||||||
|
{
|
||||||
|
BBUNIT_ASSERT_STREQ("bar", is_suffixed_with("foo bar", "bar"));
|
||||||
|
BBUNIT_ASSERT_STREQ("foo", is_suffixed_with("foo", "foo"));
|
||||||
|
BBUNIT_ASSERT_STREQ("", is_suffixed_with("foo", ""));
|
||||||
|
BBUNIT_ASSERT_STREQ("", is_suffixed_with("", ""));
|
||||||
|
|
||||||
|
BBUNIT_ASSERT_NULL(is_suffixed_with("foo", "bar foo"));
|
||||||
|
BBUNIT_ASSERT_NULL(is_suffixed_with("foo foo", "bar"));
|
||||||
|
BBUNIT_ASSERT_NULL(is_suffixed_with("", "foo"));
|
||||||
|
|
||||||
|
BBUNIT_ENDTEST;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* ENABLE_UNIT_TEST */
|
#endif /* ENABLE_UNIT_TEST */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user