summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/readdir.c
blob: ed885a5f0ef95150393369f97476453fb137b0b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "dietdirent.h"
#include <unistd.h>
#include <dirent.h>
#include <stdlib.h>

struct dirent* readdir(DIR *d) {
  if (!d->num || (d->cur += ((struct dirent*)(d->buf+d->cur))->d_reclen)>=d->num) {
    int res=getdents(d->fd,(struct dirent*)d->buf,sizeof (d->buf)-1);
    if (res<=0) return 0;
    d->num=res; d->cur=0;
  }
  return (struct dirent*)(d->buf+d->cur);
}