⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glob.xs

📁 Altera recommends the following system configuration: * Pentium II 400 with 512-MB system memory (fa
💻 XS
字号:
#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#include "bsd_glob.h"/* XXX: need some thread awareness */static int GLOB_ERROR = 0;static doubleconstant(char *name, int arg){    errno = 0;    if (strlen(name) <= 5)        goto not_there;    switch (*(name+5)) {    case 'A':	if (strEQ(name, "GLOB_ABEND"))#ifdef GLOB_ABEND	    return GLOB_ABEND;#else	    goto not_there;#endif	if (strEQ(name, "GLOB_ALPHASORT"))#ifdef GLOB_ALPHASORT	    return GLOB_ALPHASORT;#else	    goto not_there;#endif	if (strEQ(name, "GLOB_ALTDIRFUNC"))#ifdef GLOB_ALTDIRFUNC	    return GLOB_ALTDIRFUNC;#else	    goto not_there;#endif	break;    case 'B':	if (strEQ(name, "GLOB_BRACE"))#ifdef GLOB_BRACE	    return GLOB_BRACE;#else	    goto not_there;#endif	break;    case 'C':	break;    case 'D':	break;    case 'E':	if (strEQ(name, "GLOB_ERR"))#ifdef GLOB_ERR	    return GLOB_ERR;#else	    goto not_there;#endif        if (strEQ(name, "GLOB_ERROR"))            return GLOB_ERROR;        break;    case 'F':	break;    case 'G':        break;    case 'H':	break;    case 'I':	break;    case 'J':	break;    case 'K':	break;    case 'L':	break;    case 'M':	if (strEQ(name, "GLOB_MARK"))#ifdef GLOB_MARK	    return GLOB_MARK;#else	    goto not_there;#endif	break;    case 'N':	if (strEQ(name, "GLOB_NOCASE"))#ifdef GLOB_NOCASE	    return GLOB_NOCASE;#else	    goto not_there;#endif	if (strEQ(name, "GLOB_NOCHECK"))#ifdef GLOB_NOCHECK	    return GLOB_NOCHECK;#else	    goto not_there;#endif	if (strEQ(name, "GLOB_NOMAGIC"))#ifdef GLOB_NOMAGIC	    return GLOB_NOMAGIC;#else	    goto not_there;#endif	if (strEQ(name, "GLOB_NOSORT"))#ifdef GLOB_NOSORT	    return GLOB_NOSORT;#else	    goto not_there;#endif	if (strEQ(name, "GLOB_NOSPACE"))#ifdef GLOB_NOSPACE	    return GLOB_NOSPACE;#else	    goto not_there;#endif	break;    case 'O':	break;    case 'P':	break;    case 'Q':	if (strEQ(name, "GLOB_QUOTE"))#ifdef GLOB_QUOTE	    return GLOB_QUOTE;#else	    goto not_there;#endif	break;    case 'R':	break;    case 'S':	break;    case 'T':	if (strEQ(name, "GLOB_TILDE"))#ifdef GLOB_TILDE	    return GLOB_TILDE;#else	    goto not_there;#endif	break;    case 'U':	break;    case 'V':	break;    case 'W':	break;    case 'X':	break;    case 'Y':	break;    case 'Z':	break;    }    errno = EINVAL;    return 0;not_there:    errno = ENOENT;    return 0;}#ifdef WIN32#define errfunc		NULL#elseinterrfunc(const char *foo, int bar) {  return !(bar == ENOENT || bar == ENOTDIR);}#endifMODULE = File::Glob		PACKAGE = File::Globvoiddoglob(pattern,...)    char *patternPROTOTYPE: $;$PREINIT:    glob_t pglob;    int i;    int retval;    int flags = 0;    SV *tmp;PPCODE:    {	/* allow for optional flags argument */	if (items > 1) {	    flags = (int) SvIV(ST(1));	}	/* call glob */	retval = bsd_glob(pattern, flags, errfunc, &pglob);	GLOB_ERROR = retval;	/* return any matches found */	EXTEND(sp, pglob.gl_pathc);	for (i = 0; i < pglob.gl_pathc; i++) {	    /* printf("# bsd_glob: %s\n", pglob.gl_pathv[i]); */	    tmp = sv_2mortal(newSVpvn(pglob.gl_pathv[i],				      strlen(pglob.gl_pathv[i])));	    TAINT;	    SvTAINT(tmp);	    PUSHs(tmp);	}	bsd_globfree(&pglob);    }doubleconstant(name,arg)    char *name    int   argPROTOTYPE: $$

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -