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);

 }

Ответы на вопрос(1)

Ваш ответ на вопрос