From 50aa5cd62ef4a66da41d68f4a50ddfca97863c38 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Wed, 3 Aug 2005 18:24:08 +0000 Subject: Multithreading - Multithreaded access to recoding functions using same context - Engine plugin to select between UTF-8 and ISO8859-1 for Western European Languages - Fix: 'rccTo' converting FS classes - FS class support in 'rccConfigSizedToCharset' --- engines/western.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 engines/western.c (limited to 'engines/western.c') diff --git a/engines/western.c b/engines/western.c new file mode 100644 index 0000000..4c6e1aa --- /dev/null +++ b/engines/western.c @@ -0,0 +1,72 @@ +#include +#include + +#include + +#define bit(i) (1<0) { + if ((buf[i]&0xC0)==0x80) { + if (rflag) { + // Western is 0x100-0x17e + res++; + } + bytes--; + } else { + res--; + bytes=1-bytes; + rflag=0; + } + } else { + for (j=6;j>=0;j--) + if ((buf[i]&bit(j))==0) break; + + if ((j==0)||(j==6)) { + if ((j==6)&&(bytes<0)) bytes++; + else res--; + continue; + } + bytes=6-j; + if (bytes==1) { + // Western Languages (C2-C3) + if (buf[i]==0xC2) rflag=1; + else if (buf[i]==0xC3) rflag=2; + } + } + + if ((buf[i]==0xC0)||(buf[i]==0xC1)) { + if (i+1==len) break; + + } + } + + if (res > 0) return (rcc_autocharset_id)0; + return (rcc_autocharset_id)1; +} + +static rcc_engine western_engine = { + "Western", NULL, NULL, &AutoengineWestern, {"UTF-8","ISO8859-1", NULL} +}; + +rcc_engine *rccGetInfo(const char *lang) { + if (!lang) return NULL; + + return &western_engine; +} -- cgit v1.2.3