stat выводит неправильные значения для файлов в каталоге
Я пытаюсь создать функцию, которая будет принимать введенный путь к каталогу (filrOrDir) и выводить информацию для каждого файла в каталоге: имя файла, размер и дату последнего доступа. Программа компилирует и печатает все. Он печатает правильные имена файлов, но для каждого файла неправильный размер и дата последнего доступа. Я подумал, может быть, это из-за того, что мои объявления переменных были в цикле while, но я переместил их и все еще получаю те же результаты. Может кто-нибудь дать мне подсказку или совет о том, что я делаю неправильно? Ниже мой код:
void dirInfo(char *fileOrDir)
{
DIR *d;
struct dirent *dir;
d = opendir(fileOrDir);
while((dir = readdir(d)) !=NULL)
{
struct stat *buffer = (struct stat *)malloc(sizeof(struct stat));
char accessString[256];
char *name = (char *)malloc(sizeof(char));
struct tm *tmAccess;
int size = 0;
name = dir->d_name;
stat(name, buffer);
printf("%s ", name);
size = buffer->st_size;
printf("%d bytes ", size);
tmAccess = localtime(&buffer->st_atime);
strftime(accessString, sizeof(accessString), "%a %B %d %H:%M:%S %Y", tmAccess);
printf("%s\n", accessString);
printf("\n");
free(buffer);
}
closedir(d);
}