/* 
 * ===  FUNCTION  ======================================================================
 *         Name:  print_server_info
 *  Description:  提取中文信息并打印输出
 * =====================================================================================
 */
void 
print_server_info (const uint8_t *packet)
{
    char            msg_buf[1024];
    char            *msg;
    uint16_t        msg_length;
    uint16_t        empty_length;
    uint16_t        account_info_offset;

    msg_length = ntohs(*(uint16_t*)(packet + 0x1a));
    empty_length = ntohs(*(uint16_t*)(packet + 0x1c + msg_length + 0x04));
    account_info_offset = 0x1c + msg_length + 0x06 + empty_length + 0x12 + 0x09;

    /* success和failure报文系统信息的固定位置 */
    if (msg_length) {
        msg = (char*)(packet + 0x1c);
        code_convert ("gb2312", "utf-8", 
                    msg, msg_length,
                    msg_buf, 1024);
        fprintf (stdout, ">>Server Message: %s\n", msg_buf);
    }

    /* success报文关于用户账户信息 */
    if (0x1a48 == ntohs(*(uint16_t*)(packet + account_info_offset))) {
        msg_length = *(uint8_t*)(packet + account_info_offset + 0x07);
        msg = (char*)(packet + account_info_offset + 0x08);
        code_convert ("gb2312", "utf-8", 
                    msg, msg_length,
                    msg_buf, 1024);
        fprintf (stdout, ">>Account Info: %s\n", msg_buf);
    }
}
Example #2
0
int discuzupdateemail(char* userid, char* email, time_t firstlogin)
{
    // update email and first login time after first register
    char sqlbuf[512];
    char useridutf8[22];  //21 is the longest utf8 length

    MYSQL *mysql = NULL;

    mysql = mysql_init(mysql);
    mysql = mysql_real_connect(mysql,"localhost",SQLUSER,SQLPASSWD,SQLDB,0, NULL,0);
    if(!mysql) {
        writesyslog(ERRORLOG, "Can not open database!\n Please contact SYSOP\n");
        return -1;
    }
    mysql_query(mysql, "set names utf8");

    if(code_convert("gbk","utf8",userid, strlen(userid),useridutf8,22)== -1)
    {
        char log[256];
        sprintf(log, "Convert username %s error \n", userid);
        writesyslog(ERRORLOG, log);
        return -1;
    }
    sprintf(sqlbuf, "update pre_common_member set email = '%s', regdate = %ld where username = '******'",
            email, firstlogin, userid);
    mysql_query(mysql, sqlbuf);
    sprintf(sqlbuf, "update pre_ucenter_members set email = '%s', regdate = %ld where username = '******'",
            email, firstlogin, userid);
    mysql_query(mysql, sqlbuf);
    mysql_close(mysql);
    return 0;

}
Example #3
0
value iconv_convert(value inbufVal, value from_charsetVal, value to_charsetVal)
{
	char *from_charset;
	char *to_charset;
	char *inbuf;
	char *outbuf;
	size_t inlen;
	size_t outlen;
	
	from_charset = Val2Str(from_charsetVal);
	to_charset = Val2Str(to_charsetVal);
	inbuf = Val2Str(inbufVal);
	
	inlen = strlen(inbuf);
	outlen = inlen * 4;
	outbuf = (char *)malloc(outlen);
	
	if(code_convert(from_charset,to_charset,inbuf,inlen,outbuf,outlen) == -1)
		return val_null;
	
	inlen = strlen(outbuf);
	char *outData = (char *)malloc(inlen + 1);
	memcpy(outData, outbuf, inlen);
	*(outData + inlen) = 0;
	free(outbuf);
	
	value out = alloc_string(outData);
	return out;
}
Example #4
0
int main(int argc,char *argv[])
{
	char *result_converted=malloc(BUFFER);
	switch (argc){
		case 2:  break;
		case 3:  
				 if(!strcmp(argv[1],"zh_CN"))
				 {
					 strcpy(dest,"en");
					 strcpy(src,argv[1]);
				 }
				 break;
    	default: 
                 break;
                 printf("help:  Gtrans [input language 'en'or'zh_CN'--default 'en'] ['string']\n");
				 return 0;
	}
    char bu[4096];
    memset(bu, 0, sizeof(bu));
    int i = 0;
    for(i = 1; i< argc; i++){
        strcat(bu, argv[i]);
        strcat(bu, " ");
    }
	translate_engine(bu);
	code_convert("gb2312","utf-8",result,strlen(result),result_converted,BUFFER);
	//printf("%s\n",result_converted);
	return 0;
}
/* 
 * ===  FUNCTION  ======================================================================
 *         Name:  print_server_info
 *  Description:  提取中文信息并打印输出
 * =====================================================================================
 */
