#include "common.h" #include "Locale.h" #include #include "ByteBuffer.h" bool locale_set=false; char my_locale[5]; const char *cconf = "WTF/config.wtf"; const char *cconfentry = "SET locale \""; void SetLocale(const char *loc) { my_locale[4] = 0; if(loc && strlen(loc)) { memcpy(my_locale,loc,4); } else { uint32 fs = GetFileSize(cconf); std::fstream fh; std::string s; fh.open(cconf,std::ios_base::in); if(!fh.is_open()) { printf("ERROR: unable to detect locale, could not open '%s'\n",cconf); return; } char *buf = new char[fs]; fh.read((char*)buf,fs); fh.close(); for(uint32 i=0; i= strlen(cconfentry) && !memcmp(s.c_str(),cconfentry,strlen(cconfentry))) { memcpy(my_locale,s.c_str() + strlen(cconfentry), 4); printf("Auto-detected locale '%s'\n",my_locale); break; } s.clear(); } else { s += buf[i]; } } delete [] buf; } locale_set = true; } char *GetLocale(void) { if(locale_set) return &my_locale[0]; return NULL; }