summaryrefslogtreecommitdiffstats
path: root/src/lngconfig.c
diff options
context:
space:
mode:
authorSuren A. Chilingaryan <csa@dside.dyndns.org>2005-07-18 15:22:28 +0000
committerSuren A. Chilingaryan <csa@dside.dyndns.org>2005-07-18 15:22:28 +0000
commit537c4b33fdf6e143243d5a0d286eeb247362e806 (patch)
treed8a94cfaa4a71ffc826b7d8176c54445369539f3 /src/lngconfig.c
parent4032f92867e5570f130e4175b3b4fb61240f9752 (diff)
downloadlibrcc-537c4b33fdf6e143243d5a0d286eeb247362e806.tar.gz
librcc-537c4b33fdf6e143243d5a0d286eeb247362e806.tar.bz2
librcc-537c4b33fdf6e143243d5a0d286eeb247362e806.tar.xz
librcc-537c4b33fdf6e143243d5a0d286eeb247362e806.zip
API Improvements
- Removed 'rlen' return parameters there not necessary for multibyte encodings - Two versions of recode functions: rccRecode -> rccRecode, rccSizedRecode - Class Types: CONST, SKIP_SAVELOAD - New recode functions: rccToCharset, rccFromCharset - More new recode functions: rccRecodeToCharset, rccRecodeFromCharset, rccRecodeCharsets - New function: rccGetCompiledConfiguration - All warnings are fixed - Perform "File Name" search only if there are non ISO8859-1 chars in the name. - Do not copy invalid characters, - skip them. - Fixed error in rccRecode with 'Recoding Cache' switched On. - Strip leading and trailing spaces in rccDB4 get/set
Diffstat (limited to 'src/lngconfig.c')
-rw-r--r--src/lngconfig.c46
1 files changed, 21 insertions, 25 deletions
diff --git a/src/lngconfig.c b/src/lngconfig.c
index 6e42181..5ffdd75 100644
--- a/src/lngconfig.c
+++ b/src/lngconfig.c
@@ -1,4 +1,5 @@
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include "internal.h"
@@ -9,7 +10,7 @@ rcc_engine_ptr rccConfigGetEnginePointer(rcc_language_config config, rcc_engine_
unsigned int i;
rcc_engine_ptr *engines;
- if ((!config)||(!config->language)||(engine_id<0)) return NULL;
+ if ((!config)||(!config->language)) return NULL;
if (engine_id == (rcc_engine_id)-1) return NULL;
engines = config->language->engines;
@@ -28,9 +29,7 @@ rcc_engine_ptr rccConfigCheckEnginePointer(rcc_language_config config, rcc_engin
}
rcc_engine_ptr rccConfigGetCurrentEnginePointer(rcc_language_config config) {
- unsigned int i;
rcc_engine_id engine_id;
- rcc_engine_ptr *engines;
engine_id = rccConfigGetCurrentEngine(config);
if (engine_id == (rcc_engine_id)-1) return NULL;
@@ -48,10 +47,9 @@ rcc_engine_ptr rccConfigCheckCurrentEnginePointer(rcc_language_config config) {
const char *rccConfigGetEngineName(rcc_language_config config, rcc_engine_id engine_id) {
- unsigned int i;
rcc_engine_ptr engine;
- if ((!config)||(!config->language)||(engine_id<-1)) return NULL;
+ if ((!config)||(!config->language)) return NULL;
if (engine_id == (rcc_engine_id)-1) return rcc_engine_nonconfigured;
@@ -65,7 +63,7 @@ const char *rccConfigGetCharsetName(rcc_language_config config, rcc_charset_id c
unsigned int i;
rcc_charset *charsets;
- if ((!config)||(!config->language)||(charset_id<0)) return NULL;
+ if ((!config)||(!config->language)) return NULL;
charsets = config->language->charsets;
@@ -75,13 +73,13 @@ const char *rccConfigGetCharsetName(rcc_language_config config, rcc_charset_id c
return charsets[charset_id];
}
-const char *rccConfigGetAutoCharsetName(rcc_language_config config, rcc_charset_id charset_id) {
+const char *rccConfigGetAutoCharsetName(rcc_language_config config, rcc_autocharset_id charset_id) {
unsigned int i;
rcc_engine_id engine_id;
rcc_charset *charsets;
rcc_engine_ptr *engines;
- if ((!config)||(!config->language)||(charset_id<0)) return NULL;
+ if ((!config)||(!config->language)) return NULL;
engine_id = rccConfigGetCurrentEngine(config);
if (engine_id == (rcc_engine_id)-1) return NULL;
@@ -121,24 +119,24 @@ rcc_charset_id rccConfigGetCharsetByName(rcc_language_config config, const char
return (rcc_charset_id)-1;
}
-rcc_charset_id rccConfigGetAutoCharsetByName(rcc_language_config config, const char *name) {
+rcc_autocharset_id rccConfigGetAutoCharsetByName(rcc_language_config config, const char *name) {
unsigned int i;
rcc_engine_id engine_id;
rcc_charset *charsets;
rcc_engine_ptr *engines;
- if ((!config)||(!config->language)||(!name)) return (rcc_charset_id)-1;
+ if ((!config)||(!config->language)||(!name)) return (rcc_autocharset_id)-1;
engine_id = rccConfigGetCurrentEngine(config);
- if (engine_id == (rcc_engine_id)-1) return (rcc_charset_id)-1;
+ if (engine_id == (rcc_engine_id)-1) return (rcc_autocharset_id)-1;
engines = config->language->engines;
charsets = engines[engine_id]->charsets;
for (i=0;charsets[i];i++)
- if (!strcasecmp(charsets[i],name)) return (rcc_charset_id)i;
+ if (!strcasecmp(charsets[i],name)) return (rcc_autocharset_id)i;
- return (rcc_charset_id)-1;
+ return (rcc_autocharset_id)-1;
}
int rccConfigInit(rcc_language_config config, rcc_context ctx) {
@@ -218,7 +216,6 @@ void rccConfigClear(rcc_language_config config) {
rcc_language_config rccCheckConfig(rcc_context ctx, rcc_language_id language_id) {
rcc_language_id new_language_id;
- int err;
new_language_id = rccGetRealLanguage(ctx, language_id);
if ((new_language_id == (rcc_language_id)-1)||(new_language_id != language_id)) return NULL;
@@ -229,8 +226,6 @@ rcc_language_config rccCheckConfig(rcc_context ctx, rcc_language_id language_id)
}
rcc_language_config rccGetConfig(rcc_context ctx, rcc_language_id language_id) {
- int err;
-
language_id = rccGetRealLanguage(ctx, language_id);
if (language_id == (rcc_language_id)-1) return NULL;
if (!strcasecmp(ctx->languages[language_id]->sn, "off")) return NULL;
@@ -272,7 +267,7 @@ const char *rccConfigGetSelectedEngineName(rcc_language_config config) {
engine_id = rccConfigGetSelectedEngine(config);
if (engine_id == (rcc_engine_id)-1) return rcc_engine_nonconfigured;
- if ((engine_id < 0)||(!config->language)) return NULL;
+ if (!config->language) return NULL;
return rccConfigGetEngineName(config, engine_id);
}
@@ -321,7 +316,6 @@ const char *rccConfigGetSelectedCharsetName(rcc_language_config config, rcc_clas
}
rcc_charset_id rccConfigGetCurrentCharset(rcc_language_config config, rcc_class_id class_id) {
- int err;
unsigned int i;
rcc_charset_id charset_id;
@@ -334,7 +328,6 @@ rcc_charset_id rccConfigGetCurrentCharset(rcc_language_config config, rcc_class_
rcc_class *cl;
- char stmp[RCC_MAX_CHARSET_CHARS + 1];
const char *defvalue;
if ((!config)||(!config->ctx)||(class_id<0)||(class_id>=config->ctx->n_classes)) return -1;
@@ -414,9 +407,7 @@ const char *rccConfigGetCurrentCharsetName(rcc_language_config config, rcc_class
int rccConfigSetEngine(rcc_language_config config, rcc_engine_id engine_id) {
unsigned int i;
- if ((!config)||(!config->language)||(engine_id < -1)) return -1;
-
- config->configured = 1;
+ if ((!config)||(!config->language)) return -1;
if (engine_id != (rcc_engine_id)-1) {
for (i=0;config->language->engines[i];i++);
@@ -428,6 +419,9 @@ int rccConfigSetEngine(rcc_language_config config, rcc_engine_id engine_id) {
config->configure = 1;
config->engine = engine_id;
}
+
+ config->configured = 1;
+
return 0;
}
@@ -448,19 +442,22 @@ int rccConfigSetEngineByName(rcc_language_config config, const char *name) {
int rccConfigSetCharset(rcc_language_config config, rcc_class_id class_id, rcc_charset_id charset_id) {
unsigned int i;
- if ((!config)||(!config->language)||(class_id < 0)||(class_id >= config->ctx->n_classes)||(charset_id<0)) return -1;
+ if ((!config)||(!config->language)||(class_id < 0)||(class_id >= config->ctx->n_classes)) return -1;
- config->configured = 1;
for (i=0;config->language->charsets[i];i++);
if (charset_id >= i) return -1;
if (config->charset[class_id] != charset_id) {
+ if (config->ctx->classes[class_id]->flags&RCC_CLASS_FLAG_CONST) return -1;
+
if (config->ctx->current_config == config) config->ctx->configure = 1;
config->configure = 1;
config->charset[class_id] = charset_id;
}
+ config->configured = 1;
+
return 0;
}
@@ -475,7 +472,6 @@ int rccConfigSetCharsetByName(rcc_language_config config, rcc_class_id class_id,
rcc_charset_id rccConfigGetLocaleCharset(rcc_language_config config, const char *locale_variable) {
const char *lv;
- rcc_charset *charsets;
rcc_language_id language_id;
char stmp[RCC_MAX_CHARSET_CHARS+1];