void 
print_server_info (const uint8_t *packet, u_int packetlength,
                    enum EAPType pack_type)
{
    char            msg_buf[1024];
    size_t          msg_len;
    char            *msg;

    if (pack_type == RUIJIE_EAPOL_MSG)
        goto RUIJIE_MSG;

    /* success和failure报文系统信息的固定位置 */
    msg_len = ntohs(*(uint16_t*)(packet + 0x1a));
    if (msg_len < 3)
        return;
    msg = (char*)(packet + 0x1c);
    code_convert ("gb2312", "utf-8", 
                msg, msg_len,
                msg_buf, 1024);
    fprintf (stdout, ">>Server Message: %s\n", msg_buf);
//    fflush (stderr);

    if (packetlength < 0x110)
        return;

    /* success报文关于用户账户信息的位置 */
    msg_len = *(uint8_t*)(packet + 0x114);
    msg = (char*)(packet + 0x115);
    code_convert ("gb2312", "utf-8", 
                msg, msg_len,
                msg_buf, 1024);
    fprintf (stdout, ">>Account Info: %s\n", msg_buf);
//    fflush (stderr);
    return;
    
    /* 锐捷的通知报文 */
RUIJIE_MSG:;
    msg = (char*)(packet + 0x1b);
    msg_len = strlen (msg);
    code_convert ("gb2312", "utf-8", 
                msg, msg_len,
                msg_buf, 1024);

    fprintf (stdout, ">>Manager Notification: %s\n", msg_buf);
//    fflush (stderr);
}
Example #6
0
char * nd_utf8_to_gbk(const char *input_text, char *output_buf, int size_buf)
{
	int inlen = (int) ndstrlen(input_text) ;
	int ret = code_convert("UTF-8","GBK",(char*)input_text,inlen,output_buf,size_buf);
	if (0==ret) {
		return output_buf ;
	}
	return NULL ;
}
Example #7
0
bool StringTool::u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
	/*
	   UTF-8,GB2312这个要大写????
	   具体可以传递哪些参数可以使用命令iconv --list 查看支持那些编码
	   comment by wangqiguo 2014-4-28
	*/
	return code_convert("UTF-8","GB2312",inbuf,inlen,outbuf,outlen);
}
Example #8
0
//将UTF-8编码转成GB2312
char *EASY_UTIL::Utf8ToGb18030(char *dest,int dest_len,const char*src)
{
	if(0 !=code_convert("UTF-8", "GB18030",(char*)src, strlen(src), dest, 
dest_len))
	{
		return NULL;
	}
	return dest;

}
Example #9
0
//将GB18030编码转成UTF-8:
char *EASY_UTIL::Gb18030ToUtf8(char *dest,int dest_len,const char*src)
{
	//if(0 !=code_convert("utf-8","gb2312", (char*)src, strlen(src), dest, dest_len))
	if(0 !=code_convert("GB18030","UTF-8", (char*)src, strlen(src), dest, 
dest_len))
	{
		return NULL;
	}
	return dest;
}
Example #10
0
	/*GB2312 to UTF8*/
	std::string CharacterConver::a2u(const char *inbuf)
	{
		size_t inlen = strlen(inbuf);
		char * outbuf = new char[inlen * 2 + 2];
		std::string strRet;
		if(code_convert("gb2312", "utf-8", inbuf, inlen, outbuf, inlen * 2 + 2) ==0)
		{
			strRet = outbuf;
		}
		delete[] outbuf;
		return strRet;
	}
Example #11
0
int _tmain(int argc, _TCHAR* argv[])
{
	

	char *inbuf = new char[9999999];
	size_t inlen = 100;
	char *outbuf = new char[9999999];
	size_t outlen = 100;
	memset(inbuf, 0, 100);
	strcpy_s(inbuf,1024, "¹þ¹þ¹þ¹þºÇºÇºÇºÇ°×¶«Éý");
	//cout << "Ô´×Ö·û´®£º" << inbuf << endl;
	printf("%s\n", inbuf);
	code_convert("GBK", "utf-8", inbuf, inlen, outbuf, outlen);
	//cout << "תÂëºó´®£º" << outbuf << endl;
	printf("%s\n", outbuf);
	code_convert("utf-8", "GBK", outbuf, inlen, inbuf, outlen);
	//cout << "Ô´×Ö·û´®£º" << inbuf << endl;

	getchar();
	return 0;

}
Example #12
0
/************************************************
 *  GB2312码转为UTF-8码                         *
 *  成功则返回一个动态分配的byte*变量,         *
 *  需要在使用完毕后手动free,失败返回NULL      *
 ************************************************/
