#CLOSE
######
SV*
close(fd)
SV* fd;
INIT:
int ret;
CODE:
if(SvOK(fd) && SvIOK(fd)){
ret=close(SvIV(fd));
if(ret<0){
RETVAL=&PL_sv_undef;
}
else{
//close returns 0 on success.. which is false in perl
//so increment
RETVAL=newSViv(ret+1);
}
}
else {
errno=EBADF;
RETVAL=&PL_sv_undef;
Perl_warn(aTHX_ "%s", "IO::FD::close called with something other than a file descriptor");
}
OUTPUT:
RETVAL