1 #define PERL_NO_GET_CONTEXT
9 #define MY_CXT_KEY "File::Glob::_guts" XS_VERSION
17 #define GLOB_ERROR (MY_CXT.x_GLOB_ERROR)
19 #include "const-c.inc"
25 errfunc(const char *foo, int bar) {
27 return !(bar == EACCES || bar == ENOENT || bar == ENOTDIR);
31 MODULE = File::Glob PACKAGE = File::Glob
57 /* allow for optional flags argument */
59 flags = (int) SvIV(ST(1));
60 /* remove unsupported flags */
61 flags &= ~(GLOB_APPEND | GLOB_DOOFFS | GLOB_ALTDIRFUNC | GLOB_MAGCHAR);
63 flags = (int) SvIV(get_sv("File::Glob::DEFAULT_FLAGS", GV_ADD));
67 bzero(&pglob, sizeof(glob_t));
68 retval = bsd_glob(pattern, flags, errfunc, &pglob);
71 /* return any matches found */
72 EXTEND(sp, pglob.gl_pathc);
73 for (i = 0; i < pglob.gl_pathc; i++) {
74 /* printf("# bsd_glob: %s\n", pglob.gl_pathv[i]); */
75 tmp = newSVpvn_flags(pglob.gl_pathv[i], strlen(pglob.gl_pathv[i]),
87 CV *cv = newXS("File::Glob::bsd_glob", XS_File__Glob_doglob, __FILE__);