byte * g2u(byte * inbuf)
{
	if ( strlen(inbuf) == 0 )
		return NULL;
	int nOutLen = 2 * strlen(inbuf) - 1;
	byte* szOut = (byte*)malloc(nOutLen);
	//if (FAIL == code_convert("gb2312","utf-8",inbuf,strlen(inbuf),szOut,nOutLen)) {
	if (FAIL == code_convert("gbk","utf-8",inbuf,strlen(inbuf),szOut,nOutLen)) {
		free(szOut);
		szOut = NULL;	
	}
	
	return szOut;
}
Example #13
0
/*GB2312תΪUTF8*/
std::string CSystem::a2u(const char *inbuf)
{
	std::string strRet;
//#ifndef ANDROID
	size_t inlen = strlen(inbuf);
	char * outbuf = new char[inlen * 2 + 2];
	
	if(code_convert("gb2312", "utf-8", inbuf, inlen, outbuf, inlen * 2 + 2) == 0)
	{
		strRet = outbuf;
	}
	delete [] outbuf;
//#endif
	return strRet;
}
Example #14
0
int get_row(struct dirent **entrylist,int n,int minlen)
{
    struct winsize ws;
    ioctl(STDIN_FILENO,TIOCGWINSZ,&ws);
    int ws_col = ws.ws_col,ws_row = ws.ws_row,inlen,outlen,row,col,sum,flag,p,curl,maxlen;
    for (row = 1;row <= n;row++)
    {
        if (row - n % row > 1)
            continue;
        col = (n - 1) / row + 1;
        flag = 0;
        sum = 0;
        for (int i = 0;i < col;i++)
        {
            maxlen = 0;
            for (int j = 0;j < row;j++)
            {
                p = i * row + j;
                if (p >= n)
                    break;
                else
                {
                    inlen = strlen(entrylist[p]->d_name);
                    outlen = 255;
                    char *inbuf = entrylist[p]->d_name;
                    char outbuf[255];
                    code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
                    curl = strlen(outbuf) + 2;
                    if (curl > maxlen)
                        maxlen = curl;
                }
            }
            sum += maxlen;
            if (sum > ws_col)
            {
                flag = 0;
                break;
            }
            else
            {
                flag = 1;
            }
        }
        if (flag == 1)
            break;
    }
    return row;
}
Example #15
0
int main(int argc, char** argv)
{
	int		nRetCode = -1;
	char* 	szInBuf = NULL;
	char 	szOutBuf[BUF_SIZE] = "";
	int 	nOutLeft = BUF_SIZE;
	struct stat filestat;
	uint32_t filesize;
	FILE* 	fp = NULL;
	printf("sizeof(size_t)=%d\n", sizeof(size_t) );
	// allocate buffer.
	// int stat(const char* filename, struct stat *buf);
	stat("bbb.csv", &filestat);
	filesize = filestat.st_size;
	printf("file size=%d\n", filesize);
	szInBuf = (char*)malloc(filesize + 1);
	// load data
	if ( NULL == (fp = fopen("bbb.csv", "r")) )
	{
		printf("open file error\n");
		nRetCode = -1;
		goto ExitError;
	}
	if ( fread(szInBuf, filesize, 1, fp) != 1 )
	{
		printf("read file error\n");
		nRetCode = -1;
		goto ExitError;
	}
	fclose(fp);
	fp = NULL;

	// convert code.
	printf("%s\n", szInBuf);
	if (-1 == code_convert("gbk", szOutBuf, &nOutLeft, "utf8", szInBuf, &filesize) )
	{
		perror("code convert error:");
		nRetCode = -1;
		goto ExitError;
	}
	printf("%s\n", szOutBuf);
	
	nRetCode = 0;
ExitError:
	free(szInBuf);
	szInBuf = NULL;
	return nRetCode;
}
Example #16
0
int encodingtest()//直接setcookies
{
	char buf[256];
	int r;
	r = code_convert(CHARSET, "utf8", STR_ENCODING_TEST, strlen(STR_ENCODING_TEST), buf, sizeof(buf) - 1);
	if (r < 0)
	{
		return -1;//nothing.error.
	}
	if (!strcmp(buf, getparm(STR_ENCODING_NAME)))
	{
		headerCookie(STR_ENCODING_COOKIES, "utf8");
		return 1;//utf!
	}
	return 0;//nothing
}
void
print_notification_msg(const uint8_t *packet)
{
    char            msg_buf[1024];
    size_t          msg_length;
    char            *msg;

    /* 锐捷的通知报文 */
    msg = (char*)(packet + 0x1b);
    msg_length = strlen (msg);
    code_convert ("gb2312", "utf-8", 
                msg, msg_length,
                msg_buf, 1024);

    fprintf (stdout, ">>Manager Notification: %s\n", msg_buf);
}
Example #18
0
	/// @brief	CodeConvert 함수 : 예를 들어 utf-8 -> euckr로 바꿀때 유용 C++ 함수
	///
	/// code 형식을 바꿀 경우 사용한다.
	/// 다른 이유가 없으면 이것을 이용해서 사용한다.
	///
	/// @param sSource		source
	/// @param to_codeset	원시 codeset
	/// @param from_codeset	바꿀 coddset
	/// @return	바뀐 string 데이터
	string CodeConvert(const string& sSource, const char *to_codeset, const char *from_codeset)
	{
		char*	cStr = NULL;
		string	sCodeConvertStr;
	
		#ifdef HAVE_ICONV
		cStr = code_convert((char*)sSource.c_str(), to_codeset, from_codeset);
		#endif
	
		if (cStr != NULL)
		{
			sCodeConvertStr = cStr;
			free(cStr);
		}
		return sCodeConvertStr;
	}
