X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Flang.c;h=e07735e5a7f72e88af4b83096d47fa25a91e9bcd;hb=4812835346f724fcea86e78f741cc6c72c86b676;hp=aa2518ae6f51aa54383b6844fb208771eba282a5;hpb=95fed4deda0319bee515e44ceec0c77061a2c04e;p=NeonServV5.git diff --git a/src/lang.c b/src/lang.c index aa2518a..e07735e 100644 --- a/src/lang.c +++ b/src/lang.c @@ -1,5 +1,5 @@ -/* lang.c - NeonServ v5.0 - * Copyright (C) 2011 Philipp Kreil (pk910) +/* lang.c - NeonServ v5.6 + * Copyright (C) 2011-2012 Philipp Kreil (pk910) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -135,13 +135,21 @@ void register_default_language_table(const struct default_language_entry *msgtab 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 @@ -157,10 +165,13 @@ void register_language_string(struct language *lang, char *ident, char *text) { if(a) { switch(a[1]) { case 'b': - tmp[tmppos++] = '\002'; + tmp[tmppos++] = 2; break; case 'k': - tmp[tmppos++] = '\003'; + tmp[tmppos++] = 3; + break; + case 'u': + tmp[tmppos++] = 31; break; default: //unknown - just write it @@ -170,8 +181,6 @@ void register_language_string(struct language *lang, char *ident, char *text) { } } 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) {