Когда моя программа пытается stat()
файл, содержащий определенные символы UTF-8, функция stat()
возвращает ошибку. Например, я могу открыть файл /tmp/surgateDlpMgQure/Özkul Gazete
с помощью vi, но при передаче этого же файла в stat()
возникает ошибка. Настройки локали системы:
ЯЗЫК=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_COLLATE=С
LC_TIME=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
ЛК_ВСЕ=
Должен ли я что-то сделать, чтобы stat()
понимал символы UTF-8?
Вот код:
int main ()
{
struct stat s;
if (stat("/tmp/surgateDlpMgQure/Özkul Gazete", &s) == -1)
perror("stat");
switch (s.st_mode & S_IFMT) {
case S_IFBLK: printf("block device\n"); break;
case S_IFCHR: printf("character device\n"); break;
case S_IFDIR: printf("directory\n"); break;
case S_IFIFO: printf("FIFO/pipe\n"); break;
case S_IFLNK: printf("symlink\n"); break;
case S_IFREG: printf("regular file\n"); break;
case S_IFSOCK: printf("socket\n"); break;
default: printf("unknown?\n"); break;
}
return 0;
}