Example #19
0
void print_list(struct dirent **entrylist,int n,int row)
{
    int col = (n - 1) / row + 1,total = 0,curl,inlen,outlen,p;
    int maxlen[col];
    for (int i = 0;i < col;i++)
    {
        curl = 0;
        maxlen[i] = 0;
        for (int j = 0;j < row;j++)
        {
            p = i * row + j;
            if (p >= n)
                break;
            else
            {
                inlen = strlen(entrylist[p]->d_name);
                outlen = 255;
                char *inbuf = entrylist[p]->d_name;
                char outbuf[255];
                code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
                curl = strlen(outbuf) + 2;
                if (curl > maxlen[i])
                    maxlen[i] = curl;
            }
        }
        if (i > 0)
            maxlen[i] += maxlen[i - 1];
    }
    for (int i = 0;i < row;i++)
    {
        for (int j = 0;j < col;j++)
        {
            p = j * row + i;
            if (p >= n)
                break;
            else
            {
               if (j > 0)
                    printf("\033[%dC",maxlen[j - 1]);
                printf("%s  \n",entrylist[p]->d_name);
            }
            printf("\033[%dA",1);
        }
        printf("\033[%dB",1);
    }
}
Example #20
0
int encode_to_mbs(char *dest, int sz, const char *src, int srcsz)
{
	const char *charset = u8_get_sys_charset();
	if (pcs_utils_strcmpi(charset, "utf-8") == 0) {
		if (srcsz == -1) {
			const char *p = src;
			while(*p) {
				p++;
			}
			srcsz = p - src;
		}
		memcpy(dest, src, srcsz);
		return srcsz;
	}
	else {
		return code_convert("utf-8", charset, dest, sz, src, srcsz);
	}
}
Example #21
0
int encode_to_mbs_size(const char *src, int srcsz)
{
	const char *charset = u8_get_sys_charset();
	if (pcs_utils_strcmpi(charset, "utf-8") == 0) {
		if (srcsz == -1) {
			const char *p = src;
			while(*p) {
				p++;
			}
			srcsz = p - src;
		}
		return srcsz;
	}
	else {
		int sz;
		char *dest;
		sz = srcsz * 4 + 4;
		dest = (char *) alloca(sz);
		return code_convert("utf-8", charset, dest, sz, src, srcsz);
	}
}
Example #22
0
void 
print_server_info (const uint8_t *packet, uint16_t packetlength)
{
    const uint8_t *str;
    
    {
        if ( *(packet + 0x2A) == 0x12) {
            str = (packet + 0x2B);
            goto FOUND_STR;
        }
        if (packetlength < 0x42)
            return;
        if ( *(packet + 0x42) == 0x12) {
            str = (packet + 0x43);
            goto FOUND_STR;
        }
        if (packetlength < 0x9A)
            return;
        if ( *(packet + 0x9A) == 0x12) {
            str = (packet + 0x9B);
            goto FOUND_STR;
        }
        if (packetlength < 0x120)
            return;
        if ( *(packet + 0x120) == 0x12) {
            str = (packet + 0x121);
            goto FOUND_STR;
        }
        return;
    }

    FOUND_STR:;

    char info_str [1024] = {0};
    code_convert ("gb2312", "utf-8", (char*)(str + 1), *str, info_str, 1024);
    fprintf (stdout, ">>Server Info: %s\n", info_str);
}
Example #23
0
int g2u(char *inbuf, size_t inlen, char *outbuf, size_t outlen)
{
    return code_convert("gb18030", "utf-8", inbuf, inlen, outbuf, outlen);
}
Example #24
0
//UNICODE码转为GB2312码 
int u2g(char *inbuf,size_t inlen,char *outbuf,size_t outlen) 
{ 
	return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen); 
} 
Example #25
0
// #define WRD_VERBOSE
static void wrdt_apply(int cmd, int wrd_argc, int wrd_args[])
{
    char *p;
    char *text;
    int i, len;
    static txtclr_preserve=0;

	if ( !w32g_wrd_wnd.active ) return;

    switch(cmd)
    {
      case WRD_LYRIC:
	p = wrd_event2string(wrd_args[0]);
	len = strlen(p);
	text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len));

	/*This must be not good thing,but as far as I know no wrd file 
	  written in EUC-JP code found*/

	strcpy(text,p);
