Как вы знаете, sys_open()
не получает размер имени файла в качестве параметра. Однако в стандарте говорится, что буквенная строка должна заканчиваться символом \0
. Это хорошая новость, потому что теперь мы можем выполнить простой цикл итерации по символам строки, и когда мы находим символ \0
(NULL), мы знаем, что достигли его конца.
Это стандартная процедура, вот как strlen()
делает это, а также как strace делает это!
C пример:
#include <stdio.h>
int main()
{
const char* filename = "/etc/somefile";
int fname_length = 0;
for (int i = 0; filename[i] != '\0'; i++)
{
fname_length++;
}
printf("Found %d chars in: %s\n", fname_length, filename);
return 0;
}
Возвращаясь к своей задаче, вы должны получить доступ к адресу filename
и выполнить процедуру, которую я только что описал. Это то, что вам придется сделать, и другого пути нет.