diff options
Diffstat (limited to 'src/cr-enc-handler.c')
-rw-r--r-- | src/cr-enc-handler.c | 175 |
1 files changed, 79 insertions, 96 deletions
diff --git a/src/cr-enc-handler.c b/src/cr-enc-handler.c index 4789aa5..216ca47 100644 --- a/src/cr-enc-handler.c +++ b/src/cr-enc-handler.c @@ -29,54 +29,49 @@ *The definition of the #CREncHandler class. */ - #include "cr-enc-handler.h" #include "cr-utils.h" #include <string.h> struct CREncAlias { - const gchar * name ; - enum CREncoding encoding ; -} ; - -static struct CREncAlias gv_default_aliases[] = -{ - {"UTF-8", CR_UTF_8}, - {"UTF_8", CR_UTF_8}, - {"UTF8", CR_UTF_8}, - {"UTF-16", CR_UTF_16}, - {"UTF_16", CR_UTF_16}, - {"UTF16", CR_UTF_16}, - {"UCS1", CR_UCS_1}, - {"UCS-1", CR_UCS_1}, - {"UCS_1", CR_UCS_1}, - {"ISO-8859-1", CR_UCS_1}, - {"ISO_8859-1", CR_UCS_1}, - {"UCS-1", CR_UCS_1}, - {"UCS_1", CR_UCS_1}, - {"UCS4", CR_UCS_4}, - {"UCS-4", CR_UCS_4}, - {"UCS_4", CR_UCS_4}, - {"ASCII", CR_ASCII}, - {0, 0} -} ; - - -static CREncHandler gv_default_enc_handlers[] = -{ - {CR_UCS_1, cr_utils_ucs1_to_utf8, cr_utils_utf8_to_ucs1, - cr_utils_ucs1_str_len_as_utf8, cr_utils_utf8_str_len_as_ucs1}, + const gchar *name; + enum CREncoding encoding; +}; + +static struct CREncAlias gv_default_aliases[] = { + {"UTF-8", CR_UTF_8}, + {"UTF_8", CR_UTF_8}, + {"UTF8", CR_UTF_8}, + {"UTF-16", CR_UTF_16}, + {"UTF_16", CR_UTF_16}, + {"UTF16", CR_UTF_16}, + {"UCS1", CR_UCS_1}, + {"UCS-1", CR_UCS_1}, + {"UCS_1", CR_UCS_1}, + {"ISO-8859-1", CR_UCS_1}, + {"ISO_8859-1", CR_UCS_1}, + {"UCS-1", CR_UCS_1}, + {"UCS_1", CR_UCS_1}, + {"UCS4", CR_UCS_4}, + {"UCS-4", CR_UCS_4}, + {"UCS_4", CR_UCS_4}, + {"ASCII", CR_ASCII}, + {0, 0} +}; + +static CREncHandler gv_default_enc_handlers[] = { + {CR_UCS_1, cr_utils_ucs1_to_utf8, cr_utils_utf8_to_ucs1, + cr_utils_ucs1_str_len_as_utf8, cr_utils_utf8_str_len_as_ucs1}, {CR_ISO_8859_1, cr_utils_ucs1_to_utf8, cr_utils_utf8_to_ucs1, - cr_utils_ucs1_str_len_as_utf8, cr_utils_utf8_str_len_as_ucs1}, + cr_utils_ucs1_str_len_as_utf8, cr_utils_utf8_str_len_as_ucs1}, {CR_ASCII, cr_utils_ucs1_to_utf8, cr_utils_utf8_to_ucs1, cr_utils_ucs1_str_len_as_utf8, cr_utils_utf8_str_len_as_ucs1}, {0, NULL, NULL, NULL, NULL} -} ; - +}; /** *Gets the instance of encoding handler. @@ -87,22 +82,18 @@ static CREncHandler gv_default_enc_handlers[] = CREncHandler * cr_enc_handler_get_instance (enum CREncoding a_enc) { - gulong i = 0 ; - - for (i = 0 ;gv_default_enc_handlers[i].encoding ; i++) - { - if (gv_default_enc_handlers[i].encoding == a_enc) - { - return - (CREncHandler *) - &gv_default_enc_handlers[i].encoding ; + gulong i = 0; + + for (i = 0; gv_default_enc_handlers[i].encoding; i++) { + if (gv_default_enc_handlers[i].encoding == a_enc) { + return (CREncHandler *) + & gv_default_enc_handlers[i].encoding; } } - return NULL ; + return NULL; } - /** *Given an encoding name (called an alias name) *the function returns the matching encoding type. @@ -112,31 +103,28 @@ cr_enc_handler_get_instance (enum CREncoding a_enc) *@return CR_OK upon successfull completion, an error code otherwise. */ enum CRStatus -cr_enc_handler_resolve_enc_alias (const guchar *a_alias_name, - enum CREncoding *a_enc) +cr_enc_handler_resolve_enc_alias (const guchar * a_alias_name, + enum CREncoding *a_enc) { - gulong i = 0 ; - guchar * alias_name_up = NULL ; - enum CRStatus status = CR_ENCODING_NOT_FOUND_ERROR ; - - g_return_val_if_fail (a_alias_name != NULL, CR_BAD_PARAM_ERROR) ; - - alias_name_up = g_strdup (a_alias_name) ; - g_ascii_strup (alias_name_up, -1) ; - - for (i = 0 ; gv_default_aliases[i].name ; i++) - { - if (!strcmp (gv_default_aliases[i].name, alias_name_up)) - { - *a_enc = gv_default_aliases[i].encoding ; - status = CR_OK ; - break ; - } - } - - return status ; -} + gulong i = 0; + guchar *alias_name_up = NULL; + enum CRStatus status = CR_ENCODING_NOT_FOUND_ERROR; + + g_return_val_if_fail (a_alias_name != NULL, CR_BAD_PARAM_ERROR); + + alias_name_up = g_strdup (a_alias_name); + g_ascii_strup (alias_name_up, -1); + + for (i = 0; gv_default_aliases[i].name; i++) { + if (!strcmp (gv_default_aliases[i].name, alias_name_up)) { + *a_enc = gv_default_aliases[i].encoding; + status = CR_OK; + break; + } + } + return status; +} /** *Converts a raw input buffer into an utf8 buffer. @@ -151,44 +139,39 @@ cr_enc_handler_resolve_enc_alias (const guchar *a_alias_name, *@return CR_OK upon successfull completion, an error code otherwise. */ enum CRStatus -cr_enc_handler_convert_input (CREncHandler *a_this, - const guchar *a_in, - gulong *a_in_len, - guchar **a_out, - gulong *a_out_len) +cr_enc_handler_convert_input (CREncHandler * a_this, + const guchar * a_in, + gulong * a_in_len, + guchar ** a_out, gulong * a_out_len) { - enum CRStatus status = CR_OK ; + enum CRStatus status = CR_OK; g_return_val_if_fail (a_this && a_in && a_in_len && a_out, - CR_BAD_PARAM_ERROR) ; + CR_BAD_PARAM_ERROR); - if (a_this->decode_input == NULL) return CR_OK ; + if (a_this->decode_input == NULL) + return CR_OK; - if (a_this->enc_str_len_as_utf8) - { - status = - a_this->enc_str_len_as_utf8 (a_in, - &a_in[*a_in_len -1], - a_out_len) ; + if (a_this->enc_str_len_as_utf8) { + status = a_this->enc_str_len_as_utf8 (a_in, + &a_in[*a_in_len - 1], + a_out_len); - g_return_val_if_fail (status == CR_OK, status) ; - } - else - { - *a_out_len = *a_in_len ; + g_return_val_if_fail (status == CR_OK, status); + } else { + *a_out_len = *a_in_len; } - *a_out = g_malloc0 (*a_out_len) ; + *a_out = g_malloc0 (*a_out_len); - status = a_this->decode_input (a_in, a_in_len, *a_out, a_out_len) ; + status = a_this->decode_input (a_in, a_in_len, *a_out, a_out_len); - if (status != CR_OK) - { - g_free (*a_out) ; - *a_out = NULL ; + if (status != CR_OK) { + g_free (*a_out); + *a_out = NULL; } - g_return_val_if_fail (status == CR_OK, status) ; + g_return_val_if_fail (status == CR_OK, status); - return CR_OK ; + return CR_OK; } |