#ifdef WRD_VERBOSE
//	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
//		  "[WRD_LYRIC]\n%s", text );
#endif
	putstring_with_esc(text);
	reuse_mblock(&tmpbuffer);
	break;
      case WRD_NL: /* Newline (Ignored) */
		esc_nextline();
//			 putchar('\n');
	break;
      case WRD_COLOR:
/*Compatibility Hack,This remaps color(17-29 color seems 
to be ignored in kterm)*/
	esc_characterattribute(wrd_args[0]);
	break;
      case WRD_END: /* Never call */
	break;
      case WRD_ESC:
	borlandc_esc(wrd_event2string(wrd_args[0]));
	break;
      case WRD_EXEC:
	/*I don't spaun another program*/
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@EXEC(%s)", wrd_event2string(wrd_args[0]));
	break;
      case WRD_FADE:
		  wrd_graphic_fade ( wrd_args[0], wrd_args[1], wrd_args[2] );
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@FADE(%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2]);
#endif
	break;
      case WRD_FADESTEP:
		 wrd_graphic_fadestep ( wrd_args[0] );
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@FADESTEP(%d/%d)", wrd_args[0], WRD_MAXFADESTEP);
#endif
	break;
      case WRD_GCIRCLE:
		wrd_graphic_gcircle ( wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3],
		  wrd_args[4], wrd_args[5] );
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@GCIRCLE(%d,%d,%d,%d,%d,%d)",
		  wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3],
		  wrd_args[4], wrd_args[5]);
	break;
      case WRD_GCLS:
		wrd_graphic_gcls ( wrd_args[0] );
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@GCLS(%d)", wrd_args[0]);
#endif
	break;
      case WRD_GINIT:
		wrd_graphic_ginit ();
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@GINIT()");
#endif
	break;
      case WRD_GLINE:
		wrd_graphic_gline ( wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4],
	       wrd_args[5], wrd_args[6] );
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@GLINE(%d,%d,%d,%d,%d,%d,%d)",
	       wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4],
	       wrd_args[5], wrd_args[6]);
#endif
	break;
      case WRD_GMODE:
		  wrd_graphic_gmode ( wrd_args[0] );
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@GMODE(%d)", wrd_args[0]);
#endif
	break;
      case WRD_GMOVE:
		  wrd_graphic_gmove ( wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4],
	       wrd_args[5], wrd_args[6], wrd_args[7], wrd_args[8] );
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@GMOVE(%d,%d,%d,%d,%d,%d,%d)",
	       wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4],
	       wrd_args[5], wrd_args[6], wrd_args[7], wrd_args[8]);
#endif
	break;
      case WRD_GON:
		wrd_graphic_gon ( wrd_args[0] );
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@GON(%d)", wrd_args[0]);
#endif
	break;
      case WRD_GSCREEN:
		wrd_graphic_gscreen ( wrd_args[0], wrd_args[1] );
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@GSCREEN(%d,%d)", wrd_args[0], wrd_args[1]);
#endif
	break;
      case WRD_INKEY:
	inkey_flag = 1;
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@INKEY - begin");
	break;
      case WRD_OUTKEY:
	inkey_flag = 0;
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@INKEY - end");
	break;
      case WRD_LOCATE:
	{
	int x = wrd_args[0], y = wrd_args[1];
	WrdWndGoto(x-1, y-1);
	}
	break;
      case WRD_LOOP: /* Never call */
	break;
      case WRD_MAG:
		wrd_graphic_mag ( wrd_event2string(wrd_args[0]), wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4]);
#ifdef WRD_VERBOSE
	p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE);
	strcpy(p, "@MAG(");
	strcat(p, wrd_event2string(wrd_args[0]));
	strcat(p, ",");
	for(i = 1; i < 3; i++)
	{
	    if(wrd_args[i] == WRD_NOARG)
		strcat(p, "*,");
	    else
		sprintf(p + strlen(p), "%d,", wrd_args[i]);
	}
	sprintf(p + strlen(p), "%d,%d)", wrd_args[3], wrd_args[4]);
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "%s", p);
	reuse_mblock(&tmpbuffer);
#endif
	break;
      case WRD_MIDI: /* Never call */
	break;
      case WRD_OFFSET: /* Never call */
	break;
      case WRD_PAL:
		wrd_graphic_pal_g4r4b4 (wrd_args[0], wrd_args + 1, 16 );
