ref: ba4b0723d9e6d6ec72ca54016a932e72fbae46f7
dir: /libnpe/fstat.c/
#include <unistd.h> #include <errno.h> #undef fstat int npe_fstat(int fd, struct npe_stat *buf) { Dir *d; if((d = dirfstat(fd)) == nil){ errno = ENOENT; return -1; } buf->st_size = d->length; buf->st_mtime = d->mtime; buf->st_atime = d->atime; buf->st_mode = d->mode & 0777; if(d->mode & DMDIR) buf->st_mode |= S_IFDIR; else buf->st_mode |= S_IFREG; free(d); return 0; }