diff options
Diffstat (limited to 'source/blender/blenfont/intern/blf_lang.c')
-rw-r--r-- | source/blender/blenfont/intern/blf_lang.c | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/source/blender/blenfont/intern/blf_lang.c b/source/blender/blenfont/intern/blf_lang.c index 7054d955faf..da0b767f64d 100644 --- a/source/blender/blenfont/intern/blf_lang.c +++ b/source/blender/blenfont/intern/blf_lang.c @@ -1,4 +1,4 @@ -/** +/* * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** @@ -29,6 +29,8 @@ #include <stdlib.h> #include <string.h> +#include "BLF_api.h" + #ifdef INTERNATIONAL #include <locale.h> @@ -38,15 +40,15 @@ #include "DNA_listBase.h" #include "DNA_vec_types.h" -#include "BKE_utildefines.h" +#include "MEM_guardedalloc.h" -#include "BLI_blenlib.h" #include "BLI_linklist.h" /* linknode */ #include "BLI_string.h" +#include "BLI_path_util.h" #ifdef __APPLE__ -#include "BKE_utildefines.h" + #endif #define DOMAIN_NAME "blender" @@ -54,9 +56,9 @@ #define FONT_SIZE_DEFAULT 12 /* locale options. */ -char global_messagepath[1024]; -char global_language[32]; -char global_encoding_name[32]; +static char global_messagepath[1024]; +static char global_language[32]; +static char global_encoding_name[32]; void BLF_lang_init(void) @@ -69,43 +71,45 @@ void BLF_lang_init(void) BLI_strncpy(global_messagepath, messagepath, sizeof(global_messagepath)); else global_messagepath[0]= '\0'; + } - +/* XXX WARNING!!! IN osx somehow the previous function call jumps in this one??? (ton, ppc) */ void BLF_lang_set(const char *str) { + if(str==NULL) { + return; + } + else { + #if defined (_WIN32) || defined(__APPLE__) - BLI_setenv("LANG", str); + BLI_setenv("LANG", str); #else - char *locreturn= setlocale(LC_ALL, str); - if (locreturn == NULL) { - char *lang; - - lang= (char*)malloc(sizeof(char)*(strlen(str)+7)); + char *locreturn= setlocale(LC_ALL, str); + if (locreturn == NULL) { + char *lang= BLI_sprintfN("%s.UTF-8", str); - lang[0]= '\0'; - strcat(lang, str); - strcat(lang, ".UTF-8"); + locreturn= setlocale(LC_ALL, lang); + if (locreturn == NULL) { + printf("could not change language to %s nor %s\n", str, lang); + } - locreturn= setlocale(LC_ALL, lang); - if (locreturn == NULL) { - printf("could not change language to %s nor %s\n", str, lang); + MEM_freeN(lang); } - free(lang); - } - - setlocale(LC_NUMERIC, "C"); + setlocale(LC_NUMERIC, "C"); #endif - textdomain(DOMAIN_NAME); - bindtextdomain(DOMAIN_NAME, global_messagepath); - /* bind_textdomain_codeset(DOMAIN_NAME, global_encoding_name); */ - strcpy(global_language, str); + textdomain(DOMAIN_NAME); + bindtextdomain(DOMAIN_NAME, global_messagepath); + /* bind_textdomain_codeset(DOMAIN_NAME, global_encoding_name); */ + BLI_strncpy(global_language, str, sizeof(global_language)); + + } } void BLF_lang_encoding(const char *str) { - strcpy(global_encoding_name, str); + BLI_strncpy(global_encoding_name, str, sizeof(global_encoding_name)); /* bind_textdomain_codeset(DOMAIN_NAME, encoding_name); */ } @@ -116,13 +120,15 @@ void BLF_lang_init(void) return; } -void BLF_lang_encoding(char *str) +void BLF_lang_encoding(const char *str) { + (void)str; return; } -void BLF_lang_set(char *str) +void BLF_lang_set(const char *str) { + (void)str; return; } |