#ifdef WRD_VERBOSE
	p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE);
	sprintf(p, "@PAL(%03x", wrd_args[0]);
	for(i = 1; i < 17; i++)
	    sprintf(p + strlen(p), ",%03x", wrd_args[i]);
	strcat(p, ")");
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "%s", p);
	reuse_mblock(&tmpbuffer);
#endif
	break;
      case WRD_PALCHG:
		wrd_graphic_apply_pal ( wrd_args[0] );
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@PALCHG(%s)", wrd_event2string(wrd_args[0]));
#endif
	break;
      case WRD_PALREV:
		wrd_graphic_palrev ( wrd_args[0] );
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@PALREV(%d)", wrd_args[0]);
#endif
	break;
      case WRD_PATH:
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@PATH(%s)", wrd_event2string(wrd_args[0]));
	break;
      case WRD_PLOAD:
		wrd_graphic_pload ( wrd_event2string(wrd_args[0]) );
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@PLOAD(%s)", wrd_event2string(wrd_args[0]));
#endif
	break;
      case WRD_REM:
	p = wrd_event2string(wrd_args[0]);
	len = strlen(p);
	text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len));
	code_convert(p, text, SAFE_CONVERT_LENGTH(len), NULL, NULL);
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE, "@REM %s", text);
	reuse_mblock(&tmpbuffer);
	break;
      case WRD_REMARK:
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@REMARK(%s)", wrd_event2string(wrd_args[0]));
	break;
      case WRD_REST: /* Never call */
	break;
      case WRD_SCREEN: /* Not supported */
	break;
      case WRD_SCROLL:
		wrd_text_scroll (wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3],
		  wrd_args[4], wrd_args[5], wrd_args[6]);
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@SCROLL(%d,%d,%d,%d,%d,%d,%d)",
		  wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3],
		  wrd_args[4], wrd_args[5], wrd_args[6]);
#endif
	break;
      case WRD_STARTUP:
		  WrdWndReset ();
	inkey_flag = 0;
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@STARTUP(%d)", wrd_args[0]);
#endif
	esc_clearscreen();
	break;
      case WRD_STOP: /* Never call */
	break;

      case WRD_TCLS:
	{
	  char fillbuf[1024];
	{
	int left = wrd_args[0], right = wrd_args[2];
	int top = wrd_args[1], bottom = wrd_args[3];

	SEIKIX(left);
	SEIKIX(right);
	SEIKIY(top);
	SEIKIY(bottom);
	if(left>right) right = left;
	if(top>bottom) bottom = top;
	memset(fillbuf,wrd_args[5],right-left);/*X2-X1*/
	fillbuf[right-left]=0;
//	borlandc_con_save_attr();
	esc_characterattribute(wrd_args[4]);
	for(i=top;i<=bottom;i++)/*Y1 to Y2*/ {
	  WrdWndGoto(left-1,i-1);
	  putstring(fillbuf);
	}
//	borlandc_con_restore_attr();
	}
	}
	break;
      case WRD_TON:
		wrd_text_ton ( wrd_args[0] );
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "@TON(%d)", wrd_args[0]);
	break;
      case WRD_WAIT: /* Never call */
	break;
      case WRD_WMODE: /* Never call */
	break;

	/* Ensyutsukun */
      case WRD_eFONTM:
	print_ecmd("FONTM", wrd_args, 1);
	break;
      case WRD_eFONTP:
	print_ecmd("FONTP", wrd_args, 4);
	break;
      case WRD_eFONTR:
	print_ecmd("FONTR", wrd_args, 17);
	break;
      case WRD_eGSC:
	print_ecmd("GSC", wrd_args, 1);
	break;
      case WRD_eLINE:
	print_ecmd("LINE", wrd_args, 1);
	break;
      case WRD_ePAL:
	print_ecmd("PAL", wrd_args, 2);
	break;
      case WRD_eREGSAVE:
	print_ecmd("REGSAVE", wrd_args, 17);
	break;
      case WRD_eSCROLL:
	print_ecmd("SCROLL",wrd_args, 2);
	break;
      case WRD_eTEXTDOT:
	print_ecmd("TEXTDOT", wrd_args, 1);
	break;
      case WRD_eTMODE:
	print_ecmd("TMODE", wrd_args, 1);
	break;
      case WRD_eTSCRL:
	print_ecmd("TSCRL", wrd_args, 0);
	break;
      case WRD_eVCOPY:
	print_ecmd("VCOPY", wrd_args, 9);
	break;
      case WRD_eVSGET:
	print_ecmd("VSGE", wrd_args, 4);
	break;
      case WRD_eVSRES:
	print_ecmd("VSRES", wrd_args, 0);
	break;
      case WRD_eXCOPY:
		wrd_graphic_xcopy ( wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6],
			 wrd_args[7], wrd_args[8], wrd_args[9], wrd_args[10], wrd_args[11], wrd_args[12], wrd_args[13] );
	print_ecmd("XCOPY", wrd_args, 14);
	break;
	case WRD_START_SKIP:
		wrd_start_skip ();
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "WRD_START_SKIP");
#endif
		break;
	case WRD_END_SKIP:
		wrd_end_skip ();
