void register_language_string(struct language *lang, char *ident, char *text) {
int cindex = get_entry_index(ident);
- struct language_table *lang_entry = malloc(sizeof(*lang_entry));
- if (!lang_entry) {
- perror("malloc() failed");
- return;
+ struct language_table *lang_entry;
+ for(lang_entry = lang->entrys[cindex]; lang_entry; lang_entry = lang_entry->next) {
+ if(!strcmp(lang_entry->ident, ident)) break;
}
-
- lang_entry->ident = strdup(ident);
+ if(!lang_entry) {
+ lang_entry = malloc(sizeof(*lang_entry));
+ if (!lang_entry) {
+ perror("malloc() failed");
+ return;
+ }
+ lang_entry->ident = strdup(ident);
+ lang_entry->next = lang->entrys[cindex];
+ lang->entrys[cindex] = lang_entry;
+ } else
+ free(lang_entry->text); //free old text (new one will be set below)
//replace all:
//$b to \002
//$k to \003
}
} while(a);
lang_entry->text = strdup(tmp);
- lang_entry->next = lang->entrys[cindex];
- lang->entrys[cindex] = lang_entry;
}
char *get_language_string(struct UserNode *user, const char* msg_ident) {