提交 4d6dd9d2 编写于 作者: R Romain Vimont

Compute scrcpy directory manually

The function dirname() does not work correctly everywhere with non-ASCII
characters.

Fixes #2619 <https://github.com/Genymobile/scrcpy/issues/2619>
上级 b5e98db6
...@@ -60,7 +60,20 @@ get_server_path(void) { ...@@ -60,7 +60,20 @@ get_server_path(void) {
// not found, use current directory // not found, use current directory
return strdup(SERVER_FILENAME); return strdup(SERVER_FILENAME);
} }
char *dir = dirname(executable_path);
// dirname() does not work correctly everywhere, so get the parent
// directory manually.
// See <https://github.com/Genymobile/scrcpy/issues/2619>
char *p = strrchr(executable_path, PATH_SEPARATOR);
if (!p) {
LOGE("Unexpected executable path: \"%s\" (it should contain a '%c')",
executable_path, PATH_SEPARATOR);
free(executable_path);
return strdup(SERVER_FILENAME);
}
*p = '\0'; // modify executable_path in place
char *dir = executable_path;
size_t dirlen = strlen(dir); size_t dirlen = strlen(dir);
// sizeof(SERVER_FILENAME) gives statically the size including the null byte // sizeof(SERVER_FILENAME) gives statically the size including the null byte
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册