CFCalendarRef CFCalendarCreateWithIdentifier(CFAllocatorRef allocator, CFStringRef identifier) { if (allocator == NULL) allocator = __CFGetDefaultAllocator(); __CFGenericValidateType(allocator, CFAllocatorGetTypeID()); __CFGenericValidateType(identifier, CFStringGetTypeID()); // return NULL until Chinese calendar is available if (identifier != kCFGregorianCalendar && identifier != kCFBuddhistCalendar && identifier != kCFJapaneseCalendar && identifier != kCFIslamicCalendar && identifier != kCFIslamicCivilCalendar && identifier != kCFHebrewCalendar) { // if (identifier != kCFGregorianCalendar && identifier != kCFBuddhistCalendar && identifier != kCFJapaneseCalendar && identifier != kCFIslamicCalendar && identifier != kCFIslamicCivilCalendar && identifier != kCFHebrewCalendar && identifier != kCFChineseCalendar) { if (CFEqual(kCFGregorianCalendar, identifier)) identifier = kCFGregorianCalendar; else if (CFEqual(kCFBuddhistCalendar, identifier)) identifier = kCFBuddhistCalendar; else if (CFEqual(kCFJapaneseCalendar, identifier)) identifier = kCFJapaneseCalendar; else if (CFEqual(kCFIslamicCalendar, identifier)) identifier = kCFIslamicCalendar; else if (CFEqual(kCFIslamicCivilCalendar, identifier)) identifier = kCFIslamicCivilCalendar; else if (CFEqual(kCFHebrewCalendar, identifier)) identifier = kCFHebrewCalendar; // else if (CFEqual(kCFChineseCalendar, identifier)) identifier = kCFChineseCalendar; else return NULL; } struct __CFCalendar *calendar = NULL; uint32_t size = sizeof(struct __CFCalendar) - sizeof(CFRuntimeBase); calendar = (struct __CFCalendar *)_CFRuntimeCreateInstance(allocator, CFCalendarGetTypeID(), size, NULL); if (NULL == calendar) { return NULL; } calendar->_identifier = (CFStringRef)CFRetain(identifier); calendar->_locale = NULL; calendar->_localeID = CFLocaleGetIdentifier(CFLocaleGetSystem()); calendar->_tz = CFTimeZoneCopyDefault(); calendar->_cal = NULL; return (CFCalendarRef)calendar; }
AtomicString InbandTextTrackPrivateAVCF::language() const { if (!m_mediaSelectionOption) return emptyAtom; RetainPtr<CFLocaleRef> locale = adoptCF(AVCFMediaSelectionOptionCopyLocale(mediaSelectionOption())); return CFLocaleGetIdentifier(locale.get()); }
static bool __CFLocaleCopyCollatorID(CFLocaleRef locale, bool user, CFTypeRef *cf, CFStringRef context) { CFStringRef canonLocaleCFStr = NULL; if (!canonLocaleCFStr) { canonLocaleCFStr = CFLocaleGetIdentifier(locale); CFRetain(canonLocaleCFStr); } *cf = canonLocaleCFStr; return canonLocaleCFStr ? true : false; }
AtomicString InbandTextTrackPrivateLegacyAVCF::language() const { if (!m_playerItemTrack) return emptyAtom; RetainPtr<AVCFAssetTrackRef> assetTrack = adoptCF(AVCFPlayerItemTrackCopyAssetTrack(m_playerItemTrack.get())); RetainPtr<CFStringRef> languageCode = adoptCF(AVCFAssetTrackCopyLanguageCode(assetTrack.get())); RetainPtr<CFLocaleRef> locale = adoptCF(CFLocaleCreate(kCFAllocatorDefault, languageCode.get())); return CFLocaleGetIdentifier(locale.get()); }
void CFCalendarSetLocale(CFCalendarRef calendar, CFLocaleRef locale) { CF_OBJC_FUNCDISPATCHV(CFCalendarGetTypeID(), void, calendar, setLocale:locale); __CFGenericValidateType(calendar, CFCalendarGetTypeID()); __CFGenericValidateType(locale, CFLocaleGetTypeID()); CFStringRef localeID = CFLocaleGetIdentifier(locale); if (localeID != calendar->_localeID) { CFRelease(calendar->_localeID); CFRetain(localeID); calendar->_localeID = localeID; if (calendar->_cal) __CFCalendarZapCal(calendar); } }
CFDictionaryRef SecWrapRecoveryPasswordWithAnswers(CFStringRef password, CFArrayRef questions, CFArrayRef answers) { uint32_t vers = 1; CFDataRef iv; CFDataRef wrappedPassword; CFMutableDictionaryRef retval = NULL; CFLocaleRef theLocale = CFLocaleCopyCurrent(); CFStringRef theLocaleString = CFLocaleGetIdentifier(theLocale); CFIndex ix, limit; if (!password || !questions || !answers) return NULL; limit = CFArrayGetCount(answers); if (limit != CFArrayGetCount(questions)) return NULL; // Error CFTypeRef chkval; for (ix=0; ix<limit; ix++) { chkval = CFArrayGetValueAtIndex(answers, ix); if (!chkval || CFGetTypeID(chkval)!=CFStringGetTypeID() || CFEqual((CFStringRef)chkval, CFSTR(""))) return NULL; chkval = CFArrayGetValueAtIndex(questions, ix); if (!chkval || CFGetTypeID(chkval)!=CFStringGetTypeID() || CFEqual((CFStringRef)chkval, CFSTR(""))) return NULL; } iv = createIVFromPassword(password); SecKeyRef wrapKey = secDeriveKeyFromAnswers(answers, theLocale); if((wrappedPassword = encryptString(wrapKey, iv, password)) != NULL) { retval = CFDictionaryCreateMutable(kCFAllocatorDefault, 5, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); CFDictionaryAddValue(retval, kSecRecVersionNumber, CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &vers)); CFDictionaryAddValue(retval, kSecRecQuestions, questions); CFDictionaryAddValue(retval, kSecRecLocale, theLocaleString); CFDictionaryAddValue(retval, kSecRecIV, b64encode(iv)); CFDictionaryAddValue(retval, kSecRecWrappedPassword, wrappedPassword); } if(wrappedPassword) CFRelease(wrappedPassword); CFRelease(iv); CFRelease(wrapKey); CFRelease(theLocale); CFRelease(theLocaleString); return retval; }
wchar_t *getLocaleUserInfo(void) { char *cUserLanguage = NULL; CFLocaleRef userLocaleRef = CFLocaleCopyCurrent(); CFStringRef userLanguage = CFLocaleGetIdentifier(userLocaleRef); if (getenv( "LANG" )) { /* Mac OS X does not respect the LANG variable. We do it ourself. */ return to_wide_string(getenv("LANG")); } else { cUserLanguage = (char *) malloc(((int) CFStringGetLength(userLanguage) + 1) * sizeof(char)); CFStringGetCString(userLanguage, cUserLanguage, ((int) CFStringGetLength(userLanguage)) + 1, kCFStringEncodingUTF8); } return to_wide_string(cUserLanguage); }
static PyObject* usbobserver_user_locale(PyObject *self, PyObject *args) { CFStringRef id = NULL; CFLocaleRef loc = NULL; char buf[512] = {0}; PyObject *ans = NULL; int ok = 0; loc = CFLocaleCopyCurrent(); if (loc) { id = CFLocaleGetIdentifier(loc); if (id && CFStringGetCString(id, buf, 512, kCFStringEncodingUTF8)) { ok = 1; ans = PyUnicode_FromString(buf); } } if (loc) CFRelease(loc); if (ok) return ans; Py_RETURN_NONE; }
Boolean equalValues(CFStringRef number, CFNumberRef expected, CFNumberFormatterStyle style, CFNumberFormatterOptionFlags option) { //CFStringRef enLocaleIdentifier = CFSTR("en_US"); //CFLocaleRef curLocale = CFLocaleCreate(NULL, enLocaleIdentifier); CFLocaleRef curLocale = CFLocaleCopyCurrent(); CFStringRef identifier = CFLocaleGetIdentifier(curLocale); CFNumberFormatterRef fmt; CFNumberRef val; show(CFSTR("Make a Number from : %@"), number); fmt = CFNumberFormatterCreate (0, curLocale, style); val = CFNumberFormatterCreateNumberFromString(0, fmt, number, 0, option); show(CFSTR("val=%@, should be=%@\n"), val, expected); if (!val) return false; return (0 == CFNumberCompare(val, expected, 0)); }
void TclpSetVariables( Tcl_Interp *interp) { #ifndef NO_UNAME struct utsname name; #endif int unameOK; Tcl_DString ds; #ifdef HAVE_COREFOUNDATION char tclLibPath[MAXPATHLEN + 1]; #if MAC_OS_X_VERSION_MAX_ALLOWED > 1020 /* * Set msgcat fallback locale to current CFLocale identifier. */ CFLocaleRef localeRef; if (CFLocaleCopyCurrent != NULL && CFLocaleGetIdentifier != NULL && (localeRef = CFLocaleCopyCurrent())) { CFStringRef locale = CFLocaleGetIdentifier(localeRef); if (locale) { char loc[256]; if (CFStringGetCString(locale, loc, 256, kCFStringEncodingUTF8)) { if (!Tcl_CreateNamespace(interp, "::tcl::mac", NULL, NULL)) { Tcl_ResetResult(interp); } Tcl_SetVar(interp, "::tcl::mac::locale", loc, TCL_GLOBAL_ONLY); } } CFRelease(localeRef); } #endif /* MAC_OS_X_VERSION_MAX_ALLOWED > 1020 */ if (MacOSXGetLibraryPath(interp, MAXPATHLEN, tclLibPath) == TCL_OK) { CONST char *str; CFBundleRef bundleRef; Tcl_SetVar(interp, "tclDefaultLibrary", tclLibPath, TCL_GLOBAL_ONLY); Tcl_SetVar(interp, "tcl_pkgPath", tclLibPath, TCL_GLOBAL_ONLY); Tcl_SetVar(interp, "tcl_pkgPath", " ", TCL_GLOBAL_ONLY | TCL_APPEND_VALUE); str = TclGetEnv("DYLD_FRAMEWORK_PATH", &ds); if ((str != NULL) && (str[0] != '\0')) { char *p = Tcl_DStringValue(&ds); /* * Convert DYLD_FRAMEWORK_PATH from colon to space separated. */ do { if (*p == ':') { *p = ' '; } } while (*p++); Tcl_SetVar(interp, "tcl_pkgPath", Tcl_DStringValue(&ds), TCL_GLOBAL_ONLY | TCL_APPEND_VALUE); Tcl_SetVar(interp, "tcl_pkgPath", " ", TCL_GLOBAL_ONLY | TCL_APPEND_VALUE); Tcl_DStringFree(&ds); } bundleRef = CFBundleGetMainBundle(); if (bundleRef) { CFURLRef frameworksURL; Tcl_StatBuf statBuf; frameworksURL = CFBundleCopyPrivateFrameworksURL(bundleRef); if (frameworksURL) { if (CFURLGetFileSystemRepresentation(frameworksURL, TRUE, (unsigned char*) tclLibPath, MAXPATHLEN) && ! TclOSstat(tclLibPath, &statBuf) && S_ISDIR(statBuf.st_mode)) { Tcl_SetVar(interp, "tcl_pkgPath", tclLibPath, TCL_GLOBAL_ONLY | TCL_APPEND_VALUE); Tcl_SetVar(interp, "tcl_pkgPath", " ", TCL_GLOBAL_ONLY | TCL_APPEND_VALUE); } CFRelease(frameworksURL); } frameworksURL = CFBundleCopySharedFrameworksURL(bundleRef); if (frameworksURL) { if (CFURLGetFileSystemRepresentation(frameworksURL, TRUE, (unsigned char*) tclLibPath, MAXPATHLEN) && ! TclOSstat(tclLibPath, &statBuf) && S_ISDIR(statBuf.st_mode)) { Tcl_SetVar(interp, "tcl_pkgPath", tclLibPath, TCL_GLOBAL_ONLY | TCL_APPEND_VALUE); Tcl_SetVar(interp, "tcl_pkgPath", " ", TCL_GLOBAL_ONLY | TCL_APPEND_VALUE); } CFRelease(frameworksURL); } } Tcl_SetVar(interp, "tcl_pkgPath", pkgPath, TCL_GLOBAL_ONLY | TCL_APPEND_VALUE); } else #endif /* HAVE_COREFOUNDATION */ { Tcl_SetVar(interp, "tcl_pkgPath", pkgPath, TCL_GLOBAL_ONLY); } #ifdef DJGPP Tcl_SetVar2(interp, "tcl_platform", "platform", "dos", TCL_GLOBAL_ONLY); #else Tcl_SetVar2(interp, "tcl_platform", "platform", "unix", TCL_GLOBAL_ONLY); #endif unameOK = 0; #ifndef NO_UNAME if (uname(&name) >= 0) { CONST char *native; unameOK = 1; native = Tcl_ExternalToUtfDString(NULL, name.sysname, -1, &ds); Tcl_SetVar2(interp, "tcl_platform", "os", native, TCL_GLOBAL_ONLY); Tcl_DStringFree(&ds); /* * The following code is a special hack to handle differences in the * way version information is returned by uname. On most systems the * full version number is available in name.release. However, under * AIX the major version number is in name.version and the minor * version number is in name.release. */ if ((strchr(name.release, '.') != NULL) || !isdigit(UCHAR(name.version[0]))) { /* INTL: digit */ Tcl_SetVar2(interp, "tcl_platform", "osVersion", name.release, TCL_GLOBAL_ONLY); } else { #ifdef DJGPP /* * For some obscure reason DJGPP puts major version into * name.release and minor into name.version. As of DJGPP 2.04 this * is documented in djgpp libc.info file. */ Tcl_SetVar2(interp, "tcl_platform", "osVersion", name.release, TCL_GLOBAL_ONLY); Tcl_SetVar2(interp, "tcl_platform", "osVersion", ".", TCL_GLOBAL_ONLY|TCL_APPEND_VALUE); Tcl_SetVar2(interp, "tcl_platform", "osVersion", name.version, TCL_GLOBAL_ONLY|TCL_APPEND_VALUE); #else Tcl_SetVar2(interp, "tcl_platform", "osVersion", name.version, TCL_GLOBAL_ONLY); Tcl_SetVar2(interp, "tcl_platform", "osVersion", ".", TCL_GLOBAL_ONLY|TCL_APPEND_VALUE); Tcl_SetVar2(interp, "tcl_platform", "osVersion", name.release, TCL_GLOBAL_ONLY|TCL_APPEND_VALUE); #endif /* DJGPP */ } Tcl_SetVar2(interp, "tcl_platform", "machine", name.machine, TCL_GLOBAL_ONLY); } #endif /* !NO_UNAME */ if (!unameOK) { Tcl_SetVar2(interp, "tcl_platform", "os", "", TCL_GLOBAL_ONLY); Tcl_SetVar2(interp, "tcl_platform", "osVersion", "", TCL_GLOBAL_ONLY); Tcl_SetVar2(interp, "tcl_platform", "machine", "", TCL_GLOBAL_ONLY); } /* * Copy the username of the real user (according to getuid()) into * tcl_platform(user). */ { struct passwd *pwEnt = TclpGetPwUid(getuid()); const char *user; if (pwEnt == NULL) { user = ""; Tcl_DStringInit(&ds); /* ensure cleanliness */ } else { user = Tcl_ExternalToUtfDString(NULL, pwEnt->pw_name, -1, &ds); } Tcl_SetVar2(interp, "tcl_platform", "user", user, TCL_GLOBAL_ONLY); Tcl_DStringFree(&ds); } }
static gchar* get_darwin_locale (void) { static gchar *darwin_locale = NULL; CFLocaleRef locale = NULL; CFStringRef locale_language = NULL; CFStringRef locale_country = NULL; CFStringRef locale_script = NULL; CFStringRef locale_cfstr = NULL; CFIndex bytes_converted; CFIndex bytes_written; CFIndex len; int i; if (darwin_locale != NULL) return g_strdup (darwin_locale); locale = CFLocaleCopyCurrent (); if (locale) { locale_language = CFLocaleGetValue (locale, kCFLocaleLanguageCode); if (locale_language != NULL && CFStringGetBytes(locale_language, CFRangeMake (0, CFStringGetLength (locale_language)), kCFStringEncodingMacRoman, 0, FALSE, NULL, 0, &bytes_converted) > 0) { len = bytes_converted + 1; locale_country = CFLocaleGetValue (locale, kCFLocaleCountryCode); if (locale_country != NULL && CFStringGetBytes (locale_country, CFRangeMake (0, CFStringGetLength (locale_country)), kCFStringEncodingMacRoman, 0, FALSE, NULL, 0, &bytes_converted) > 0) { len += bytes_converted + 1; locale_script = CFLocaleGetValue (locale, kCFLocaleScriptCode); if (locale_script != NULL && CFStringGetBytes (locale_script, CFRangeMake (0, CFStringGetLength (locale_script)), kCFStringEncodingMacRoman, 0, FALSE, NULL, 0, &bytes_converted) > 0) { len += bytes_converted + 1; } darwin_locale = (char *) g_malloc (len + 1); CFStringGetBytes (locale_language, CFRangeMake (0, CFStringGetLength (locale_language)), kCFStringEncodingMacRoman, 0, FALSE, (UInt8 *) darwin_locale, len, &bytes_converted); darwin_locale[bytes_converted] = '-'; bytes_written = bytes_converted + 1; if (locale_script != NULL && CFStringGetBytes (locale_script, CFRangeMake (0, CFStringGetLength (locale_script)), kCFStringEncodingMacRoman, 0, FALSE, (UInt8 *) &darwin_locale[bytes_written], len - bytes_written, &bytes_converted) > 0) { darwin_locale[bytes_written + bytes_converted] = '-'; bytes_written += bytes_converted + 1; } CFStringGetBytes (locale_country, CFRangeMake (0, CFStringGetLength (locale_country)), kCFStringEncodingMacRoman, 0, FALSE, (UInt8 *) &darwin_locale[bytes_written], len - bytes_written, &bytes_converted); darwin_locale[bytes_written + bytes_converted] = '\0'; } } if (darwin_locale == NULL) { locale_cfstr = CFLocaleGetIdentifier (locale); if (locale_cfstr) { len = CFStringGetMaximumSizeForEncoding (CFStringGetLength (locale_cfstr), kCFStringEncodingMacRoman) + 1; darwin_locale = (char *) g_malloc (len); if (!CFStringGetCString (locale_cfstr, darwin_locale, len, kCFStringEncodingMacRoman)) { g_free (darwin_locale); CFRelease (locale); darwin_locale = NULL; return NULL; } for (i = 0; i < strlen (darwin_locale); i++) if (darwin_locale [i] == '_') darwin_locale [i] = '-'; } } CFRelease (locale); } return g_strdup (darwin_locale); }
bool PluginPackage::fetchInfo() { if (!load()) return false; WTF::RetainPtr<CFDictionaryRef> mimeDict; WTF::RetainPtr<CFTypeRef> mimeTypesFileName = CFBundleGetValueForInfoDictionaryKey(m_module, CFSTR("WebPluginMIMETypesFilename")); if (mimeTypesFileName && CFGetTypeID(mimeTypesFileName.get()) == CFStringGetTypeID()) { WTF::RetainPtr<CFStringRef> fileName = (CFStringRef)mimeTypesFileName.get(); WTF::RetainPtr<CFStringRef> homeDir = homeDirectoryPath().createCFString(); WTF::RetainPtr<CFStringRef> path = CFStringCreateWithFormat(0, 0, CFSTR("%@/Library/Preferences/%@"), homeDir.get(), fileName.get()); WTF::RetainPtr<CFDictionaryRef> plist = readPListFile(path.get(), /*createFile*/ false, m_module); if (plist) { // If the plist isn't localized, have the plug-in recreate it in the preferred language. WTF::RetainPtr<CFStringRef> localizationName = (CFStringRef)CFDictionaryGetValue(plist.get(), CFSTR("WebPluginLocalizationName")); CFLocaleRef locale = CFLocaleCopyCurrent(); if (localizationName != CFLocaleGetIdentifier(locale)) plist = readPListFile(path.get(), /*createFile*/ true, m_module); CFRelease(locale); } else { // Plist doesn't exist, ask the plug-in to create it. plist = readPListFile(path.get(), /*createFile*/ true, m_module); } mimeDict = (CFDictionaryRef)CFDictionaryGetValue(plist.get(), CFSTR("WebPluginMIMETypes")); } if (!mimeDict) mimeDict = (CFDictionaryRef)CFBundleGetValueForInfoDictionaryKey(m_module, CFSTR("WebPluginMIMETypes")); if (mimeDict) { CFIndex propCount = CFDictionaryGetCount(mimeDict.get()); Vector<const void*, 128> keys(propCount); Vector<const void*, 128> values(propCount); CFDictionaryGetKeysAndValues(mimeDict.get(), keys.data(), values.data()); for (int i = 0; i < propCount; ++i) { String mimeType = (CFStringRef)keys[i]; mimeType = mimeType.lower(); WTF::RetainPtr<CFDictionaryRef> extensionsDict = (CFDictionaryRef)values[i]; WTF:RetainPtr<CFNumberRef> enabled = (CFNumberRef)CFDictionaryGetValue(extensionsDict.get(), CFSTR("WebPluginTypeEnabled")); if (enabled) { int enabledValue = 0; if (CFNumberGetValue(enabled.get(), kCFNumberIntType, &enabledValue) && enabledValue == 0) continue; } Vector<String> mimeExtensions; WTF::RetainPtr<CFArrayRef> extensions = (CFArrayRef)CFDictionaryGetValue(extensionsDict.get(), CFSTR("WebPluginExtensions")); if (extensions) { CFIndex extensionCount = CFArrayGetCount(extensions.get()); for (CFIndex i = 0; i < extensionCount; ++i) { String extension =(CFStringRef)CFArrayGetValueAtIndex(extensions.get(), i); extension = extension.lower(); mimeExtensions.append(extension); } } m_mimeToExtensions.set(mimeType, mimeExtensions); String description = (CFStringRef)CFDictionaryGetValue(extensionsDict.get(), CFSTR("WebPluginTypeDescription")); m_mimeToDescriptions.set(mimeType, description); } m_name = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(m_module, CFSTR("WebPluginName")); m_description = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(m_module, CFSTR("WebPluginDescription")); } else { int resFile = CFBundleOpenBundleResourceMap(m_module); UseResFile(resFile); Vector<String> mimes = stringListFromResourceId(MIMEListStringStringNumber); if (mimes.size() % 2 != 0) return false; Vector<String> descriptions = stringListFromResourceId(MIMEDescriptionStringNumber); if (descriptions.size() != mimes.size() / 2) return false; for (size_t i = 0; i < mimes.size(); i += 2) { String mime = mimes[i].lower(); Vector<String> extensions; mimes[i + 1].lower().split(UChar(','), extensions); m_mimeToExtensions.set(mime, extensions); m_mimeToDescriptions.set(mime, descriptions[i / 2]); } Vector<String> names = stringListFromResourceId(PluginNameOrDescriptionStringNumber); if (names.size() == 2) { m_description = names[0]; m_name = names[1]; } CFBundleCloseBundleResourceMap(m_module, resFile); } LOG(Plugins, "PluginPackage::fetchInfo(): Found plug-in '%s'", m_name.utf8().data()); if (isPluginBlacklisted()) { LOG(Plugins, "\tPlug-in is blacklisted!"); return false; } return true; }
SState::SState() { // 1. SET THE TRIVIAL DEFAULTS m_enGameMode = IN_DEMO; m_bQuitFlag = false; m_pcArgv0 = NULL; m_iNumPlayers = 2; m_enTeamMode = Team_ONE_VS_ONE; m_iTeamSize = 5; m_bTeamMultiselect = false; m_iRoundLength = 60; m_iHitPoints = 100; m_iGameSpeed = 12; #ifdef _WINDOWS #ifdef _DEBUG m_bFullscreen = false; #else m_bFullscreen = true; #endif #elif defined(MACOSX) //[segabor] #ifdef DEBUG m_bFullscreen = false; #else m_bFullscreen = true; #endif #else m_bFullscreen = false; #endif m_iChannels = 2; m_iMixingRate = MIX_DEFAULT_FREQUENCY; m_iMixingBits = 2; m_iMusicVolume = 50; m_iSoundVolume = 100; static const int aiDefaultKeys[MAXPLAYERS][9] = { { SDLK_UP, SDLK_DOWN, SDLK_LEFT, SDLK_RIGHT, SDLK_PAGEDOWN, SDLK_DELETE, SDLK_INSERT, SDLK_END, SDLK_HOME }, { SDLK_w, SDLK_s, SDLK_a, SDLK_d, SDLK_x, SDLK_f, SDLK_r, SDLK_g, SDLK_t }, { SDLK_u, SDLK_j, SDLK_h, SDLK_k, SDLK_i, SDLK_b, SDLK_n, SDLK_m, SDLK_COMMA }, { SDLK_F2, SDLK_F3, SDLK_F4, SDLK_F5, SDLK_F6, SDLK_F7, SDLK_F8, SDLK_F9, SDLK_F10 }, }; for ( int i=0; i<MAXPLAYERS; ++i ) for ( int j=0; j<9; ++j ) m_aiPlayerKeys[i][j] = aiDefaultKeys[i][j]; strcpy( m_acLatestServer, "apocalypse.rulez.org" ); m_bServer = false; strcpy( m_acNick, "Mortal" ); strcpy( m_acLanguage, "en" ); // 2. SO FAR THESE WERE THE EASY DEFAULTS // NOW MOVE ON TO THE TRICKIER ONES. // 2.1. FIND THE LANGUAGE #ifdef _WINDOWS LANGID iLangID = GetUserDefaultLangID() & 0x007f; const char* pcLang; switch ( iLangID ) { case 0x0e: pcLang = "hu"; case 0x0c: pcLang = "fr"; case 0x0a: pcLang = "es"; default: pcLang = "en"; } strcpy( m_acNick, pcLang ); #elif defined(MACOSX) //[segabor] OS X style locale handling CFLocaleRef userLocaleRef = CFLocaleCopyCurrent(); char cbuff[255]; CFStringGetCString(CFLocaleGetIdentifier(userLocaleRef), cbuff, 255, kCFStringEncodingASCII); m_acLanguage[0] = cbuff[0]; m_acLanguage[1] = cbuff[1]; m_acLanguage[2] = 0; debug("Language code is %s\n", m_acLanguage); #else // Read the locale from the operating system char* pcLocale = setlocale( LC_CTYPE, NULL ); debug( "The locale returned by the operating system is '%s'\n", pcLocale ? pcLocale : "NULL" ); if ( NULL == pcLocale || strcmp( pcLocale, "C") == 0 ) { // Try the 'GETENV' method pcLocale = getenv( "LANG" ); debug( "The LANG envvar is '%s'\n", pcLocale ? pcLocale : "NULL" ); } if ( NULL != pcLocale ) { strncpy( m_acLanguage, pcLocale, 2 ); m_acLanguage[2] = 0; } else { strcpy( m_acLanguage, "en" ); } #endif // 2.2. FIND THE USER NAME #ifdef _WINDOWS m_acNick[0] = 0; DWORD iLen = 127; BOOL iResult = GetUserName( m_acNick, &iLen ); if ( 0 == iResult ) { m_acNick[0] = 0; debug( "GetUserName failed: %d.\n", iResult ); } #else int iResult = getlogin_r( m_acNick, 127 ); if ( iResult ) { debug( "getlogin_r failed: %d\n", iResult ); strcpy( m_acNick, getenv("USER") ); } #endif if ( !m_acNick[0] ) { strcpy( m_acNick, "Mortal"); // Last-ditch default.. } };
static CFStringRef createLocaleIDFromLocaleAndCalendar(CFLocaleRef locale, CFCalendarRef calendar) { CFMutableDictionaryRef dict; { CFDictionaryRef immutableDict = CFLocaleCreateComponentsFromLocaleIdentifier(kCFAllocatorSystemDefault, CFLocaleGetIdentifier(locale)); dict = CFDictionaryCreateMutableCopy(kCFAllocatorSystemDefault, 0, immutableDict); CFRelease(immutableDict); } if (calendar) { CFDictionarySetValue(dict, kCFLocaleCalendar, calendar); } CFStringRef localeID = CFLocaleCreateLocaleIdentifierFromComponents(kCFAllocatorSystemDefault, dict); CFRelease(dict); return localeID; }
static void LOCALE_Init(void) { /* extern void __wine_init_codepages( const union cptable *ansi_cp, const union cptable *oem_cp, const union cptable *unix_cp ); */ // UINT ansi_cp = 1252, oem_cp = 437, mac_cp = 10000, unix_cp; UINT unix_cp = 0; #ifdef __APPLE__ /* MacOS doesn't set the locale environment variables so we have to do it ourselves */ CFArrayRef preferred_locales, all_locales; CFStringRef user_language_string_ref = NULL; char user_locale[50]; CFLocaleRef user_locale_ref = CFLocaleCopyCurrent(); CFStringRef user_locale_string_ref = CFLocaleGetIdentifier( user_locale_ref ); CFStringGetCString( user_locale_string_ref, user_locale, sizeof(user_locale), kCFStringEncodingUTF8 ); CFRelease( user_locale_ref ); if (!strchr( user_locale, '.' )) strcat( user_locale, ".UTF-8" ); unix_cp = CP_UTF8; /* default to utf-8 even if we don't get a valid locale */ setenv( "LANG", user_locale, 0 ); // TRACE( "setting locale to '%s'\n", user_locale ); /* We still want to set the retrieve the preferred language as chosen in System Preferences.app, because it can differ from CFLocaleCopyCurrent(). */ all_locales = CFLocaleCopyAvailableLocaleIdentifiers(); preferred_locales = CFBundleCopyLocalizationsForPreferences( all_locales, NULL ); if (preferred_locales && CFArrayGetCount( preferred_locales )) user_language_string_ref = CFArrayGetValueAtIndex( preferred_locales, 0 ); CFRelease( all_locales ); #endif /* __APPLE__ */ // FIXME setlocale( LC_ALL, "" ); unix_cp = setup_unix_locales(); if (!lcid_LC_MESSAGES) lcid_LC_MESSAGES = lcid_LC_CTYPE; #if 0 #ifdef __APPLE__ /* Override lcid_LC_MESSAGES with user_language if LC_MESSAGES is set to default */ if (lcid_LC_MESSAGES == lcid_LC_CTYPE && user_language_string_ref) { struct locale_name locale_name; WCHAR buffer[128]; CFStringGetCString( user_language_string_ref, user_locale, sizeof(user_locale), kCFStringEncodingUTF8 ); strcpynAtoW( buffer, user_locale, sizeof(buffer)/sizeof(WCHAR) ); parse_locale_name( buffer, &locale_name ); lcid_LC_MESSAGES = locale_name.lcid; TRACE( "setting lcid_LC_MESSAGES to '%s'\n", user_locale ); } if (preferred_locales) CFRelease( preferred_locales ); #endif NtSetDefaultUILanguage( LANGIDFROMLCID(lcid_LC_MESSAGES) ); NtSetDefaultLocale( TRUE, lcid_LC_MESSAGES ); NtSetDefaultLocale( FALSE, lcid_LC_CTYPE ); ansi_cp = get_lcid_codepage( LOCALE_USER_DEFAULT ); GetLocaleInfoW( LOCALE_USER_DEFAULT, LOCALE_IDEFAULTMACCODEPAGE | LOCALE_RETURN_NUMBER, (LPWSTR)&mac_cp, sizeof(mac_cp)/sizeof(WCHAR) ); GetLocaleInfoW( LOCALE_USER_DEFAULT, LOCALE_IDEFAULTCODEPAGE | LOCALE_RETURN_NUMBER, (LPWSTR)&oem_cp, sizeof(oem_cp)/sizeof(WCHAR) ); if (!unix_cp) GetLocaleInfoW( LOCALE_USER_DEFAULT, LOCALE_IDEFAULTUNIXCODEPAGE | LOCALE_RETURN_NUMBER, (LPWSTR)&unix_cp, sizeof(unix_cp)/sizeof(WCHAR) ); if (!(ansi_cptable = wine_cp_get_table( ansi_cp ))) ansi_cptable = wine_cp_get_table( 1252 ); if (!(oem_cptable = wine_cp_get_table( oem_cp ))) oem_cptable = wine_cp_get_table( 437 ); if (!(mac_cptable = wine_cp_get_table( mac_cp ))) mac_cptable = wine_cp_get_table( 10000 ); if (unix_cp != CP_UTF8) { if (!(unix_cptable = wine_cp_get_table( unix_cp ))) unix_cptable = wine_cp_get_table( 28591 ); } __wine_init_codepages( ansi_cptable, oem_cptable, unix_cptable ); TRACE( "ansi=%03d oem=%03d mac=%03d unix=%03d\n", ansi_cptable->info.codepage, oem_cptable->info.codepage, mac_cptable->info.codepage, unix_cp ); setlocale(LC_NUMERIC, "C"); /* FIXME: oleaut32 depends on this */ #endif }
char *rktio_system_language_country(rktio_t *rktio) { #ifdef MACOS_UNICODE_SUPPORT /* Mac OS */ CFLocaleRef l; CFStringRef s; int len; char *r; l = CFLocaleCopyCurrent(); s = CFLocaleGetIdentifier(l); len = CFStringGetLength(s); r = malloc(len * 6 + 1); CFStringGetCString(s, r, len * 6 + 1, kCFStringEncodingUTF8); CFRelease(l); r[5] = 0; return r; #elif defined(RKTIO_SYSTEM_WINDOWS) /* Windows */ LCID l; int llen, clen; wchar_t *lang, *country, *s; l = GetUserDefaultLCID(); llen = GetLocaleInfoW(l, LOCALE_SENGLANGUAGE, NULL, 0); lang = malloc(llen * sizeof(wchar_t)); GetLocaleInfoW(l, LOCALE_SENGLANGUAGE, lang, llen); if (llen) llen -= 1; /* drop nul terminator */ clen = GetLocaleInfoW(l, LOCALE_SENGCOUNTRY, NULL, 0); country = malloc(clen * sizeof(wchar_t)); GetLocaleInfoW(l, LOCALE_SENGCOUNTRY, country, clen); if (clen) clen -= 1; /* drop nul terminator */ s = malloc((clen + llen + 2) * sizeof(wchar_t)); memcpy(s, lang, llen * sizeof(wchar_t)); memcpy(s + 1 + llen, country, clen * sizeof(wchar_t)); s[llen] = '_'; s[clen + llen + 1] = 0; free(lang); free(country); return NARROW_PATH_copy_then_free(s); #else /* Unix */ char *s; s = getenv("LC_ALL"); if (!s) s = getenv("LC_CTYPE"); if (!s) s = getenv("LANG"); if (s) { /* Check that the environment variable has the form xx_XX[.ENC] */ if ((s[0] >= 'a') && (s[0] <= 'z') && (s[1] >= 'a') && (s[1] <= 'z') && (s[2] == '_') && (s[3] >= 'A') && (s[3] <= 'Z') && (s[4] >= 'A') && (s[4] <= 'Z') && (!s[5] || s[5] == '.')) { /* Good */ } else s = NULL; } if (!s) s = "en_US"; return MSC_IZE(strdup)(s); #endif }