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

📄 posix.xs

📁 UNIX下perl实现代码
💻 XS
📖 第 1 页 / 共 5 页
字号:
		return _PC_VDISABLE;#else		goto not_there;#endif	    break;	}	if (strnEQ(name, "_POSIX_", 7)) {	    if (strEQ(name, "_POSIX_ARG_MAX"))#ifdef _POSIX_ARG_MAX		return _POSIX_ARG_MAX;#else		return 0;#endif	    if (strEQ(name, "_POSIX_CHILD_MAX"))#ifdef _POSIX_CHILD_MAX		return _POSIX_CHILD_MAX;#else		return 0;#endif	    if (strEQ(name, "_POSIX_CHOWN_RESTRICTED"))#ifdef _POSIX_CHOWN_RESTRICTED		return _POSIX_CHOWN_RESTRICTED;#else		return 0;#endif	    if (strEQ(name, "_POSIX_JOB_CONTROL"))#ifdef _POSIX_JOB_CONTROL		return _POSIX_JOB_CONTROL;#else		return 0;#endif	    if (strEQ(name, "_POSIX_LINK_MAX"))#ifdef _POSIX_LINK_MAX		return _POSIX_LINK_MAX;#else		return 0;#endif	    if (strEQ(name, "_POSIX_MAX_CANON"))#ifdef _POSIX_MAX_CANON		return _POSIX_MAX_CANON;#else		return 0;#endif	    if (strEQ(name, "_POSIX_MAX_INPUT"))#ifdef _POSIX_MAX_INPUT		return _POSIX_MAX_INPUT;#else		return 0;#endif	    if (strEQ(name, "_POSIX_NAME_MAX"))#ifdef _POSIX_NAME_MAX		return _POSIX_NAME_MAX;#else		return 0;#endif	    if (strEQ(name, "_POSIX_NGROUPS_MAX"))#ifdef _POSIX_NGROUPS_MAX		return _POSIX_NGROUPS_MAX;#else		return 0;#endif	    if (strEQ(name, "_POSIX_NO_TRUNC"))#ifdef _POSIX_NO_TRUNC		return _POSIX_NO_TRUNC;#else		return 0;#endif	    if (strEQ(name, "_POSIX_OPEN_MAX"))#ifdef _POSIX_OPEN_MAX		return _POSIX_OPEN_MAX;#else		return 0;#endif	    if (strEQ(name, "_POSIX_PATH_MAX"))#ifdef _POSIX_PATH_MAX		return _POSIX_PATH_MAX;#else		return 0;#endif	    if (strEQ(name, "_POSIX_PIPE_BUF"))#ifdef _POSIX_PIPE_BUF		return _POSIX_PIPE_BUF;#else		return 0;#endif	    if (strEQ(name, "_POSIX_SAVED_IDS"))#ifdef _POSIX_SAVED_IDS		return _POSIX_SAVED_IDS;#else		return 0;#endif	    if (strEQ(name, "_POSIX_SSIZE_MAX"))#ifdef _POSIX_SSIZE_MAX		return _POSIX_SSIZE_MAX;#else		return 0;#endif	    if (strEQ(name, "_POSIX_STREAM_MAX"))#ifdef _POSIX_STREAM_MAX		return _POSIX_STREAM_MAX;#else		return 0;#endif	    if (strEQ(name, "_POSIX_TZNAME_MAX"))#ifdef _POSIX_TZNAME_MAX		return _POSIX_TZNAME_MAX;#else		return 0;#endif	    if (strEQ(name, "_POSIX_VDISABLE"))#ifdef _POSIX_VDISABLE		return _POSIX_VDISABLE;#else		return 0;#endif	    if (strEQ(name, "_POSIX_VERSION"))#ifdef _POSIX_VERSION		return _POSIX_VERSION;#else		return 0;#endif	    break;	}	if (strnEQ(name, "_SC_", 4)) {	    if (strEQ(name, "_SC_ARG_MAX"))#if defined(_SC_ARG_MAX) || HINT_SC_EXIST		return _SC_ARG_MAX;#else		goto not_there;#endif	    if (strEQ(name, "_SC_CHILD_MAX"))#if defined(_SC_CHILD_MAX) || HINT_SC_EXIST		return _SC_CHILD_MAX;#else		goto not_there;#endif	    if (strEQ(name, "_SC_CLK_TCK"))#if defined(_SC_CLK_TCK) || HINT_SC_EXIST		return _SC_CLK_TCK;#else		goto not_there;#endif	    if (strEQ(name, "_SC_JOB_CONTROL"))#if defined(_SC_JOB_CONTROL) || HINT_SC_EXIST		return _SC_JOB_CONTROL;#else		goto not_there;#endif	    if (strEQ(name, "_SC_NGROUPS_MAX"))#if defined(_SC_NGROUPS_MAX) || HINT_SC_EXIST		return _SC_NGROUPS_MAX;#else		goto not_there;#endif	    if (strEQ(name, "_SC_OPEN_MAX"))#if defined(_SC_OPEN_MAX) || HINT_SC_EXIST		return _SC_OPEN_MAX;#else		goto not_there;#endif	    if (strEQ(name, "_SC_SAVED_IDS"))#if defined(_SC_SAVED_IDS) || HINT_SC_EXIST		return _SC_SAVED_IDS;#else		goto not_there;#endif	    if (strEQ(name, "_SC_STREAM_MAX"))#if defined(_SC_STREAM_MAX) || HINT_SC_EXIST		return _SC_STREAM_MAX;#else		goto not_there;#endif	    if (strEQ(name, "_SC_TZNAME_MAX"))#if defined(_SC_TZNAME_MAX) || HINT_SC_EXIST		return _SC_TZNAME_MAX;#else		goto not_there;#endif	    if (strEQ(name, "_SC_VERSION"))#if defined(_SC_VERSION) || HINT_SC_EXIST		return _SC_VERSION;#else		goto not_there;#endif	    break;	}    }    errno = EINVAL;    return 0;not_there:    errno = ENOENT;    return 0;}MODULE = SigSet		PACKAGE = POSIX::SigSet		PREFIX = sigPOSIX::SigSetnew(packname = "POSIX::SigSet", ...)    char *		packname    CODE:	{	    int i;	    New(0, RETVAL, 1, sigset_t);	    sigemptyset(RETVAL);	    for (i = 1; i < items; i++)		sigaddset(RETVAL, SvIV(ST(i)));	}    OUTPUT:	RETVALvoidDESTROY(sigset)	POSIX::SigSet	sigset    CODE:	Safefree(sigset);SysRetsigaddset(sigset, sig)	POSIX::SigSet	sigset	int		sigSysRetsigdelset(sigset, sig)	POSIX::SigSet	sigset	int		sigSysRetsigemptyset(sigset)	POSIX::SigSet	sigsetSysRetsigfillset(sigset)	POSIX::SigSet	sigsetintsigismember(sigset, sig)	POSIX::SigSet	sigset	int		sigMODULE = Termios	PACKAGE = POSIX::Termios	PREFIX = cfPOSIX::Termiosnew(packname = "POSIX::Termios", ...)    char *		packname    CODE:	{#ifdef I_TERMIOS	    New(0, RETVAL, 1, struct termios);#else	    not_here("termios");        RETVAL = 0;#endif	}    OUTPUT:	RETVALvoidDESTROY(termios_ref)	POSIX::Termios	termios_ref    CODE:#ifdef I_TERMIOS	Safefree(termios_ref);#else	    not_here("termios");#endifSysRetgetattr(termios_ref, fd = 0)	POSIX::Termios	termios_ref	int		fd    CODE:	RETVAL = tcgetattr(fd, termios_ref);    OUTPUT:	RETVALSysRetsetattr(termios_ref, fd = 0, optional_actions = 0)	POSIX::Termios	termios_ref	int		fd	int		optional_actions    CODE:	RETVAL = tcsetattr(fd, optional_actions, termios_ref);    OUTPUT:	RETVALspeed_tcfgetispeed(termios_ref)	POSIX::Termios	termios_refspeed_tcfgetospeed(termios_ref)	POSIX::Termios	termios_reftcflag_tgetiflag(termios_ref)	POSIX::Termios	termios_ref    CODE:#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */	RETVAL = termios_ref->c_iflag;#else     not_here("getiflag");     RETVAL = 0;#endif    OUTPUT:	RETVALtcflag_tgetoflag(termios_ref)	POSIX::Termios	termios_ref    CODE:#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */	RETVAL = termios_ref->c_oflag;#else     not_here("getoflag");     RETVAL = 0;#endif    OUTPUT:	RETVALtcflag_tgetcflag(termios_ref)	POSIX::Termios	termios_ref    CODE:#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */	RETVAL = termios_ref->c_cflag;#else     not_here("getcflag");     RETVAL = 0;#endif    OUTPUT:	RETVALtcflag_tgetlflag(termios_ref)	POSIX::Termios	termios_ref    CODE:#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */	RETVAL = termios_ref->c_lflag;#else     not_here("getlflag");     RETVAL = 0;#endif    OUTPUT:	RETVALcc_tgetcc(termios_ref, ccix)	POSIX::Termios	termios_ref	int		ccix    CODE:#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */	if (ccix >= NCCS)	    croak("Bad getcc subscript");	RETVAL = termios_ref->c_cc[ccix];#else     not_here("getcc");     RETVAL = 0;#endif    OUTPUT:	RETVALSysRetcfsetispeed(termios_ref, speed)	POSIX::Termios	termios_ref	speed_t		speedSysRetcfsetospeed(termios_ref, speed)	POSIX::Termios	termios_ref	speed_t		speedvoidsetiflag(termios_ref, iflag)	POSIX::Termios	termios_ref	tcflag_t	iflag    CODE:#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */	termios_ref->c_iflag = iflag;#else	    not_here("setiflag");#endifvoidsetoflag(termios_ref, oflag)	POSIX::Termios	termios_ref	tcflag_t	oflag    CODE:#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */	termios_ref->c_oflag = oflag;#else	    not_here("setoflag");#endifvoidsetcflag(termios_ref, cflag)	POSIX::Termios	termios_ref	tcflag_t	cflag    CODE:#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */	termios_ref->c_cflag = cflag;#else	    not_here("setcflag");#endifvoidsetlflag(termios_ref, lflag)	POSIX::Termios	termios_ref	tcflag_t	lflag    CODE:#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */	termios_ref->c_lflag = lflag;#else	    not_here("setlflag");#endifvoidsetcc(termios_ref, ccix, cc)	POSIX::Termios	termios_ref	int		ccix	cc_t		cc    CODE:#ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */	if (ccix >= NCCS)	    croak("Bad setcc subscript");	termios_ref->c_cc[ccix] = cc;#else	    not_here("setcc");#endifMODULE = POSIX		PACKAGE = POSIXNVconstant(name,arg)	char *		name	int		argintisalnum(charstring)	unsigned char *	charstring    CODE:	unsigned char *s = charstring;	unsigned char *e = s + PL_na;	/* "PL_na" set by typemap side effect */	for (RETVAL = 1; RETVAL && s < e; s++)	    if (!isalnum(*s))		RETVAL = 0;    OUTPUT:	RETVALintisalpha(charstring)	unsigned char *	charstring    CODE:	unsigned char *s = charstring;	unsigned char *e = s + PL_na;	/* "PL_na" set by typemap side effect */	for (RETVAL = 1; RETVAL && s < e; s++)	    if (!isalpha(*s))		RETVAL = 0;    OUTPUT:	RETVALintiscntrl(charstring)	unsigned char *	charstring    CODE:	unsigned char *s = charstring;	unsigned char *e = s + PL_na;	/* "PL_na" set by typemap side effect */	for (RETVAL = 1; RETVAL && s < e; s++)	    if (!iscntrl(*s))		RETVAL = 0;    OUTPUT:	RETVALintisdigit(charstring)	unsigned char *	charstring    CODE:	unsigned char *s = charstring;	unsigned char *e = s + PL_na;	/* "PL_na" set by typemap side effect */	for (RETVAL = 1; RETVAL && s < e; s++)	    if (!isdigit(*s))		RETVAL = 0;    OUTPUT:	RETVALintisgraph(charstring)	unsigned char *	charstring    CODE:	unsigned char *s = charstring;	unsigned char *e = s + PL_na;	/* "PL_na" set by typemap side effect */	for (RETVAL = 1; RETVAL && s < e; s++)	    if (!isgraph(*s))		RETVAL = 0;    OUTPUT:	RETVALintislower(charstring)	unsigned char *	charstring    CODE:	unsigned char *s = charstring;	unsigned char *e = s + PL_na;	/* "PL_na" set by typemap side effect */	for (RETVAL = 1; RETVAL && s < e; s++)	    if (!islower(*s))		RETVAL = 0;    OUTPUT:	RETVALintisprint(charstring)	unsigned char *	charstring    CODE:	unsigned char *s = charstring;	unsigned char *e = s + PL_na;	/* "PL_na" set by typemap side effect */	for (RETVAL = 1; RETVAL && s < e; s++)	    if (!isprint(*s))		RETVAL = 0;    OUTPUT:	RETVALintispunct(charstring)	unsigned char *	charstring    CODE:	unsigned char *s = charstring;	unsigned char *e = s + PL_na;	/* "PL_na" set by typemap side effect */	for (RETVAL = 1; RETVAL && s < e; s++)	    if (!ispunct(*s))		RETVAL = 0;    OUTPUT:	RETVALintisspace(charstring)	unsigned char *	charstring    CODE:	unsigned char *s = charstring;	unsigned char *e = s + PL_na;	/* "PL_na" set by typemap side effect */	for (RETVAL = 1; RETVAL && s < e; s++)	    if (!isspace(*s))		RETVAL = 0;    OUTPUT:	RETVALintisupper(charstring)	unsigned char *	charstring    CODE:	unsigned char *s = charstring;	unsigned char *e = s + PL_na;	/* "PL_na" set by typemap side effect */	for (RETVAL = 1; RETVAL && s < e; s++)	    if (!isupper(*s))		RETVAL = 0;    OUTPUT:	RETVALintisxdigit(charstring)	unsigned char *	charstring    CODE:	unsigned char *s = charstring;	unsigned char *e = s + PL_na;	/* "PL_na" set by typemap side effect */	for (RETVAL = 1; RETVAL && s < e; s++)	    if (!isxdigit(*s))		RETVAL = 0;    OUTPUT:	RETVALSysRetopen(filename, flags = O_RDONLY, mode = 0666)	char *		filename	int		flags	Mode_t		mode    CODE:	if (flags & (O_APPEND|O_CREAT|O_TRUNC|O_RDWR|O_WRONLY|O_EXCL))	    TAINT_PROPER("open");	RETVAL = open(filename, flags, mode);    OUTPUT:	RETVALHV *localeconv()    CODE:#ifdef HAS_LOCALECONV	struct lconv *lcbuf;	RETVAL = newHV();	if ((lcbuf = localeconv())) {	    /* the strings */	    if (lcbuf->decimal_point && *lcbuf->decimal_point)		hv_store(RETVAL, "decimal_point", 13,		    newSVpv(lcbuf->decimal_point, 0), 0);	    if (lcbuf->thousands_sep && *lcbuf->thousands_sep)		hv_store(RETVAL, "thousands_sep", 13,		    newSVpv(lcbuf->thousands_sep, 0), 0);#ifndef NO_LOCALECONV_GROUPING	    if (lcbuf->grouping && *lcbuf->grouping)		hv_store(RETVAL, "grouping", 8,		    newSVpv(lcbuf->grouping, 0), 0);#endif	    if (lcbuf->int_curr_symbol && *lcbuf->int_curr_symbol)		hv_store(RETVAL, "int_curr_symbol", 15,		    newSVpv(lcbuf->int_curr_symbol, 0), 0);	    if (lcbuf->currency_symbol && *lcbuf->currency_symbol)		hv_store(RETVAL, "currency_symbol", 15,		    newSVpv(lcbuf->currency_symbol, 0), 0);	    if (lcbuf->mon_decimal_point && *lcbuf->mon_decimal_point)		hv_store(RETVAL, "mon_decimal_point", 17,		    newSVpv(lcbuf->mon_decimal_point, 0), 0);#ifndef NO_LOCALECONV_MON_THOUSANDS_SEP	    if (lcbuf->mon_thousands_sep && *lcbuf->mon_thousands_sep)		hv_store(RETVAL, "mon_thousands_sep", 17,		    newSVpv(lcbuf->mon_thousands_sep, 0), 0);#endif                    #ifndef NO_LOCALECONV_MON_GROUPING	    if (lcbuf->mon_grouping && *lcbuf->mon_grouping)		hv_store(RETVAL, "mon_grouping", 12,		    newSVpv(lcbuf->mon_grouping, 0), 0);#endif	    if (lcbuf->positive_sign && *lcbuf->positive_sign)		hv_store(RETVAL, "positive_sign", 13,		    newSVpv(lcbuf->positive_sign, 0), 0);	    if (lcbuf->negative_sign && *lcbuf->negative_sign)		hv_store(RETVAL, "negative_sign", 13,		    newSVpv(lcbuf->negative_sign, 0), 0);	    /* the integers */	    if (lcbuf->int_frac_digits != CHAR_MAX)		hv_store(RETVAL, "int_frac_digits", 15,		    newSViv(lcbuf->int_frac_digits), 0);	    if (lcbuf->frac_digits != CHAR_MAX)		hv_store(RETVAL, "frac_digits", 11,		    newSViv(lcbuf->frac_digits), 0);	    if (lcbuf->p_cs_precedes != CHAR_MAX)		hv_store(RETVAL, "p_cs_precedes", 13,		    newSViv(lcbuf->p_cs_precedes), 0);	    if (lcbuf->p_sep_by_space != CHAR_MAX)		hv_store(RETVAL, "p_sep_by_space", 14,		    newSViv(lcbuf->p_sep_by_space), 0);	    if (lcbuf->n_cs_precedes != CHAR_MAX)		hv_store(RETVAL, "n_cs_precedes", 1

⌨️ 快捷键说明

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