У нас есть kext, который проверяет, является ли путь субдирером другого пути и делает какую-то магию, если это так.Сравнение путей со специальными символами на Mac UTF-8
Это все работает отлично до тех пор мы не имеем специальные символы на нашем пути (символы, такие как ë
)
Мы кормим некоторые рабочие пути в систему с помощью хелпера приложения, которое может взаимодействовать с Kext.
Я изолировали проблему в этом коде:
#include <stdio.h>
#include <string.h>
int main()
{
char* path = "/Users/user/test/tëst/test"; //Sent by the system
char* wp = "/Users/user/test/tëst"; //Some path we claim to be ours
size_t wp_len = strlen(wp);
if (strncmp (wp,path,wp_len) == 0) //Check is path is a subpath
{
printf ("matched %s\n", path);
}else {
printf ("could not match\n");
}
return 0;
}
Я создал GIST, поэтому кодировка не идти теряется с браузером: https://gist.github.com/fvandepitte/ec28f4321a48061808d0095853af7bd7
Кто-то знает, как я могу проверить если path
является подпутью wp
, не теряя при этом слишком большой производительности (этот код работает в ядре)?
https://developer.apple.com/library/content/qa/qa1173/_index.html –