File-Copy-clonefile

 view release on metacpan or  search on metacpan

lib/File/Copy/clonefile.xs  view on Meta::CPAN

#ifdef __cplusplus
extern "C" {
#endif

#define PERL_NO_GET_CONTEXT /* we want efficiency */
#include <EXTERN.h>
#include <perl.h>
#include <XSUB.h>

#ifdef __cplusplus
} /* extern "C" */
#endif

#define NEED_newSVpvn_flags
#include "ppport.h"

#include <sys/attr.h>
#include <sys/clonefile.h>

#include "const-c.inc"

MODULE = File::Copy::clonefile  PACKAGE = File::Copy::clonefile

INCLUDE: const-xs.inc

PROTOTYPES: DISABLE

void
clonefile(...)
PPCODE:
{
  if (items != 2 && items != 3) {
    croak("clonefile: the length of arguments must be 2 or 3");
  }
  const char* src = SvPV_nolen(ST(0));
  const char* dst = SvPV_nolen(ST(1));
  IV flags = 0;
  if (items == 3) {
    flags = SvIV(ST(2));
  }
  if (clonefile(src, dst, (int)flags) == 0) {
    XSRETURN_YES;
  } else {
    XSRETURN_UNDEF;
  }
}



( run in 0.763 second using v1.01-cache-2.11-cpan-5511b514fd6 )