boolean LoadChttransConfig(FcitxChttrans* transState) { FcitxConfigFileDesc* configDesc = GetChttransConfigDesc(); if (configDesc == NULL) return false; FILE *fp; char *file; fp = FcitxXDGGetFileUserWithPrefix("conf", "fcitx-chttrans.config", "r", &file); FcitxLog(DEBUG, "Load Config File %s", file); free(file); if (!fp) { if (errno == ENOENT) SaveChttransConfig(transState); } FcitxConfigFile *cfile = FcitxConfigParseConfigFileFp(fp, configDesc); FcitxChttransConfigBind(transState, cfile, configDesc); FcitxConfigBindSync((FcitxGenericConfig*)transState); if (fp) fclose(fp); return true; }
void SaveChttransConfig(FcitxChttrans* transState) { FcitxConfigFileDesc* configDesc = GetChttransConfigDesc(); char *file; FILE *fp = FcitxXDGGetFileUserWithPrefix("conf", "fcitx-chttrans.config", "w", &file); FcitxLog(DEBUG, "Save Config to %s", file); FcitxConfigSaveConfigFileFp(fp, &transState->gconfig, configDesc); free(file); if (fp) fclose(fp); }
boolean LoadChttransConfig(FcitxChttrans* transState) { FcitxConfigFileDesc* configDesc = GetChttransConfigDesc(); if (configDesc == NULL) return false; FILE *fp; char *file; fp = FcitxXDGGetFileUserWithPrefix("conf", "fcitx-chttrans.config", "r", &file); FcitxLog(DEBUG, "Load Config File %s", file); free(file); boolean newconfig = false; if (!fp) { if (errno == ENOENT) SaveChttransConfig(transState); newconfig = true; } FcitxConfigFile *cfile = FcitxConfigParseConfigFileFp(fp, configDesc); FcitxChttransConfigBind(transState, cfile, configDesc); FcitxConfigBindSync((FcitxGenericConfig*)transState); if (newconfig) { char *p = fcitx_utils_get_current_langcode(); /* also check en_HK for default setting */ if (strcmp(p, "zh_TW") == 0 || strcmp(p, "en_HK") == 0 || strcmp(p, "zh_HK") == 0) { transState->enabled = true; SaveChttransConfig(transState); } free(p); } if (fp) fclose(fp); return true; }