fixed last commit
authorpk910 <philipp@zoelle1.de>
Wed, 17 Aug 2011 02:05:48 +0000 (04:05 +0200)
committerpk910 <philipp@zoelle1.de>
Wed, 17 Aug 2011 02:21:18 +0000 (04:21 +0200)
IRCParser.c
UserNode.c
bot_NeonServ.c
lang.c
lang.h
main.c
modcmd.c

index c52659ed21f3c795511d429d3e221a19449193a9..9918abca35138c4e69b5166135ec21c369f0af92 100644 (file)
@@ -368,7 +368,7 @@ void free_parser() {
 }
 
 void reply(struct ClientSocket *client, struct UserNode *user, const char *text, ...) {
-    char *reply_format = get_language_string(user, text);
+    const char *reply_format = get_language_string(user, text);
     if(reply_format == NULL)
         reply_format = text;
     if((user->flags & USERFLAG_ISAUTHED) && !(user->flags & USERFLAG_LOADED_SETTINGS))
@@ -380,7 +380,7 @@ void reply(struct ClientSocket *client, struct UserNode *user, const char *text,
     int pos;
     if (!(client->flags & SOCKET_FLAG_CONNECTED)) return;
     sendBuf[0] = '\0';
-    va_start(arg_list, formatBuf);
+    va_start(arg_list, text);
     pos = vsnprintf(sendBuf, MAXLEN - 2, formatBuf, arg_list);
     va_end(arg_list);
     if (pos < 0 || pos > (MAXLEN - 2)) pos = MAXLEN - 2;
index b2e3c7aedcb82cceb1898b56d1473f51fcb2799d..5db84d626c1b4906905e09c56863198abee0e6f8 100644 (file)
@@ -278,6 +278,6 @@ void load_user_settings(struct UserNode *user) {
         if(strcmp(row[1], "0"))
             user->flags |= USERFLAG_REPLY_PRIVMSG;
     } else
-        user->language = lang_c;
-    user->flags |= USERFLAG_LOADED_SETTINGS
+        user->language = get_default_language();
+    user->flags |= USERFLAG_LOADED_SETTINGS;
 }
index 9c3b004511e1ae6287c4b736b579895dae150ae1..1621d3c5a8497663f9f7fdc573482c623e222f74 100644 (file)
@@ -7,12 +7,13 @@
 #include "ChanUser.h"
 #include "ClientSocket.h"
 #include "mysqlConn.h"
+#include "lang.h"
 
 #define BOTID 1
 #define CLASSNAME "NeonServ"
 
 static const struct default_language_entry msgtab[] = {
-
+    {NULL, NULL}
 };
 
 static CMD_BIND(neonserv_cmd_users) {
@@ -85,6 +86,8 @@ void init_NeonServ() {
     set_trigger_callback(BOTID, neonserv_trigger_callback);
     bind_cmd_to_command(BOTID, "users", "users");
     bind_cmd_to_command(BOTID, "modes", "modes");
+    
+    register_default_language_table(msgtab);
 }
 
 void free_NeonServ() {
diff --git a/lang.c b/lang.c
index f2880bc2f300da7cb33342e7f5d330ecc4b1e925..4c9f877b252ec960ace9aeb8fb247ba050c8cc62 100644 (file)
--- a/lang.c
+++ b/lang.c
@@ -16,13 +16,13 @@ void free_lang() {
 }
 
 static struct language* add_language(char *langtag, char *langname) {
-    int index;
-    for(index = 0; index < MAXLANGUAGES; index++) {
-        if(langdict[index] == NULL) break;
-        if(!strcmp(langdict[index]->langname, langname) || !strcmp(langdict[index]->langtag, langtag))
-            return langdict[index];
+    int cindex;
+    for(cindex = 0; cindex < MAXLANGUAGES; cindex++) {
+        if(langdict[cindex] == NULL) break;
+        if(!strcmp(langdict[cindex]->langname, langname) || !strcmp(langdict[cindex]->langtag, langtag))
+            return langdict[cindex];
     }
-    if(index == MAXLANGUAGES) return NULL;
+    if(cindex == MAXLANGUAGES) return NULL;
     struct language *lang = malloc(sizeof(*lang));
     if (!lang) {
         perror("malloc() failed");
@@ -42,21 +42,21 @@ static int get_entry_index(const char *ident) {
 }
 
 struct language* get_language_by_tag(char *tag) {
-    int index;
-    for(index = 0; index < MAXLANGUAGES; index++) {
-        if(langdict[index] == NULL) break;
-        if(!strcmp(langdict[index]->langtag, tag))
-            return langdict[index];
+    int cindex;
+    for(cindex = 0; cindex < MAXLANGUAGES; cindex++) {
+        if(langdict[cindex] == NULL) break;
+        if(!strcmp(langdict[cindex]->langtag, tag))
+            return langdict[cindex];
     }
     return NULL;
 }
 
 struct language* get_language_by_name(char *name) {
-    int index;
-    for(index = 0; index < MAXLANGUAGES; index++) {
-        if(langdict[index] == NULL) break;
-        if(!strcmp(langdict[index]->langname, name))
-            return langdict[index];
+    int cindex;
+    for(cindex = 0; cindex < MAXLANGUAGES; cindex++) {
+        if(langdict[cindex] == NULL) break;
+        if(!strcmp(langdict[cindex]->langname, name))
+            return langdict[cindex];
     }
     return NULL;
 }
@@ -71,9 +71,9 @@ void register_default_language_table(const struct default_language_entry *msgtab
     if(lang_c == NULL) 
         lang_c = add_language(DEFAULT_LANG_TAG, DEFAULT_LANG_NAME);
     struct language_table *lang_entry;
-    int index;
+    int cindex;
     while(msgtab->ident) {
-        index = get_entry_index(msgtab->ident);
+        cindex = get_entry_index(msgtab->ident);
         lang_entry = malloc(sizeof(*lang_entry));
         if (!lang_entry) {
             perror("malloc() failed");
@@ -81,13 +81,13 @@ void register_default_language_table(const struct default_language_entry *msgtab
         }
         lang_entry->ident = strdup(msgtab->ident);
         lang_entry->text = strdup(msgtab->text);
-        lang_entry->next = lang_c->entrys[index];
-        lang_c->entrys[index] = lang_entry;
+        lang_entry->next = lang_c->entrys[cindex];
+        lang_c->entrys[cindex] = lang_entry;
         msgtab++;
     }
 }
 
-char *get_language_string(struct UserNode *user, char* msg_ident) {
+char *get_language_string(struct UserNode *user, const char* msg_ident) {
     struct language* lang;
     if((user->flags & USERFLAG_ISAUTHED)) {
         if(!(user->flags & USERFLAG_LOADED_SETTINGS))
@@ -95,10 +95,11 @@ char *get_language_string(struct UserNode *user, char* msg_ident) {
         lang = user->language;
     } else
         lang = lang_c;
-    int index = get_entry_index(msg_ident);
+    int cindex = get_entry_index(msg_ident);
     struct language_table* entry;
-    for(entry = lang->entrys[index]; entry; entry = entry->next) {
+    for(entry = lang->entrys[cindex]; entry; entry = entry->next) {
         if(!strcmp(entry->ident, msg_ident))
             return entry->text;
     }
+    return NULL;
 }
diff --git a/lang.h b/lang.h
index 68961d3a3e9fa6e457d1ada2f0a262b5c3c39048..b909bd7e7e78f4224808f08d6c3e630f62083de3 100644 (file)
--- a/lang.h
+++ b/lang.h
@@ -21,10 +21,12 @@ struct language {
     struct language_table **entrys;
 };
 
+void init_lang();
+void free_lang();
 struct language* get_language_by_tag(char *tag);
 struct language* get_language_by_name(char *name);
 struct language* get_default_language();
-void register_default_language_table(const struct default_language_entry **msgtab);
-char *get_language_string(struct UserNode *user, char* msg_ident);
+void register_default_language_table(const struct default_language_entry *msgtab);
+char *get_language_string(struct UserNode *user, const char* msg_ident);
 
 #endif
\ No newline at end of file
diff --git a/main.c b/main.c
index 4127e3313503f6d5620a497aa80052366293689f..2d0ffc2c4bd5e23f0ce5a4e2892656e7b7f2f169 100644 (file)
--- a/main.c
+++ b/main.c
@@ -20,19 +20,19 @@ void cleanup() {
     free_modcmd();
     free_whoqueue();
     free_bots();
-    free_lang();
     free_mysql();
+    free_lang();
 }
 
 int main(void)
 {
     init_mysql();
+    init_lang();
     init_parser();
     init_UserNode();
     init_ChanNode();
     init_bind();
        init_modcmd();
-    init_lang();
     init_bots();
     
     time_t socket_wait;
index a84d5c8ed341c0d3469a0a41a250b97d602a9559..0ef04e68de3d4eaeccd8548f3887fab6d03e84a6 100644 (file)
--- a/modcmd.c
+++ b/modcmd.c
@@ -6,6 +6,7 @@
 #include "ChanNode.h"
 #include "ChanUser.h"
 #include "WHOHandler.h"
+#include "lang.h"
 
 struct trigger_callback {
     int botid;
@@ -28,6 +29,11 @@ static struct cmd_binding **cmd_binds;
 static struct cmd_function *cmd_functions = NULL;
 static struct trigger_callback *trigger_callbacks = NULL;
 
+static const struct default_language_entry msgtab[] = {
+    
+    {NULL, NULL}
+};
+
 static int get_binds_index(char first_char) {
     if(tolower(first_char) >= 'a' && tolower(first_char) <= 'z') {
         return tolower(first_char - 'a');
@@ -369,6 +375,7 @@ void init_modcmd() {
     cmd_binds = calloc(27, sizeof(*cmd_binds));
     bind_chanmsg(got_chanmsg);
     bind_privmsg(got_privmsg);
+    register_default_language_table(msgtab);
 }
 
 void free_modcmd() {