#ifdef WRD_VERBOSE
	ctl->cmsg(CMSG_INFO, VERB_VERBOSE,
		  "WRD_END_SKIP");
#endif
		break;

	/* Extensionals */
    }
}
Example #26
0
bool StringTool::g2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen)
{
	return code_convert("GB2312","UTF-8",inbuf,inlen,outbuf,outlen);
}
Example #27
0
// 以下两个函数是字符编码的转换,如果转换成功,传入的地址
// 的内容将会被更新,同时被return返回,否则原先的内容不会
// 被改变,返回NULL
char* utf8_to_gbk(char *strUTF8, int size)
{
    return code_convert(strUTF8, size, "GBK//IGNORE", "UTF-8");
}
Example #28
0
static void wrdt_apply(int cmd, int wrd_argc, int wrd_args[])
{
    char *p;
    char *text;
    int i, len;
    static int txtclr_preserve=0;

#if 0
    if(inkey_flag)
	printf("* ");
#endif
    switch(cmd)
    {
      case WRD_LYRIC:
	p = wrd_event2string(wrd_args[0]);
	len = strlen(p);
	text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len));

	/*This must be not good thing,but as far as I know no wrd file 
	  written in EUC-JP code found*/

	code_convert(p, text, SAFE_CONVERT_LENGTH(len), "SJIS", (char *)-1);
	printf("%s",text);
	fflush(stdout);
	reuse_mblock(&tmpbuffer);
	break;
      case WRD_NL: /* Newline (Ignored) */
	putchar('\n');
	break;
      case WRD_COLOR:
	txtclr_preserve=wrd_args[0];
	if(16 <= txtclr_preserve && txtclr_preserve <= 23)
	    txtclr_preserve = wrd_color_remap[txtclr_preserve - 16] + 30;
	printf("\033[%dm", txtclr_preserve);
	break;
      case WRD_END: /* Never call */
	break;
      case WRD_ESC:
	printf("\033[%s", wrd_event2string(wrd_args[0]));
	break;
      case WRD_EXEC:
	/*I don't spaun another program*/
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@EXEC(%s)", wrd_event2string(wrd_args[0]));
	break;
      case WRD_FADE:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@FADE(%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2]);
	break;
      case WRD_FADESTEP:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@FADESTEP(%d/%d)", wrd_args[0], WRD_MAXFADESTEP);
	break;
      case WRD_GCIRCLE:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@GCIRCLE(%d,%d,%d,%d,%d,%d)",
		  wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3],
		  wrd_args[4], wrd_args[5]);
	break;
      case WRD_GCLS:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@GCLS(%d)", wrd_args[0]);
	break;
      case WRD_GINIT:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GINIT()");
	break;
      case WRD_GLINE:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@GLINE(%d,%d,%d,%d,%d,%d,%d)",
	       wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4],
	       wrd_args[5], wrd_args[6]);
	fflush(stdout);
	break;
      case WRD_GMODE:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@GMODE(%d)", wrd_args[0]);
	break;
      case WRD_GMOVE:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@GMOVE(%d,%d,%d,%d,%d,%d,%d)",
	       wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4],
	       wrd_args[5], wrd_args[6], wrd_args[7], wrd_args[8]);
	break;
      case WRD_GON:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@GON(%d)", wrd_args[0]);
	break;
      case WRD_GSCREEN:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@GSCREEN(%d,%d)", wrd_args[0], wrd_args[1]);
	break;
      case WRD_INKEY:
	inkey_flag = 1;
	ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@INKEY - begin");
	break;
      case WRD_OUTKEY:
	inkey_flag = 0;
	ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@INKEY - end");
	break;
      case WRD_LOCATE:
	printf("\033[%d;%dH", wrd_args[1], wrd_args[0]);
	break;
      case WRD_LOOP: /* Never call */
	break;
      case WRD_MAG:
	p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE);
	strcpy(p, "@MAG(");
	strcat(p, wrd_event2string(wrd_args[0]));
	strcat(p, ",");
	for(i = 1; i < 3; i++)
	{
	    if(wrd_args[i] == WRD_NOARG)
		strcat(p, "*,");
	    else
		sprintf(p + strlen(p), "%d,", wrd_args[i]);
	}
	sprintf(p + strlen(p), "%d,%d)", wrd_args[3], wrd_args[4]);
	ctl->cmsg(CMSG_INFO, VERB_DEBUG, "%s", p);
	reuse_mblock(&tmpbuffer);
	break;
      case WRD_MIDI: /* Never call */
	break;
      case WRD_OFFSET: /* Never call */
	break;
      case WRD_PAL:
	p = (char *)new_segment(&tmpbuffer, MIN_MBLOCK_SIZE);
	sprintf(p, "@PAL(%03x", wrd_args[0]);
	for(i = 1; i < 17; i++)
	    sprintf(p + strlen(p), ",%03x", wrd_args[i]);
	strcat(p, ")");
	ctl->cmsg(CMSG_INFO, VERB_DEBUG, "%s", p);
	reuse_mblock(&tmpbuffer);
	break;
      case WRD_PALCHG:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@PALCHG(%s)", wrd_event2string(wrd_args[0]));
	break;
      case WRD_PALREV:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@PALREV(%d)", wrd_args[0]);
	break;
      case WRD_PATH:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@PATH(%s)", wrd_event2string(wrd_args[0]));
	break;
      case WRD_PLOAD:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@PLOAD(%s)", wrd_event2string(wrd_args[0]));
	break;
      case WRD_REM:
	p = wrd_event2string(wrd_args[0]);
	len = strlen(p);
	text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len));
	code_convert(p, text, SAFE_CONVERT_LENGTH(len), NULL, NULL);
	ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@REM %s", text);
	reuse_mblock(&tmpbuffer);
	break;
      case WRD_REMARK:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@REMARK(%s)", wrd_event2string(wrd_args[0]));
	break;
      case WRD_REST: /* Never call */
	break;
      case WRD_SCREEN: /* Not supported */
	break;
      case WRD_SCROLL:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@SCROLL(%d,%d,%d,%d,%d,%d,%d)",
		  wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3],
		  wrd_args[4], wrd_args[5], wrd_args[6]);
	break;
      case WRD_STARTUP:
	inkey_flag = 0;
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@STARTUP(%d)", wrd_args[0]);
	printf("\033[0m\033[H\033[J");
	fflush(stdout);
	break;
      case WRD_STOP: /* Never call */
	break;

      case WRD_TCLS:
	{
	  char fillbuf[1024];
	  fillbuf[0]=0x1b;
	  fillbuf[1]='7';
	  fillbuf[2]=0;
	  printf(fillbuf);

	  /* 0-7: normal, 8-16: reverse */
	  if(wrd_args[4] <= 7)
	      wrd_args[4] += 30;
	  else
	      wrd_args[4] += 32;
	  printf("\033[%dm",wrd_args[4]);

	  memset(fillbuf,wrd_args[5],wrd_args[2]-wrd_args[0]);/*X2-X1*/
	  fillbuf[wrd_args[2]-wrd_args[0]]=0;
	  for(i=wrd_args[1];i<=wrd_args[3];i++)/*Y1 to Y2*/
	    printf("\033[%d;%dH%s",i,wrd_args[0],fillbuf);/*X1to....*/
	  fillbuf[0]=0x1b;
	  fillbuf[1]='8';
	  fillbuf[2]=0;
	  printf(fillbuf);
	  printf("\033[%dm",txtclr_preserve);
	  fflush(stdout);
	}
