diff --git a/src/utils/string_utils/string_utils.c b/src/utils/string_utils/string_utils.c index 6762b07..8a8176a 100644 --- a/src/utils/string_utils/string_utils.c +++ b/src/utils/string_utils/string_utils.c @@ -3,17 +3,13 @@ #include #include -ssize_t skip_blanks(char **str) +char *trim_blank_left(char *str) { - if (str == NULL || *str == NULL) - { - return 0; - } - ssize_t skipped = 0; - while (*str[skipped] != '\0' && !isblank(str[skipped])) - { - skipped++; - } - *str += skipped; - return skipped; + if (str == NULL) + return NULL; + + while (*str != '\0' && isblank(*str)) + str++; + + return str; } diff --git a/src/utils/string_utils/string_utils.h b/src/utils/string_utils/string_utils.h index 5e6df94..496c1d5 100644 --- a/src/utils/string_utils/string_utils.h +++ b/src/utils/string_utils/string_utils.h @@ -4,9 +4,12 @@ #include /* - * @brief: skips blank characters at the beginning of [str]. - * @return: number of characters skipped. + * @brief trims leading blank characters (space and tab) from the input string. + * @param str input string to be trimmed. + * @return pointer to the first non-blank character in the string. If the + * string consists entirely of blank characters, returns a pointer to the null + * terminator at the end of the string. */ -ssize_t skip_blanks(char **str); +char *trim_blank_left(char *str); #endif /* STRING_UTILS_H */ diff --git a/tests/unit/utils/utils_tests.c b/tests/unit/utils/utils_tests.c index 1076aab..b7c326f 100644 --- a/tests/unit/utils/utils_tests.c +++ b/tests/unit/utils/utils_tests.c @@ -5,7 +5,7 @@ #include #include -#include "utils/string_utils/string_utils.h" +#include "../../../src/utils/string_utils/string_utils.h" TestSuite(string_utils); @@ -14,10 +14,11 @@ Test(string_utils, skipblank_basic) char input[] = " Hello World"; char expected_str[] = "Hello World"; - ssize_t actual = skip_blanks(input); + char *trimmed = trim_blank_left(input); + ssize_t offset = trimmed - input; ssize_t expected = 2; - cr_expect(eq(str, input, expected_str)); - cr_expect(actual == expected); + cr_expect(eq(str, trimmed, expected_str)); + cr_expect(offset == expected); } Test(string_utils, skipblank_noblank) @@ -25,10 +26,11 @@ Test(string_utils, skipblank_noblank) char input[] = "Hello World"; char expected_str[] = "Hello World"; - ssize_t actual = skip_blanks(input); + char *trimmed = trim_blank_left(input); + ssize_t offset = trimmed - input; ssize_t expected = 0; - cr_expect(eq(str, input, expected_str)); - cr_expect(actual == expected); + cr_expect(eq(str, trimmed, expected_str)); + cr_expect(offset == expected); } Test(string_utils, skipblank_tab) @@ -36,10 +38,11 @@ Test(string_utils, skipblank_tab) char input[] = "\tHello World"; char expected_str[] = "Hello World"; - ssize_t actual = skip_blanks(input); + char *trimmed = trim_blank_left(input); + ssize_t offset = trimmed - input; ssize_t expected = 1; - cr_expect(eq(str, input, expected_str)); - cr_expect(actual == expected); + cr_expect(eq(str, trimmed, expected_str)); + cr_expect(offset == expected); } Test(string_utils, skipblank_space_tab) @@ -47,10 +50,11 @@ Test(string_utils, skipblank_space_tab) char input[] = " \tHello World"; char expected_str[] = "Hello World"; - ssize_t actual = skip_blanks(input); + char *trimmed = trim_blank_left(input); + ssize_t offset = trimmed - input; ssize_t expected = 2; - cr_expect(eq(str, input, expected_str)); - cr_expect(actual == expected); + cr_expect(eq(str, trimmed, expected_str)); + cr_expect(offset == expected); } Test(string_utils, skipblank_2tab_1space) @@ -58,10 +62,11 @@ Test(string_utils, skipblank_2tab_1space) char input[] = "\t \tHello World"; char expected_str[] = "Hello World"; - ssize_t actual = skip_blanks(input); + char *trimmed = trim_blank_left(input); + ssize_t offset = trimmed - input; ssize_t expected = 3; - cr_expect(eq(str, input, expected_str)); - cr_expect(actual == expected); + cr_expect(eq(str, trimmed, expected_str)); + cr_expect(offset == expected); } Test(string_utils, skipblank_a_lot) @@ -69,10 +74,11 @@ Test(string_utils, skipblank_a_lot) char input[] = "\t \t \tHello World"; char expected_str[] = "Hello World"; - ssize_t actual = skip_blanks(input); + char *trimmed = trim_blank_left(input); + ssize_t offset = trimmed - input; ssize_t expected = 8; - cr_expect(eq(str, input, expected_str)); - cr_expect(actual == expected); + cr_expect(eq(str, trimmed, expected_str)); + cr_expect(offset == expected); } Test(string_utils, skipblank_newline) @@ -80,18 +86,20 @@ Test(string_utils, skipblank_newline) char input[] = "\nHello World"; char expected_str[] = "\nHello World"; - ssize_t actual = skip_blanks(input); + char *trimmed = trim_blank_left(input); + ssize_t offset = trimmed - input; ssize_t expected = 0; - cr_expect(eq(str, input, expected_str)); - cr_expect(actual == expected); + cr_expect(eq(str, trimmed, expected_str)); + cr_expect(offset == expected); } Test(string_utils, skipblank_nul) { char *input = NULL; - ssize_t actual = skip_blanks(input); + char *trimmed = trim_blank_left(input); + ssize_t offset = trimmed - input; ssize_t expected = 0; cr_expect(input == NULL); - cr_expect(actual == expected); + cr_expect(offset == expected); }