IO-Dirent
view release on metacpan or search on metacpan
MODULE = IO::Dirent PACKAGE = IO::Dirent
#ifdef DT_DIR
#define USE_D_NAME
#endif
SV *
readdirent(dirp)
DIR *dirp;
PROTOTYPE: *
PPCODE:
Direntry_t *dent;
while ((dent = (Direntry_t *)readdir(dirp))) {
HV *hdent;
hdent = (HV *)sv_2mortal((SV *)newHV());
#ifdef DIRNAMLEN /* from perl's config.h */
hv_store(hdent, "name", 4, newSVpv(dent->d_name, dent->d_namlen), 0);
#else
hv_store(hdent, "name", 4, newSVpv(dent->d_name, 0), 0);
#endif /* DIRNAMLEN */
#ifdef USE_D_NAME
PREINIT:
IO *io;
INIT:
DIR *dirp = IoDIRP(sv_2io(dirh));
Direntry_t *dent;
#ifndef USE_D_NAME
int dirfp = fileno(dirfd(IoDIRP(sv_2io(dirh))));
int fdsave; /* cwd to return to */
struct stat sb;
#endif
PPCODE:
#ifndef USE_D_NAME
/* save an fd of our current working directory */
if( fdsave = open(".", O_RDONLY) < 0 ) {
XSRETURN_UNDEF;
}
if( dirfp ) {
fprintf(stderr, "ok!\n");
}
else {
( run in 0.672 second using v1.01-cache-2.11-cpan-71847e10f99 )