AV *
readdir_inode(dirname)
char* dirname
INIT:
struct dirent *ent;
DIR* dir;
SV* record[2];
AV *entry, *ret_val;
CODE:
RETVAL = newAV();
dir = opendir(dirname);
if (!dir)
perror("Cannot open dir");
while ((ent=readdir(dir))) {
printf("%ld %x\n", ent->d_ino, ent->d_name);
record[0] = newSVpv(ent->d_name, 0);
record[1] = newSViv((IV)ent->d_ino);
entry = av_make(2, record);
av_push(RETVAL, newRV_inc((SV*) entry));
}
closedir(dir);
/*RETVAL=*ret_val;*/
/*RETVAL=newRV_inc((SV*) ret_val);*/
OUTPUT:
RETVAL
####
my @ents = readdir_inode(".");
print Dumper @ents;
##
##
$VAR1 = [
[
'.',
67586
],
[
'..',
255604