mirror of
https://gitee.com/beecue/fastbee.git
synced 2025-12-21 18:35:54 +08:00
更新硬件SDK
This commit is contained in:
112
sdk/合宙/air780e/csdk/luatos-soc-2022/thirdparty/iconv/iconv.c
vendored
Normal file
112
sdk/合宙/air780e/csdk/luatos-soc-2022/thirdparty/iconv/iconv.c
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
/**************************************************************************
|
||||
* Copyright (C), AirM2M Tech. Co., Ltd.
|
||||
*
|
||||
* Name: iconv.c
|
||||
* Author: liweiqiang
|
||||
* Version: V0.1
|
||||
* Date: 2013/7/15
|
||||
*
|
||||
* Description:
|
||||
* <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
||||
**************************************************************************/
|
||||
/*
|
||||
@module iconv
|
||||
@summary <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
||||
@version V0.1
|
||||
@data 2021<32><31>12<31><32>13<31><33>
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "iconv.h"
|
||||
#include "prv_iconv.h"
|
||||
|
||||
typedef struct builtin_iconv_map_tag
|
||||
{
|
||||
const char *from;
|
||||
const char *to;
|
||||
const iconv_fct fct;
|
||||
}builtin_iconv_map;
|
||||
|
||||
static const builtin_iconv_map iconv_map[] =
|
||||
{
|
||||
{"ucs2", "gb2312", iconv_ucs2_to_gb2312},
|
||||
/*+\NEW\liweiqiang\2013.11.26\<5C><><EFBFBD><EFBFBD>gb2312<->ucs2(ucs2be)<29><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>*/
|
||||
{"ucs2be", "gb2312", iconv_ucs2be_to_gb2312},
|
||||
{"gb2312", "ucs2", iconv_gb2312_to_ucs2},
|
||||
{"gb2312", "ucs2be", iconv_gb2312_to_ucs2be},
|
||||
/*-\NEW\liweiqiang\2013.11.26\<5C><><EFBFBD><EFBFBD>gb2312<->ucs2(ucs2be)<29><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>*/
|
||||
/*+\NEW\liweiqiang\2013.7.19\<5C><><EFBFBD><EFBFBD>utf8<->ucs2,ucs2be<62><65><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>*/
|
||||
{"utf8", "ucs2", iconv_utf8_to_ucs2},
|
||||
{"utf8", "ucs2be", iconv_utf8_to_ucs2be},
|
||||
{"ucs2", "utf8", iconv_ucs2_to_utf8},
|
||||
{"ucs2be", "utf8", iconv_ucs2be_to_utf8},
|
||||
/*-\NEW\liweiqiang\2013.7.19\<5C><><EFBFBD><EFBFBD>utf8<->ucs2,ucs2be<62><65><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>*/
|
||||
};
|
||||
|
||||
/*
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@function iconv.open(tocode, fromcode)
|
||||
@string tocode$Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ$gb2312/ucs2/ucs2be/utf8
|
||||
@string fromcode$Դ<><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ$gb2312/ucs2/ucs2be/utf8
|
||||
@return table$cd$<24><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>$
|
||||
@usage
|
||||
--unicode<64><65><EFBFBD>˱<EFBFBD><CBB1><EFBFBD> ת<><D7AA>Ϊ utf8<66><38><EFBFBD><EFBFBD>
|
||||
local cd = iconv.open("utf8", "ucs2be")
|
||||
*/
|
||||
iconv_t iconv_open (const char * to_code, const char * from_code)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
for(i = 0; i < sizeof(iconv_map)/sizeof(iconv_map[0]); i++)
|
||||
{
|
||||
if(strcmp(iconv_map[i].from, from_code) == 0 &&
|
||||
strcmp(iconv_map[i].to, to_code) == 0)
|
||||
{
|
||||
return (iconv_t)&iconv_map[i];
|
||||
}
|
||||
}
|
||||
|
||||
return (iconv_t)-1;
|
||||
}
|
||||
|
||||
/*
|
||||
<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
|
||||
@function cd:iconv(inbuf)
|
||||
@string inbuf$<24><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>$<24><><EFBFBD><EFBFBD>:ucs2s
|
||||
@return number$result$<24><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>$0<>ɹ<EFBFBD>,-1ʧ<31><CAA7>
|
||||
@usage
|
||||
--unicode<64><65><EFBFBD>˱<EFBFBD><CBB1><EFBFBD> ת<><D7AA>Ϊ utf8<66><38><EFBFBD><EFBFBD>
|
||||
function ucs2beToUtf8(ucs2s)
|
||||
local cd = iconv.open("utf8", "ucs2be")
|
||||
return cd:iconv(ucs2s)
|
||||
end
|
||||
*/
|
||||
size_t iconv_convert (iconv_t __cd, char ** __inbuf, size_t * __inbytesleft, char ** __outbuf, size_t * __outbytesleft)
|
||||
{
|
||||
builtin_iconv_map *_map_cd = (builtin_iconv_map *)__cd;
|
||||
|
||||
if(__inbuf == NULL || *__inbuf == NULL)
|
||||
return (size_t)-1;
|
||||
|
||||
if(_map_cd < &iconv_map[0] &&
|
||||
_map_cd > &iconv_map[sizeof(iconv_map)/sizeof(iconv_map[0])])
|
||||
return (size_t)-1;
|
||||
|
||||
return _map_cd->fct(__inbuf, __inbytesleft, __outbuf, __outbytesleft);
|
||||
}
|
||||
|
||||
/*
|
||||
<EFBFBD>ر<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
|
||||
@function iconv.close(cd)
|
||||
@string cd$iconv.open<65><6E><EFBFBD>صľ<D8B5><C4BE><EFBFBD>$
|
||||
@return
|
||||
@usage
|
||||
--<2D>ر<EFBFBD><D8B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
||||
local cd = iconv.open("utf8", "ucs2be")
|
||||
iconv.close(cd)
|
||||
*/
|
||||
int iconv_close (iconv_t cd)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user