}
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;
+}