Separate multi-words filenames by '_'
Rename foobar.ext to foo_bar.ext. <https://github.com/Genymobile/scrcpy/pull/226#discussion_r209454865>
This commit is contained in:
33
app/src/str_util.c
Normal file
33
app/src/str_util.c
Normal file
@@ -0,0 +1,33 @@
|
||||
#include "str_util.h"
|
||||
|
||||
size_t xstrncpy(char *dest, const char *src, size_t n) {
|
||||
size_t i;
|
||||
for (i = 0; i < n - 1 && src[i] != '\0'; ++i)
|
||||
dest[i] = src[i];
|
||||
if (n)
|
||||
dest[i] = '\0';
|
||||
return src[i] == '\0' ? i : n;
|
||||
}
|
||||
|
||||
size_t xstrjoin(char *dst, const char *const tokens[], char sep, size_t n) {
|
||||
const char *const *remaining = tokens;
|
||||
const char *token = *remaining++;
|
||||
size_t i = 0;
|
||||
while (token) {
|
||||
if (i) {
|
||||
dst[i++] = sep;
|
||||
if (i == n)
|
||||
goto truncated;
|
||||
}
|
||||
size_t w = xstrncpy(dst + i, token, n - i);
|
||||
if (w >= n - i)
|
||||
goto truncated;
|
||||
i += w;
|
||||
token = *remaining++;
|
||||
}
|
||||
return i;
|
||||
|
||||
truncated:
|
||||
dst[n - 1] = '\0';
|
||||
return n;
|
||||
}
|
||||
Reference in New Issue
Block a user