summaryrefslogtreecommitdiffstats
path: root/src/enca.c
diff options
context:
space:
mode:
authorSuren A. Chilingaryan <csa@dside.dyndns.org>2005-06-28 23:44:19 +0000
committerSuren A. Chilingaryan <csa@dside.dyndns.org>2005-06-28 23:44:19 +0000
commit081011f386915bd037a3569e46ed5e4f10c490da (patch)
tree6365a5bd41cf85b8eeb1db12740888da8f5926f8 /src/enca.c
parentc60519ab50b32dc282b385b3bbb2df319279f655 (diff)
downloadlibrcc-081011f386915bd037a3569e46ed5e4f10c490da.tar.gz
librcc-081011f386915bd037a3569e46ed5e4f10c490da.tar.bz2
librcc-081011f386915bd037a3569e46ed5e4f10c490da.tar.xz
librcc-081011f386915bd037a3569e46ed5e4f10c490da.zip
29.06.2005
Diffstat (limited to 'src/enca.c')
-rw-r--r--src/enca.c173
1 files changed, 0 insertions, 173 deletions
diff --git a/src/enca.c b/src/enca.c
deleted file mode 100644
index 0bb4470..0000000
--- a/src/enca.c
+++ /dev/null
@@ -1,173 +0,0 @@
-#include <stdio.h>
-
-#include "internal.h"
-#include "plugin.h"
-#include "engine.h"
-#include "config.h"
-
-#include "enca.h"
-#ifdef RCC_ENCA_DYNAMIC
-# include "fake_enca.h"
-#endif /* RCC_ENCA_DYNAMIC */
-
-static rcc_library_handle enca_handle = NULL;
-static rcc_engine *enca_engines = NULL;
-
-rcc_engine_internal rccEncaInitContext(rcc_engine_context ctx) {
-#ifdef RCC_ENCA_SUPPORT
- EncaAnalyser enca;
-
- if ((!ctx)||(!ctx->language)) return NULL;
-
- enca = enca_analyser_alloc(ctx->language->sn);
- if (!enca) return NULL;
-
- enca_set_threshold(enca, 1);
- enca_set_multibyte(enca, 1);
- enca_set_ambiguity(enca, 1);
- enca_set_garbage_test(enca, 0);
- enca_set_filtering(enca, 0);
- enca_set_significant(enca,1);
- enca_set_termination_strictness(enca,0);
-
- return (rcc_engine_internal)enca;
-#else /* RCC_ENCA_SUPPORT */
- return NULL;
-#endif /* RCC_ENCA_SUPPORT */
-}
-
-void rccEncaFreeContext(rcc_engine_context ctx) {
- rcc_engine_internal internal;
-#ifdef RCC_ENCA_SUPPORT
- internal = rccEngineGetInternal(ctx);
- if (internal)
- enca_analyser_free(internal);
-#endif /* RCC_ENCA_SUPPORT */
-}
-
-rcc_charset_id rccEnca(rcc_engine_context ctx, char *buf, int len) {
-#ifdef RCC_ENCA_SUPPORT
- rcc_engine_internal internal;
- const char *charset;
- EncaEncoding ee;
-
- internal = rccEngineGetInternal(ctx);
- if ((!internal)||(!buf)) return -1;
-
-
- len = STRLEN(buf, len);
-
- ee = enca_analyse_const((EncaAnalyser)ctx->internal,buf,len);
- if (ee.charset<0) return -1;
-
- charset = enca_charset_name(ee.charset, ENCA_NAME_STYLE_ICONV);
- return rccGetAutoCharsetByName(ctx->ctx, charset);
-#else /* RCC_ENCA_SUPPORT */
- return -1;
-#endif /* RCC_ENCA_SUPPORT */
-}
-
-rcc_engine rcc_enca_engine = {
- "Enca Library", &rccEncaInitContext, &rccEncaFreeContext, &rccEnca, {"UTF-8", NULL}
-};
-
-
-static int rccEncaLibraryLoad() {
-#ifdef RCC_ENCA_DYNAMIC
- if (enca_handle) return 0;
-
- enca_handle = rccLibraryOpen(RCC_ENCA_LIB);
- if (!enca_handle) return -1;
-
- enca_set_multibyte=rccLibraryFind(enca_handle,"enca_set_multibyte");
- enca_set_interpreted_surfaces=rccLibraryFind(enca_handle,"enca_set_interpreted_surfaces");
- enca_set_ambiguity=rccLibraryFind(enca_handle,"enca_set_ambiguity");
- enca_set_filtering=rccLibraryFind(enca_handle,"enca_set_filtering");
- enca_set_garbage_test=rccLibraryFind(enca_handle,"enca_set_garbage_test");
- enca_set_termination_strictness=rccLibraryFind(enca_handle,"enca_set_termination_strictness");
- enca_set_significant=rccLibraryFind(enca_handle,"enca_set_significant");
- enca_set_threshold=rccLibraryFind(enca_handle,"enca_set_threshold");
- enca_charset_name=rccLibraryFind(enca_handle,"enca_charset_name");
- enca_get_language_charsets=rccLibraryFind(enca_handle,"enca_get_language_charsets");
- enca_analyser_alloc=rccLibraryFind(enca_handle,"enca_analyser_alloc");
- enca_analyser_free=rccLibraryFind(enca_handle,"enca_analyser_free");
- enca_analyse_const=rccLibraryFind(enca_handle,"enca_analyse_const");
-
- if ((!enca_set_multibyte)||(!enca_set_interpreted_surfaces)||(!enca_set_ambiguity)||
- (!enca_set_filtering)||(!enca_set_garbage_test)||(!enca_set_termination_strictness)||
- (!enca_set_significant)||(!enca_set_threshold)||(!enca_charset_name)||
- (!enca_get_language_charsets)||(!enca_analyser_alloc)||(!enca_analyser_free)||
- (!enca_analyse_const)) {
- rccLibraryClose(enca_handle);
- enca_handle = NULL;
-# ifdef RCC_DEBUG
- perror( "rccEnca. Incomplete function set in library" );
-# endif /* RCC_DEBUG */
- }
-
-#endif /* RCC_ENCA_DYNAMIC */
- return 0;
-}
-
-static void rccEncaLibraryUnload() {
-#ifdef RCC_ENCA_DYNAMIC
- if (enca_handle) {
- rccLibraryUnload(enca_handle);
- enca_handle = NULL;
- }
-#endif /* RCC_ENCA_DYNAMIC */
-}
-
-int rccEncaInit() {
- int err;
- unsigned int i,j,k,l;
-
- rcc_engine **engines;
-
- int *charsets;
- size_t n_charsets;
-
-#ifdef RCC_ENCA_SUPPORT
- if (enca_engines) return -1;
- for (i=0;rcc_default_languages[i].sn;i++);
- enca_engines = (rcc_engine*)malloc(i*sizeof(rcc_engine));
- if (!enca_engines) return -1;
-
- err = rccEncaLibraryLoad();
- if (err) return err;
-
- for (i=0;rcc_default_languages[i].sn;i++) {
- engines = rcc_default_languages[i].engines;
- for (j=0;engines[j];j++)
- if (j >= RCC_MAX_ENGINES) continue;
-
- charsets = enca_get_language_charsets(rcc_default_languages[i].sn, &n_charsets);
- if (charsets) {
- memcpy(enca_engines+i, &rcc_enca_engine, sizeof(rcc_engine));
- for (k=0;enca_engines[i].charsets[k];k++);
- if (n_charsets+k>=RCC_MAX_CHARSETS) n_charsets = RCC_MAX_CHARSETS-k;
-
- for (l=0;l<n_charsets;l++)
- enca_engines[j].charsets[k++] = enca_charset_name(charsets[l], ENCA_NAME_STYLE_ICONV);
- enca_engines[j].charsets[k] = NULL;
-
- engines[j] = enca_engines + i;
- engines[j+1] = NULL;
-
- free(charsets);
- }
- }
-#endif /* RCC_ENCA_SUPPORT */
-
- return 0;
-}
-
-void rccEncaFree() {
-#ifdef RCC_ENCA_SUPPORT
- rccEncaLibraryUnload();
- if (enca_engines) {
- free(enca_engines);
- enca_engines = NULL;
- }
-#endif /* RCC_ENCA_SUPPORT */
-}