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

📄 nkf.xs

📁 NKF是网络上写新闻或邮件的时候,汉字的编码转换程序
💻 XS
字号:
#ifdef __cplusplusextern "C" {#endif#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#ifdef __cplusplus}#endif/* we never use getc, ungetc */#undef getc#undef ungetc#define getc(f)   	(input_ctr>i_len?-1:input[input_ctr++])#define ungetc(c,f)	input_ctr--#define INCSIZE		32#undef putchar#undef TRUE#undef FALSE#define putchar(c)	nkf_putchar(c)static unsigned char *output;static unsigned char *input;static STRLEN input_ctr;static STRLEN i_len;static STRLEN output_ctr;static STRLEN o_len;static STRLEN incsize;int nkf_putchar(unsigned int c);SV *result;intnkf_putchar(unsigned int c) {    if(output_ctr>=o_len) {	o_len += incsize;        SvGROW(result, o_len);	incsize *= 2;	output = SvPVX(result);    }    return output[output_ctr++] = c;}#define PERL_XS 1#include "../nkf.c"MODULE = NKF		PACKAGE = NKF		SV *nkf(...)    PROTOTYPE: @    PREINIT:    SV* sv;    SV* last;    char **argv;    char *cp;    char *data;    STRLEN cplen,rlen;    int i,argc;    CODE:    reinit();    for (i=0;SvOK(ST(i));i++);    argc = i-1;    for (i=0;i<argc;i++) {        sv = ST(i);        cp = SvPV(sv,cplen);        if(*cp != '-') continue;	arguments(cp);    }    data = SvPV(ST(argc),i_len);    input_ctr = 0;    if(iso8859_f && (oconv != j_oconv || !x0201_f )) {	iso8859_f = FALSE;    }     /* allocate a result buffer */    incsize = INCSIZE;    rlen = i_len+INCSIZE;    result = newSV(rlen);    input  = data;    output = SvPVX(result);    o_len = rlen;    output_ctr = 0;    kanji_convert(NULL);    nkf_putchar(0);    RETVAL = result;    SvPOK_on(RETVAL);           SvCUR_set(RETVAL, strlen(output));    OUTPUT:    RETVAL

⌨️ 快捷键说明

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