Если путь "long/path/to/the/file.txt"
, вам нужно будет позвонить stat()
на "long"
, "long/path"
, "long/path/to"
и "long/path/to/the"
. Если вам все равно, в каком порядке вы их проверяете, возможно, самый простой способ - это повторно использовать strrchr()
:
char *s;
while (s = strrchr(path, '/'))
{
*s = 0;
if (strlen(path) > 0)
stat(path, &statbuf);
else
stat("/", &statbuf);
/* Do something with statbuf */
}
(Специальный регистр предназначен для путей, начинающихся с /
, для проверки самого корневого каталога).