summaryrefslogtreecommitdiff
path: root/src/lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.c')
-rw-r--r--src/lib.c142
1 files changed, 56 insertions, 86 deletions
diff --git a/src/lib.c b/src/lib.c
index be0d2cd..25eea4e 100644
--- a/src/lib.c
+++ b/src/lib.c
@@ -1,6 +1,6 @@
/* enchant
* Copyright (C) 2003, 2004 Dom Lachowicz
- * Copyright (C) 2017 Reuben Thomas <rrt@sc3d.org>
+ * Copyright (C) 2017-2021 Reuben Thomas <rrt@sc3d.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -166,10 +166,8 @@ enchant_is_valid_dictionary_tag(const char * const tag)
{
const char * it;
for (it = tag; *it; ++it)
- {
- if(!g_ascii_isalnum(*it) && *it != '_')
- return 0;
- }
+ if(!g_ascii_isalnum(*it) && *it != '_')
+ return 0;
return it != tag; /*empty tag invalid*/
}
@@ -772,18 +770,20 @@ enchant_provider_is_valid(EnchantProvider * provider)
{
if (provider == NULL)
g_warning ("EnchantProvider cannot be NULL\n");
+ else if (provider->dispose == NULL)
+ g_warning ("EnchantProvider's dispose method cannot be NULL\n");
+ else if (provider->request_dict == NULL)
+ g_warning ("EnchantProvider's request_dict method cannot be NULL\n");
+ else if (provider->dispose_dict == NULL)
+ g_warning ("EnchantProvider's dispose_dict method cannot be NULL\n");
else if (provider->identify == NULL)
g_warning ("EnchantProvider's identify method cannot be NULL\n");
else if (!g_utf8_validate((*provider->identify)(provider), -1, NULL))
- g_warning ("EnchantProvider's identify method does not return valid UTF-8.\n");
+ g_warning ("EnchantProvider's identify method does not return valid UTF-8\n");
else if (provider->describe == NULL)
g_warning ("EnchantProvider's describe method cannot be NULL\n");
else if (!g_utf8_validate((*provider->describe)(provider), -1, NULL))
- g_warning ("EnchantProvider's describe method does not return valid UTF-8.\n");
- else if (provider->dispose == NULL)
- g_warning ("EnchantProvider's dispose method cannot be NULL\n");
- else if (provider->dispose_dict == NULL)
- g_warning ("EnchantProvider's dispose_dict method cannot be NULL\n");
+ g_warning ("EnchantProvider's describe method does not return valid UTF-8\n");
else if (provider->list_dicts == NULL)
g_warning ("EnchantProvider's list_dicts method cannot be NULL\n");
else
@@ -836,14 +836,10 @@ enchant_load_providers_in_dir (EnchantBroker * broker, const char *dir_name)
}
}
else
- {
- g_module_close (module);
- }
+ g_module_close (module);
}
else
- {
- g_warning ("Error loading plugin: %s\n", g_module_error());
- }
+ g_warning ("Error loading plugin: %s\n", g_module_error());
g_free (filename);
#ifdef _WIN32
@@ -961,10 +957,8 @@ enchant_get_ordered_providers (EnchantBroker * broker, const char * const tag)
/* append providers not in the list, or from an unordered list */
for (GSList * iter = broker->provider_list; iter != NULL; iter = g_slist_next (iter))
- {
- if (!g_slist_find (list, iter->data))
- list = g_slist_append (list, iter->data);
- }
+ if (!g_slist_find (list, iter->data))
+ list = g_slist_append (list, iter->data);
return list;
}
@@ -1084,25 +1078,19 @@ _enchant_broker_request_dict (EnchantBroker * broker, const char *const tag)
GSList * list = enchant_get_ordered_providers (broker, tag);
for (GSList *listIter = list; listIter != NULL; listIter = g_slist_next (listIter))
{
- EnchantProvider * provider;
+ EnchantProvider * provider = (EnchantProvider *) listIter->data;
- provider = (EnchantProvider *) listIter->data;
+ dict = (*provider->request_dict) (provider, tag);
- if (provider->request_dict)
+ if (dict)
{
- dict = (*provider->request_dict) (provider, tag);
-
- if (dict)
- {
-
- EnchantSession *session = enchant_session_new (provider, tag);
- EnchantDictPrivateData *enchant_dict_private_data = g_new0 (EnchantDictPrivateData, 1);
- enchant_dict_private_data->reference_count = 1;
- enchant_dict_private_data->session = session;
- dict->enchant_private_data = (void *)enchant_dict_private_data;
- g_hash_table_insert (broker->dict_map, (gpointer)strdup (tag), dict);
- break;
- }
+ EnchantSession *session = enchant_session_new (provider, tag);
+ EnchantDictPrivateData *enchant_dict_private_data = g_new0 (EnchantDictPrivateData, 1);
+ enchant_dict_private_data->reference_count = 1;
+ enchant_dict_private_data->session = session;
+ dict->enchant_private_data = (void *)enchant_dict_private_data;
+ g_hash_table_insert (broker->dict_map, (gpointer)strdup (tag), dict);
+ break;
}
}
g_slist_free (list);
@@ -1122,9 +1110,7 @@ enchant_broker_request_dict (EnchantBroker * broker, const char *const tag)
char * normalized_tag = enchant_normalize_dictionary_tag (tag);
if(!enchant_is_valid_dictionary_tag(normalized_tag))
- {
- enchant_broker_set_error (broker, "invalid tag character found");
- }
+ enchant_broker_set_error (broker, "invalid tag character found");
else if ((dict = _enchant_broker_request_dict (broker, normalized_tag)) == NULL)
{
char * iso_639_only_tag = enchant_iso_639_from_tag (normalized_tag);
@@ -1177,31 +1163,28 @@ enchant_broker_list_dicts (EnchantBroker * broker, EnchantDictDescribeFn fn, voi
{
EnchantProvider *provider = (EnchantProvider *) list->data;
- if (provider->list_dicts)
- {
- size_t n_dicts;
- char ** dicts = (*provider->list_dicts) (provider, &n_dicts);
+ size_t n_dicts;
+ char ** dicts = (*provider->list_dicts) (provider, &n_dicts);
- for (size_t i = 0; i < n_dicts; i++)
- {
- const char * tag = dicts[i];
- if (enchant_is_valid_dictionary_tag (tag)) {
- GSList *providers = enchant_get_ordered_providers (broker, tag);
- gint this_priority = g_slist_index (providers, provider);
- if (this_priority != -1) {
- gint min_priority = this_priority + 1;
- gpointer ptr = g_hash_table_lookup (tag_map, tag);
- if (ptr != NULL)
- min_priority = g_slist_index (providers, ptr);
- if (this_priority < min_priority)
- g_hash_table_insert (tag_map, strdup (tag), provider);
- }
- g_slist_free (providers);
- }
+ for (size_t i = 0; i < n_dicts; i++)
+ {
+ const char * tag = dicts[i];
+ if (enchant_is_valid_dictionary_tag (tag)) {
+ GSList *providers = enchant_get_ordered_providers (broker, tag);
+ gint this_priority = g_slist_index (providers, provider);
+ if (this_priority != -1) {
+ gint min_priority = this_priority + 1;
+ gpointer ptr = g_hash_table_lookup (tag_map, tag);
+ if (ptr != NULL)
+ min_priority = g_slist_index (providers, ptr);
+ if (this_priority < min_priority)
+ g_hash_table_insert (tag_map, strdup (tag), provider);
}
-
- enchant_free_string_list (dicts);
+ g_slist_free (providers);
+ }
}
+
+ enchant_free_string_list (dicts);
}
GSList *tags = NULL;
@@ -1253,20 +1236,16 @@ enchant_provider_dictionary_exists (EnchantProvider * provider, const char * con
int exists = 0;
if (provider->dictionary_exists)
- {
- exists = (*provider->dictionary_exists) (provider, tag);
- }
- else if (provider->list_dicts)
+ exists = (*provider->dictionary_exists) (provider, tag);
+ else
{
size_t n_dicts;
char ** dicts = (*provider->list_dicts) (provider, &n_dicts);
for (size_t i = 0; i < n_dicts; i++)
- {
- if (!strcmp(dicts[i], tag)) {
- exists = 1;
- break;
- }
+ if (!strcmp(dicts[i], tag)) {
+ exists = 1;
+ break;
}
enchant_free_string_list (dicts);
@@ -1286,10 +1265,9 @@ _enchant_broker_dict_exists (EnchantBroker * broker, const char * const tag)
if (g_hash_table_lookup (broker->dict_map, (gpointer) tag) != NULL)
return 1;
- for (GSList *list = broker->provider_list; list != NULL; list = g_slist_next (list)) {
+ for (GSList *list = broker->provider_list; list != NULL; list = g_slist_next (list))
if (enchant_provider_dictionary_exists ((EnchantProvider *) list->data, tag))
return 1;
- }
return 0;
}
@@ -1306,19 +1284,13 @@ enchant_broker_dict_exists (EnchantBroker * broker, const char * const tag)
int exists = 0;
if(!enchant_is_valid_dictionary_tag(normalized_tag))
- {
- enchant_broker_set_error (broker, "invalid tag character found");
- }
+ enchant_broker_set_error (broker, "invalid tag character found");
else if ((exists = _enchant_broker_dict_exists (broker, normalized_tag)) == 0)
{
- char * iso_639_only_tag;
-
- iso_639_only_tag = enchant_iso_639_from_tag (normalized_tag);
+ char * iso_639_only_tag = enchant_iso_639_from_tag (normalized_tag);
if (strcmp (normalized_tag, iso_639_only_tag) != 0)
- {
- exists = _enchant_broker_dict_exists (broker, iso_639_only_tag);
- }
+ exists = _enchant_broker_dict_exists (broker, iso_639_only_tag);
free (iso_639_only_tag);
}
@@ -1346,9 +1318,8 @@ enchant_dict_is_word_character (EnchantDict * dict, uint32_t uc_in, size_t n)
gunichar uc = (gunichar)uc_in;
/* Accept quote marks anywhere except at the end of a word */
- if (uc == g_utf8_get_char("'") || uc == g_utf8_get_char("’")) {
+ if (uc == g_utf8_get_char("'") || uc == g_utf8_get_char("’"))
return n < 2;
- }
GUnicodeType type = g_unichar_type(uc);
@@ -1368,9 +1339,8 @@ enchant_dict_is_word_character (EnchantDict * dict, uint32_t uc_in, size_t n)
return 1; /* Enchant 1.3.0 defines word chars like this. */
case G_UNICODE_DASH_PUNCTUATION:
- if ((n == 1) && (type == G_UNICODE_DASH_PUNCTUATION)) {
+ if ((n == 1) && (type == G_UNICODE_DASH_PUNCTUATION))
return 1; /* hyphens only accepted within a word. */
- }
/* Fallthrough */
case G_UNICODE_CONTROL: