shithub: npe

ref: 601fd8cc2b36c3aef31d411115783428f039b36d
dir: npe/libnpe/stat.c

View raw version
#include <unistd.h>
#include <errno.h>

#undef stat

int
npe_stat(char *filename, struct npe_stat *buf)
{
	Dir *d;

	if((d = dirstat(filename)) == nil){
		errno = ENOENT;
		return -1;
	}

	buf->st_size = d->length;
	buf->st_mtime = d->mtime;
	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;
}