TEST_FIXTURE(EnchantBrokerFreeDictTestFixture, EnchantBrokerFreeDict_HasTwoInstances_NoCrash) { EnchantDict* dictionary1 = enchant_broker_request_dict(_broker, "en-GB"); EnchantDict* dictionary2 = enchant_broker_request_dict(_broker, "en-GB"); enchant_broker_free_dict(_broker, dictionary1); enchant_broker_free_dict(_broker, dictionary2); }
void weechat_aspell_speller_free_value_cb (struct t_hashtable *hashtable, const void *key, void *value) { #ifdef USE_ENCHANT EnchantDict *ptr_speller; #else AspellSpeller *ptr_speller; #endif /* USE_ENCHANT */ /* make C compiler happy */ (void) hashtable; if (weechat_aspell_plugin->debug) { weechat_printf (NULL, "%s: removing speller for lang \"%s\"", ASPELL_PLUGIN_NAME, (const char *)key); } /* free speller */ #ifdef USE_ENCHANT ptr_speller = (EnchantDict *)value; enchant_broker_free_dict (broker, ptr_speller); #else ptr_speller = (AspellSpeller *)value; aspell_speller_save_all_word_lists (ptr_speller); delete_aspell_speller (ptr_speller); #endif /* USE_ENCHANT */ }
void sc_speller_free(void) { sc_speller_dicts_free(); if (sc_speller_dict != NULL) enchant_broker_free_dict(sc_speller_broker, sc_speller_dict); enchant_broker_free(sc_speller_broker); }
TEST_FIXTURE(EnchantBrokerFreeDictTestFixture, EnchantBrokerFreeDict) { enchant_broker_free_dict(_broker, _dictionary); CHECK_EQUAL(_dictionary, dictionaryToBeFreed); _dictionary = NULL; }
TEST_FIXTURE(EnchantBrokerFreeDictNoDisposeTestFixture, EnchantBrokerFreeDict_NotOnProvider_DoNothing) { testResults_; enchant_broker_free_dict(_broker, _dictionary); _dictionary = NULL; }
static void empathy_spell_free_language (SpellLanguage *lang) { enchant_broker_free_dict (lang->config, lang->speller); enchant_broker_free (lang->config); g_slice_free (SpellLanguage, lang); }
void sc_speller_reinit_enchant_dict(void) { const gchar *lang = sc_info->default_language; /* Release a previous dict object */ if (sc_speller_dict != NULL) enchant_broker_free_dict(sc_speller_broker, sc_speller_dict); #if HAVE_ENCHANT_1_5 { const gchar *old_path; gchar *new_path; /* add custom dictionary path for myspell (primarily used on Windows) */ old_path = enchant_broker_get_param(sc_speller_broker, "enchant.myspell.dictionary.path"); if (old_path != NULL) new_path = g_strconcat( old_path, G_SEARCHPATH_SEPARATOR_S, sc_info->dictionary_dir, NULL); else new_path = sc_info->dictionary_dir; enchant_broker_set_param(sc_speller_broker, "enchant.myspell.dictionary.path", new_path); if (new_path != sc_info->dictionary_dir) g_free(new_path); } #endif create_dicts_array(); /* Check if the stored default dictionary is (still) available, fall back to the first * one in the list if not */ if (EMPTY(lang) || ! check_default_lang()) { if (sc_info->dicts->len > 0) { lang = g_ptr_array_index(sc_info->dicts, 0); g_warning("Stored language ('%s') could not be loaded. Falling back to '%s'", sc_info->default_language, lang); } else g_warning("Stored language ('%s') could not be loaded.", sc_info->default_language); } /* Request new dict object */ if (! EMPTY(lang)) sc_speller_dict = enchant_broker_request_dict(sc_speller_broker, lang); else sc_speller_dict = NULL; if (sc_speller_dict == NULL) { broker_init_failed(); gtk_widget_set_sensitive(sc_info->menu_item, FALSE); } else { gtk_widget_set_sensitive(sc_info->menu_item, TRUE); } }
TEST_FIXTURE(EnchantBrokerDictExists_ProviderImplementsAll_TestFixture, EnchantBrokerDictExists_CalledWhenDictionaryIsInUse_DoesNotCallAnyMethods_GetsCachedResult) { EnchantDict* dict = enchant_broker_request_dict(_broker, "en-GB"); enchant_broker_dict_exists(_broker, "en-GB"); CHECK_EQUAL(0,listDictionariesCalled); CHECK_EQUAL(0,dictionaryExistsCalled); enchant_broker_free_dict(_broker, dict); }
TEST_FIXTURE(EnchantBrokerFreeDictTestFixture, EnchantBrokerFreeDict_HasPreviousError_ErrorCleared) { SetErrorOnMockProvider("something bad happened"); enchant_broker_free_dict(_broker, _dictionary); _dictionary = NULL; CHECK_EQUAL((void*)NULL, (void*)enchant_broker_get_error(_broker)); }
static void spellchecker_reload_dicts() { while (!g_pEnchantDicts->isEmpty()) enchant_broker_free_dict(g_pEnchantBroker, g_pEnchantDicts->takeFirst()); const QStringList& wantedDictionaries = KVI_OPTION_STRINGLIST(KviOption_stringlistSpellCheckerDictionaries); foreach(QString szLang, wantedDictionaries) { EnchantDict* pDict = enchant_broker_request_dict(g_pEnchantBroker, szLang.toUtf8().data()); if (pDict) { g_pEnchantDicts->append(pDict); } else { qDebug("Can't load spellchecker dictionary %s: %s", szLang.toUtf8().data(), enchant_broker_get_error(g_pEnchantBroker)); } }
static void php_enchant_dict_free(zend_resource *rsrc) /* {{{ */ { if (rsrc->ptr) { enchant_dict *pdict = (enchant_dict *)rsrc->ptr; if (pdict) { enchant_broker *pbroker = pdict->pbroker; if (pdict->pdict && pbroker) { enchant_broker_free_dict(pbroker->pbroker, pdict->pdict); } pbroker->dict[pdict->id] = NULL; efree(pdict); zend_list_delete(pbroker->rsrc); } } }
static void spell_notify_languages_cb (EmpathyConf *conf, const gchar *key, gpointer user_data) { GList *l; DEBUG ("Resetting languages due to config change"); /* We just reset the languages list. */ for (l = languages; l; l = l->next) { SpellLanguage *lang; lang = l->data; enchant_broker_free_dict (lang->config, lang->speller); enchant_broker_free (lang->config); g_slice_free (SpellLanguage, lang); } g_list_free (languages); languages = NULL; }
gboolean suggestions_uninit() { gboolean free_success = FALSE; if(enchant_dict) { enchant_broker_free_dict(enchant_broker, enchant_dict); enchant_dict = NULL; } if(enchant_broker) { enchant_broker_free(enchant_broker); enchant_broker = NULL; } if(mod_enchant) { free_success = g_module_close(mod_enchant); mod_enchant = NULL; } return free_success; }
int main (int argc, char **argv) { EnchantBroker *broker; EnchantDict *dict; char * lang_tag = NULL; int mode = 0, i; for (i = 1; i < argc; i++) { if (!strcmp (argv[i], "-lang")) { if (i < (argc - 1)) { lang_tag = g_strdup (argv[++i]); } else { lang_tag = enchant_get_user_language(); if (!lang_tag || !strcmp (lang_tag, "C")) { if (lang_tag) /* lang might be "C" */ g_free (lang_tag); lang_tag = g_strdup ("en"); } } mode = 1; } else if (!strcmp (argv[i], "-h") || !strcmp (argv[i], "-?") || !strcmp(argv[i], "-help")) { printf ("%s [-lang [language_tag]] [-list-dicts] [-h] [-v]\n", argv[0]); if (lang_tag) g_free (lang_tag); return 0; } else if (!strcmp (argv[i], "-v") || !strcmp (argv[i], "-version")) { printf ("%s %s\n", argv[0], VERSION); if (lang_tag) g_free (lang_tag); return 0; } else if (!strcmp (argv[i], "-list-dicts")) { mode = 2; } } broker = enchant_broker_init (); if (mode == 0) { enchant_broker_describe (broker, enumerate_providers, stdout); } else if (mode == 1) { if (!lang_tag) { printf ("Error: language tag not specified and environment variable $LANG not set.\n"); enchant_broker_free (broker); return 1; } dict = enchant_broker_request_dict (broker, lang_tag); if (!dict) { printf ("No dictionary available for '%s'.\n", lang_tag); if (lang_tag) g_free (lang_tag); enchant_broker_free (broker); return 1; } else { enchant_dict_describe (dict, describe_dict, stdout); enchant_broker_free_dict (broker, dict); } } else if (mode == 2) { enchant_broker_list_dicts (broker, enumerate_dicts, stdout); } if (lang_tag) g_free (lang_tag); enchant_broker_free (broker); return 0; }
static int parse_file (FILE * in, FILE * out, IspellMode_t mode, int countLines, gchar *dictionary) { EnchantBroker * broker; EnchantDict * dict; GString * str, * word = NULL; GSList * tokens, *token_ptr; gchar * lang; size_t pos, lineCount = 0; gboolean was_last_line = FALSE, corrected_something = FALSE, terse_mode = FALSE; if (mode == MODE_A) print_version (out); if (dictionary) { lang = convert_language_code (dictionary); } else { lang = enchant_get_user_language(); if(!lang) return 1; } /* Enchant will get rid of useless trailing garbage like de_DE@euro or de_DE.ISO-8859-15 */ broker = enchant_broker_init (); dict = enchant_broker_request_dict (broker, lang); if (!dict) { fprintf (stderr, "Couldn't create a dictionary for %s\n", lang); g_free (lang); enchant_broker_free (broker); return 1; } g_free (lang); str = g_string_new (NULL); while (!was_last_line) { gboolean mode_A_no_command = FALSE; was_last_line = consume_line (in, str); if (countLines) lineCount++; if (str->len) { corrected_something = FALSE; if (mode == MODE_A) { switch (*str->str) { case '&': /* Insert uncapitalised in personal word list */ if (str->len > 1) { gunichar c = g_utf8_get_char_validated(str->str + 1, str->len); if (c > 0) { str = g_string_erase(str, 1, g_utf8_next_char(str->str + 1) - (str->str + 1)); g_string_insert_unichar(str, 1, g_unichar_tolower(c)); } } /* FALLTHROUGH */ case '*': /* Insert in personal word list */ if (str->len == 1) goto empty_word; enchant_dict_add(dict, str->str + 1, -1); break; case '@': /* Accept for this session */ if (str->len == 1) goto empty_word; enchant_dict_add_to_session(dict, str->str + 1, -1); break; case '%': /* Exit terse mode */ terse_mode = FALSE; break; case '!': /* Enter terse mode */ terse_mode = TRUE; break; /* Ignore these commands */ case '#': /* Save personal word list (enchant does this automatically) */ case '+': /* LaTeX mode */ case '-': /* nroff mode [default] */ case '~': /* change string character type (enchant is fixed to UTF-8) */ case '`': /* Enter verbose-correction mode */ break; case '$': /* Save correction for rest of session [aspell extension] */ { /* Syntax: $$ra <MISSPELLED>,<REPLACEMENT> */ gchar *prefix = "$$ra "; if (g_str_has_prefix(str->str, prefix)) { gchar *comma = g_utf8_strchr(str->str, -1, (gunichar)','); char *mis = str->str + strlen(prefix); char *cor = comma + 1; ssize_t mis_len = comma - mis; ssize_t cor_len = strlen(str->str) - (cor - str->str); enchant_dict_store_replacement(dict, mis, mis_len, cor, cor_len); } } break; case '^': /* ^ is used as prefix to prevent interpretation of original first character as a command */ /* FALLTHROUGH */ default: /* A word or words to check */ mode_A_no_command = TRUE; break; empty_word: fprintf (out, "Error: The word \"\" is invalid. Empty string.\n"); } } if (mode != MODE_A || mode_A_no_command) { token_ptr = tokens = tokenize_line (str); if (tokens == NULL) putc('\n', out); while (tokens != NULL) { corrected_something = TRUE; word = (GString *)tokens->data; tokens = tokens->next; pos = GPOINTER_TO_INT(tokens->data); tokens = tokens->next; if (mode == MODE_A) do_mode_a (out, dict, word, pos, lineCount, terse_mode); else if (mode == MODE_L) do_mode_l (out, dict, word, lineCount); g_string_free(word, TRUE); } if (token_ptr) g_slist_free (token_ptr); } } if (mode == MODE_A && corrected_something) { fwrite ("\n", 1, 1, out); } g_string_truncate (str, 0); fflush (out); } enchant_broker_free_dict (broker, dict); enchant_broker_free (broker); g_string_free (str, TRUE); return 0; }
TEST_FIXTURE(EnchantBrokerFreeDictTestFixture, EnchantBrokerFreeDict_NullDict_DoNothing) { enchant_broker_free_dict(_broker, NULL); CHECK_EQUAL((EnchantDict*)NULL, dictionaryToBeFreed); }