#if 0
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@TCLS(%d,%d,%d,%d,%d,%d,%d)",
		  wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3],
		  wrd_args[4], wrd_args[5]);
#endif
	break;
      case WRD_TON:
	ctl->cmsg(CMSG_INFO, VERB_DEBUG,
		  "@TON(%d)", wrd_args[0]);
	break;
      case WRD_WAIT: /* Never call */
	break;
      case WRD_WMODE: /* Never call */
	break;

	/* Ensyutsukun */
      case WRD_eFONTM:
	break;
      case WRD_eFONTP:
	break;
      case WRD_eFONTR:
	break;
      case WRD_eGSC:
	break;
      case WRD_eLINE:
	break;
      case WRD_ePAL:
	break;
      case WRD_eREGSAVE:
	break;
      case WRD_eSCROLL:
	break;
      case WRD_eTEXTDOT:
	break;
      case WRD_eTMODE:
	break;
      case WRD_eTSCRL:
	break;
      case WRD_eVCOPY:
	break;
      case WRD_eVSGET:
	break;
      case WRD_eVSRES:
	break;
      case WRD_eXCOPY:
	break;
      default:
	break;
    }
    wrd_argc = 0;
}
Example #29
0
char* gbk_to_utf8(char *strGBK, int size)
{
    return code_convert(strGBK, size,"UTF-8//IGNORE", "GBK" );
}
Example #30
0
//GB2312ÂëתΪUNICODEÂë
int g2u(char *inbuf, int inlen, char *outbuf, int outlen)
{
    return code_convert("utf-8", "gb2312", inbuf, inlen, outbuf, outlen);
}