continued cmd_neonserv_set.c
[NeonServV5.git] / lang.c
diff --git a/lang.c b/lang.c
index f10292dd462cc041276fc80c93aa5e0020345859..3acd0662548564129a5e381fccbe6a7686a35eef 100644 (file)
--- a/lang.c
+++ b/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;
+}