libudev-util: make util_replace_whitespace() read only len characters
This effectively reverts df8ba4fa0e
.
Fixes #11264.
This commit is contained in:
parent
f5855697aa
commit
577ab71c58
|
@ -122,19 +122,20 @@ size_t util_path_encode(const char *src, char *dest, size_t size) {
|
|||
*
|
||||
* Note this may be called with 'str' == 'to', i.e. to replace whitespace
|
||||
* in-place in a buffer. This function can handle that situation.
|
||||
*
|
||||
* Note that only 'len' characters are read from 'str'.
|
||||
*/
|
||||
size_t util_replace_whitespace(const char *str, char *to, size_t len) {
|
||||
bool is_space = false;
|
||||
const char *p = str;
|
||||
size_t j;
|
||||
size_t i, j;
|
||||
|
||||
assert(str);
|
||||
assert(to);
|
||||
|
||||
p += strspn(p, WHITESPACE);
|
||||
i = strspn(str, WHITESPACE);
|
||||
|
||||
for (j = 0; j < len && *p != '\0'; p++) {
|
||||
if (isspace(*p)) {
|
||||
for (j = 0; j < len && i < len && str[i] != '\0'; i++) {
|
||||
if (isspace(str[i])) {
|
||||
is_space = true;
|
||||
continue;
|
||||
}
|
||||
|
@ -146,7 +147,7 @@ size_t util_replace_whitespace(const char *str, char *to, size_t len) {
|
|||
to[j++] = '_';
|
||||
is_space = false;
|
||||
}
|
||||
to[j++] = *p;
|
||||
to[j++] = str[i];
|
||||
}
|
||||
|
||||
to[j] = '\0';
|
||||
|
|
|
@ -365,16 +365,23 @@ static void test_util_replace_whitespace(void) {
|
|||
test_util_replace_whitespace_one_len("hoge hoge ", 1, "h");
|
||||
test_util_replace_whitespace_one_len("hoge hoge ", 0, "");
|
||||
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 9, "hoge_hoge");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 8, "hoge_hog");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 7, "hoge_ho");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 6, "hoge_h");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 5, "hoge");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 4, "hoge");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 3, "hog");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 2, "ho");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 1, "h");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 0, "");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 16, "hoge_hoge");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 15, "hoge_hoge");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 14, "hoge_hog");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 13, "hoge_ho");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 12, "hoge_h");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 11, "hoge");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 10, "hoge");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 9, "hoge");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 8, "hoge");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 7, "hog");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 6, "ho");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 5, "h");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 4, "");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 3, "");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 2, "");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 1, "");
|
||||
test_util_replace_whitespace_one_len(" hoge hoge ", 0, "");
|
||||
}
|
||||
|
||||
static void test_util_resolve_subsys_kernel_one(const char *str, bool read_value, int retval, const char *expected) {
|
||||
|
|
Loading…
Reference in a new issue