aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ports/FontHostConfiguration_android.cpp
diff options
context:
space:
mode:
authorGravatar djsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-05-10 16:13:38 +0000
committerGravatar djsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-05-10 16:13:38 +0000
commitfc9054d4dc1f51d2fca64d0d1b4759c8f2f031d4 (patch)
tree5e6f0dee9904d0b44f15548bf7d0e7085fca3efe /src/ports/FontHostConfiguration_android.cpp
parentc3e050f322a0d29559f2872b0aee3c963e739cc1 (diff)
Use a NDK-compliant way of reading locale.
Remove !SK_BUILD_FOR_ANDROID_NDK from locale-related code git-svn-id: http://skia.googlecode.com/svn/trunk@3899 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/ports/FontHostConfiguration_android.cpp')
-rw-r--r--src/ports/FontHostConfiguration_android.cpp48
1 files changed, 23 insertions, 25 deletions
diff --git a/src/ports/FontHostConfiguration_android.cpp b/src/ports/FontHostConfiguration_android.cpp
index d1164c800d..c12bb40114 100644
--- a/src/ports/FontHostConfiguration_android.cpp
+++ b/src/ports/FontHostConfiguration_android.cpp
@@ -19,9 +19,7 @@
#include "SkString.h"
#include "SkTDArray.h"
#include <expat.h>
-#if !defined(SK_BUILD_FOR_ANDROID_NDK)
- #include <cutils/properties.h>
-#endif
+#include <sys/system_properties.h>
#define SYSTEM_FONTS_FILE "/system/etc/system_fonts.xml"
#define FALLBACK_FONTS_FILE "/system/etc/fallback_fonts.xml"
@@ -131,25 +129,29 @@ void endElementHandler(void *data, const char *tag) {
}
}
-#if !defined(SK_BUILD_FOR_ANDROID_NDK)
/**
* Read the persistent locale.
*/
-void getLocale(char* language, char* region)
+void getLocale(AndroidLocale &locale)
{
- char propLang[PROPERTY_VALUE_MAX], propRegn[PROPERTY_VALUE_MAX];
+ char propLang[PROP_VALUE_MAX], propRegn[PROP_VALUE_MAX];
+ __system_property_get("persist.sys.language", propLang);
+ __system_property_get("persist.sys.country", propRegn);
- property_get("persist.sys.language", propLang, "");
- property_get("persist.sys.country", propRegn, "");
if (*propLang == 0 && *propRegn == 0) {
/* Set to ro properties, default is en_US */
- property_get("ro.product.locale.language", propLang, "en");
- property_get("ro.product.locale.region", propRegn, "US");
+ __system_property_get("ro.product.locale.language", propLang);
+ __system_property_get("ro.product.locale.region", propRegn);
+ if (*propLang == 0 && *propRegn == 0) {
+ strcpy(propLang, "en");
+ strcpy(propRegn, "US");
+ }
}
- strncat(language, propLang, 2);
- strncat(region, propRegn, 2);
+ strncpy(locale.language, propLang, 2);
+ locale.language[2] = '\0';
+ strncpy(locale.region, propRegn, 2);
+ locale.region[2] = '\0';
}
-#endif
/**
* Use the current system locale (language and region) to open the best matching
@@ -160,32 +162,28 @@ void getLocale(char* language, char* region)
*/
FILE* openLocalizedFile(const char* origname) {
FILE* file = 0;
-
-#if !defined(SK_BUILD_FOR_ANDROID_NDK)
SkString basename;
SkString filename;
- char language[3] = "";
- char region[3] = "";
+ AndroidLocale locale;
basename.set(origname);
// Remove the .xml suffix. We'll add it back in a moment.
if (basename.endsWith(".xml")) {
basename.resize(basename.size()-4);
}
- getLocale(language, region);
+ getLocale(locale);
// Try first with language and region
- filename.printf("%s-%s-%s.xml", basename.c_str(), language, region);
+ filename.printf("%s-%s-%s.xml", basename.c_str(), locale.language, locale.region);
file = fopen(filename.c_str(), "r");
if (!file) {
// If not found, try next with just language
- filename.printf("%s-%s.xml", basename.c_str(), language);
+ filename.printf("%s-%s.xml", basename.c_str(), locale.language);
file = fopen(filename.c_str(), "r");
- }
-#endif
- if (!file) {
- // If still not found, try just the original name
- file = fopen(origname, "r");
+ if (!file) {
+ // If still not found, try just the original name
+ file = fopen(origname, "r");
+ }
}
return file;
}