fixed cmd_netinfo
[NeonServV5.git] / lang.c
diff --git a/lang.c b/lang.c
index 4c9f877b252ec960ace9aeb8fb247ba050c8cc62..3acd0662548564129a5e381fccbe6a7686a35eef 100644 (file)
--- a/lang.c
+++ b/lang.c
@@ -1,5 +1,6 @@
 #include "lang.h"
 #include "UserNode.h"
+#include "DBHelper.h"
 
 #define DEFAULT_LANG_TAG "EN"
 #define DEFAULT_LANG_NAME "English"
@@ -90,8 +91,7 @@ void register_default_language_table(const struct default_language_entry *msgtab
 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))
-            load_user_settings(user);
+        loadUserSettings(user);
         lang = user->language;
     } else
         lang = lang_c;
@@ -103,3 +103,24 @@ char *get_language_string(struct UserNode *user, const char* msg_ident) {
     }
     return NULL;
 }
+
+char *build_language_string(struct UserNode *user, char *buffer, const char *msg_ident, ...) {
+    char *formatStr = get_language_string(user, msg_ident);
+    if(!formatStr) return NULL;
+    if(buffer == NULL) {
+        buffer = (char *)malloc((MAXLEN+1) * sizeof(char));
+        if (!buffer) {
+            perror("malloc() failed");
+            return NULL;
+        }
+    }
+    int pos;
+    va_list arg_list;
+    buffer[0] = '\0';
+    va_start(arg_list, msg_ident);
+    pos = vsnprintf(buffer, MAXLEN - 2, formatStr, arg_list);
+    va_end(arg_list);
+    if (pos < 0 || pos > (MAXLEN - 2)) pos = MAXLEN - 2;
+    buffer[pos] = '\0';
+    return buffer;
+}