mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-07 05:28:52 +00:00
8033370: [parfait] warning from b126 for solaris/native/sun/util/locale/provider: JNI exception pending
Reviewed-by: msheppar
This commit is contained in:
parent
81c4d4ed41
commit
79938735a2
@ -285,8 +285,6 @@ SUNWprivate_1.1 {
|
||||
# Java_sun_misc_VM_unsuspendSomeThreads; threads.c
|
||||
# Java_sun_misc_VM_unsuspendThreads; threads.c
|
||||
|
||||
Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getPattern;
|
||||
|
||||
# Outcalls from libjvm done using dlsym().
|
||||
|
||||
VerifyClassCodes;
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
*/
|
||||
|
||||
#include "sun_util_locale_provider_HostLocaleProviderAdapterImpl.h"
|
||||
#include "jni_util.h"
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#include <stdio.h>
|
||||
|
||||
@ -63,6 +64,10 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
|
||||
localeString = getMacOSXLocale(posixCat);
|
||||
if (localeString == NULL) {
|
||||
localeString = getPosixLocale(posixCat);
|
||||
if (localeString == NULL) {
|
||||
JNU_ThrowOutOfMemoryError(env, NULL);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
ret = (*env)->NewStringUTF(env, localeString);
|
||||
free(localeString);
|
||||
@ -127,6 +132,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
|
||||
JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getAmPmStrings
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray ampms) {
|
||||
CFLocaleRef cflocale = CFLocaleCopyCurrent();
|
||||
jstring tmp_string;
|
||||
if (cflocale != NULL) {
|
||||
CFDateFormatterRef df = CFDateFormatterCreate(kCFAllocatorDefault,
|
||||
cflocale,
|
||||
@ -138,13 +144,18 @@ JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderA
|
||||
if (amStr != NULL) {
|
||||
CFStringGetCString(amStr, buf, BUFLEN, kCFStringEncodingUTF8);
|
||||
CFRelease(amStr);
|
||||
(*env)->SetObjectArrayElement(env, ampms, 0, (*env)->NewStringUTF(env, buf));
|
||||
tmp_string = (*env)->NewStringUTF(env, buf);
|
||||
if (tmp_string != NULL) {
|
||||
(*env)->SetObjectArrayElement(env, ampms, 0, tmp_string);
|
||||
}
|
||||
}
|
||||
CFStringRef pmStr = CFDateFormatterCopyProperty(df, kCFDateFormatterPMSymbol);
|
||||
if (pmStr != NULL) {
|
||||
CFStringGetCString(pmStr, buf, BUFLEN, kCFStringEncodingUTF8);
|
||||
CFRelease(pmStr);
|
||||
(*env)->SetObjectArrayElement(env, ampms, 1, (*env)->NewStringUTF(env, buf));
|
||||
if (!(*env)->ExceptionCheck(env)){
|
||||
CFStringRef pmStr = CFDateFormatterCopyProperty(df, kCFDateFormatterPMSymbol);
|
||||
if (pmStr != NULL) {
|
||||
CFStringGetCString(pmStr, buf, BUFLEN, kCFStringEncodingUTF8);
|
||||
CFRelease(pmStr);
|
||||
(*env)->SetObjectArrayElement(env, ampms, 1, (*env)->NewStringUTF(env, buf));
|
||||
}
|
||||
}
|
||||
CFRelease(df);
|
||||
}
|
||||
@ -647,10 +658,16 @@ static CFNumberFormatterStyle convertNumberFormatterStyle(jint javaStyle) {
|
||||
|
||||
static void copyArrayElements(JNIEnv *env, CFArrayRef cfarray, jobjectArray jarray, CFIndex sindex, int dindex, int count) {
|
||||
char buf[BUFLEN];
|
||||
jstring tmp_string;
|
||||
|
||||
for (; count > 0; sindex++, dindex++, count--) {
|
||||
CFStringGetCString(CFArrayGetValueAtIndex(cfarray, sindex), buf, BUFLEN, kCFStringEncodingUTF8);
|
||||
(*env)->SetObjectArrayElement(env, jarray, dindex, (*env)->NewStringUTF(env, buf));
|
||||
tmp_string = (*env)->NewStringUTF(env, buf);
|
||||
if (tmp_string != NULL) {
|
||||
(*env)->SetObjectArrayElement(env, jarray, dindex, tmp_string);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2014 Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,100 +25,10 @@
|
||||
|
||||
package sun.util.locale.provider;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.text.spi.DateFormatProvider;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* LocaleProviderAdapter implementation for the Unix locale data
|
||||
*
|
||||
* @author Naoto Sato
|
||||
*/
|
||||
public class HostLocaleProviderAdapterImpl {
|
||||
static Locale[] supported = {Locale.getDefault(Locale.Category.FORMAT)};
|
||||
|
||||
public static DateFormatProvider getDateFormatProvider() {
|
||||
return new DateFormatProvider() {
|
||||
String posixPattern;
|
||||
|
||||
@Override
|
||||
public Locale[] getAvailableLocales() {
|
||||
// not implemented yet
|
||||
return new Locale[0];
|
||||
}
|
||||
@Override
|
||||
public DateFormat getDateInstance(int style, Locale locale) {
|
||||
posixPattern = getPattern(style, -1, locale.toLanguageTag());
|
||||
return new SimpleDateFormat(convertPosixToJava(posixPattern), locale);
|
||||
}
|
||||
@Override
|
||||
public DateFormat getTimeInstance(int style, Locale locale) {
|
||||
posixPattern = getPattern(-1, style, locale.toLanguageTag());
|
||||
return new SimpleDateFormat(convertPosixToJava(posixPattern), locale);
|
||||
}
|
||||
@Override
|
||||
public DateFormat getDateTimeInstance(int dateStyle,
|
||||
int timeStyle, Locale locale) {
|
||||
posixPattern = getPattern(dateStyle, timeStyle, locale.toLanguageTag());
|
||||
return new SimpleDateFormat(convertPosixToJava(posixPattern), locale);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static String convertPosixToJava(String posixPattern) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
boolean conversion = false;
|
||||
|
||||
for (int index = 0; index < posixPattern.length(); index++) {
|
||||
char c = posixPattern.charAt(index);
|
||||
if (conversion) {
|
||||
switch (c) {
|
||||
case 'a':
|
||||
sb.append("EEE");
|
||||
break;
|
||||
case 'b':
|
||||
sb.append("MMM");
|
||||
break;
|
||||
case 'e':
|
||||
sb.append("dd");
|
||||
break;
|
||||
case 'H':
|
||||
sb.append("kk");
|
||||
break;
|
||||
case 'M':
|
||||
sb.append("mm");
|
||||
break;
|
||||
case 'S':
|
||||
sb.append("ss");
|
||||
break;
|
||||
case 'Y':
|
||||
sb.append("yyyy");
|
||||
break;
|
||||
case 'm':
|
||||
sb.append("MM");
|
||||
break;
|
||||
case 'd':
|
||||
sb.append("dd");
|
||||
break;
|
||||
case 'r':
|
||||
sb.append("hh:mm:ss aa");
|
||||
break;
|
||||
case 'Z':
|
||||
sb.append("zzz");
|
||||
break;
|
||||
}
|
||||
conversion = false;
|
||||
} else {
|
||||
if (c == '%') {
|
||||
conversion = true;
|
||||
} else {
|
||||
sb.append(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private static native String getPattern(int dateStyle, int timeStyle, String langtag);
|
||||
}
|
||||
|
||||
@ -1,77 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include "sun_util_locale_provider_HostLocaleProviderAdapterImpl.h"
|
||||
#include <gdefs.h>
|
||||
#include <string.h>
|
||||
#include <langinfo.h>
|
||||
#include <locale.h>
|
||||
|
||||
#define BUFLEN 64
|
||||
|
||||
/*
|
||||
* Class: sun_util_locale_provider_HostLocaleProviderAdapterImpl
|
||||
* Method: getPattern
|
||||
* Signature: (IILjava/lang/String;)Ljava/lang/String;
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getPattern
|
||||
(JNIEnv *env, jclass cls, jint dateStyle, jint timeStyle, jstring jlangtag) {
|
||||
|
||||
// TEMPORARY!
|
||||
char locale[BUFLEN];
|
||||
char * pch;
|
||||
char * old;
|
||||
char * ret;
|
||||
const char *langtag = (*env)->GetStringUTFChars(env, jlangtag, JNI_FALSE);
|
||||
|
||||
strcpy(locale, langtag);
|
||||
pch = strchr(locale, '-');
|
||||
if (pch != NULL) {
|
||||
*pch = '_';
|
||||
}
|
||||
pch = strchr(locale, '-');
|
||||
if (pch != NULL) {
|
||||
*pch = '\0';
|
||||
}
|
||||
strcat(locale, ".UTF-8");
|
||||
old = setlocale(LC_TIME, "");
|
||||
setlocale(LC_TIME, locale);
|
||||
|
||||
if (dateStyle != (-1) && timeStyle != (-1)) {
|
||||
ret = nl_langinfo(D_T_FMT);
|
||||
} else if (dateStyle != (-1)) {
|
||||
ret = nl_langinfo(D_FMT);
|
||||
} else if (timeStyle != (-1)) {
|
||||
ret = nl_langinfo(T_FMT);
|
||||
} else {
|
||||
ret = "yyyy/MM/dd";
|
||||
}
|
||||
|
||||
setlocale(LC_TIME, old);
|
||||
|
||||
(*env)->ReleaseStringUTFChars(env, jlangtag, langtag);
|
||||
|
||||
return (*env)->NewStringUTF(env, ret);
|
||||
}
|
||||
@ -28,6 +28,9 @@
|
||||
#define _WIN32_WINNT 0x0601
|
||||
#endif
|
||||
|
||||
#include "jni.h"
|
||||
#include "jni_util.h"
|
||||
|
||||
#include <windows.h>
|
||||
#include <shlobj.h>
|
||||
#include <objidl.h>
|
||||
@ -51,7 +54,7 @@
|
||||
#endif
|
||||
|
||||
typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
|
||||
static void SetupI18nProps(LCID lcid, char** language, char** script, char** country,
|
||||
static boolean SetupI18nProps(LCID lcid, char** language, char** script, char** country,
|
||||
char** variant, char** encoding);
|
||||
|
||||
#define PROPSIZE 9 // eight-letter + null terminator
|
||||
@ -60,8 +63,11 @@ static void SetupI18nProps(LCID lcid, char** language, char** script, char** cou
|
||||
static char *
|
||||
getEncodingInternal(LCID lcid)
|
||||
{
|
||||
char * ret = malloc(16);
|
||||
int codepage;
|
||||
char * ret = malloc(16);
|
||||
if (ret == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (GetLocaleInfo(lcid,
|
||||
LOCALE_IDEFAULTANSICODEPAGE,
|
||||
@ -132,7 +138,11 @@ getEncodingInternal(LCID lcid)
|
||||
static char* getConsoleEncoding()
|
||||
{
|
||||
char* buf = malloc(16);
|
||||
int cp = GetConsoleCP();
|
||||
int cp;
|
||||
if (buf == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
cp = GetConsoleCP();
|
||||
if (cp >= 874 && cp <= 950)
|
||||
sprintf(buf, "ms%d", cp);
|
||||
else
|
||||
@ -152,25 +162,33 @@ DllExport const char *
|
||||
getJavaIDFromLangID(LANGID langID)
|
||||
{
|
||||
char * elems[5]; // lang, script, ctry, variant, encoding
|
||||
char * ret = malloc(SNAMESIZE);
|
||||
char * ret;
|
||||
int index;
|
||||
|
||||
SetupI18nProps(MAKELCID(langID, SORT_DEFAULT),
|
||||
&(elems[0]), &(elems[1]), &(elems[2]), &(elems[3]), &(elems[4]));
|
||||
|
||||
// there always is the "language" tag
|
||||
strcpy(ret, elems[0]);
|
||||
|
||||
// append other elements, if any
|
||||
for (index = 1; index < 4; index++) {
|
||||
if ((elems[index])[0] != '\0') {
|
||||
strcat(ret, "-");
|
||||
strcat(ret, elems[index]);
|
||||
}
|
||||
ret = malloc(SNAMESIZE);
|
||||
if (ret == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (index = 0; index < 5; index++) {
|
||||
free(elems[index]);
|
||||
if (SetupI18nProps(MAKELCID(langID, SORT_DEFAULT),
|
||||
&(elems[0]), &(elems[1]), &(elems[2]), &(elems[3]), &(elems[4]))) {
|
||||
|
||||
// there always is the "language" tag
|
||||
strcpy(ret, elems[0]);
|
||||
|
||||
// append other elements, if any
|
||||
for (index = 1; index < 4; index++) {
|
||||
if ((elems[index])[0] != '\0') {
|
||||
strcat(ret, "-");
|
||||
strcat(ret, elems[index]);
|
||||
}
|
||||
}
|
||||
|
||||
for (index = 0; index < 5; index++) {
|
||||
free(elems[index]);
|
||||
}
|
||||
} else {
|
||||
ret = NULL;
|
||||
}
|
||||
|
||||
return ret;
|
||||
@ -259,12 +277,15 @@ cpu_isalist(void)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
static boolean
|
||||
SetupI18nProps(LCID lcid, char** language, char** script, char** country,
|
||||
char** variant, char** encoding) {
|
||||
/* script */
|
||||
char tmp[SNAMESIZE];
|
||||
*script = malloc(PROPSIZE);
|
||||
if (*script == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
if (GetLocaleInfo(lcid,
|
||||
LOCALE_SNAME, tmp, SNAMESIZE) == 0 ||
|
||||
sscanf(tmp, "%*[a-z\\-]%1[A-Z]%[a-z]", *script, &((*script)[1])) == 0 ||
|
||||
@ -274,6 +295,9 @@ SetupI18nProps(LCID lcid, char** language, char** script, char** country,
|
||||
|
||||
/* country */
|
||||
*country = malloc(PROPSIZE);
|
||||
if (*country == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
if (GetLocaleInfo(lcid,
|
||||
LOCALE_SISO3166CTRYNAME, *country, PROPSIZE) == 0 &&
|
||||
GetLocaleInfo(lcid,
|
||||
@ -283,6 +307,9 @@ SetupI18nProps(LCID lcid, char** language, char** script, char** country,
|
||||
|
||||
/* language */
|
||||
*language = malloc(PROPSIZE);
|
||||
if (*language == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
if (GetLocaleInfo(lcid,
|
||||
LOCALE_SISO639LANGNAME, *language, PROPSIZE) == 0 &&
|
||||
GetLocaleInfo(lcid,
|
||||
@ -294,6 +321,9 @@ SetupI18nProps(LCID lcid, char** language, char** script, char** country,
|
||||
|
||||
/* variant */
|
||||
*variant = malloc(PROPSIZE);
|
||||
if (*variant == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
(*variant)[0] = '\0';
|
||||
|
||||
/* handling for Norwegian */
|
||||
@ -308,6 +338,10 @@ SetupI18nProps(LCID lcid, char** language, char** script, char** country,
|
||||
|
||||
/* encoding */
|
||||
*encoding = getEncodingInternal(lcid);
|
||||
if (*encoding == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
java_props_t *
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
*/
|
||||
|
||||
#include "sun_util_locale_provider_HostLocaleProviderAdapterImpl.h"
|
||||
#include "jni_util.h"
|
||||
#include <windows.h>
|
||||
#include <gdefs.h>
|
||||
#include <stdlib.h>
|
||||
@ -197,8 +198,13 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
|
||||
}
|
||||
|
||||
localeString = (char *)getJavaIDFromLangID(langid);
|
||||
ret = (*env)->NewStringUTF(env, localeString);
|
||||
free(localeString);
|
||||
if (localeString != NULL) {
|
||||
ret = (*env)->NewStringUTF(env, localeString);
|
||||
free(localeString);
|
||||
} else {
|
||||
JNU_ThrowOutOfMemoryError(env, "memory allocation error");
|
||||
ret = NULL;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -211,6 +217,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
|
||||
(JNIEnv *env, jclass cls, jint dateStyle, jint timeStyle, jstring jlangtag) {
|
||||
WCHAR pattern[BUFLEN];
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
CHECK_NULL_RETURN(langtag, NULL);
|
||||
|
||||
pattern[0] = L'\0';
|
||||
|
||||
@ -238,8 +245,11 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getCalendarID
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag) {
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
jint ret = getCalendarID(langtag);
|
||||
const jchar *langtag;
|
||||
jint ret;
|
||||
langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
CHECK_NULL_RETURN(langtag, 0);
|
||||
ret = getCalendarID(langtag);
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
return ret;
|
||||
}
|
||||
@ -252,10 +262,13 @@ JNIEXPORT jint JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterIm
|
||||
JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getAmPmStrings
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray ampms) {
|
||||
WCHAR buf[BUFLEN];
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
const jchar *langtag;
|
||||
|
||||
// AM
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_S1159, buf, BUFLEN);
|
||||
int got;
|
||||
langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
CHECK_NULL_RETURN(langtag, NULL);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_S1159, buf, BUFLEN);
|
||||
if (got) {
|
||||
(*env)->SetObjectArrayElement(env, ampms, 0, (*env)->NewString(env, buf, wcslen(buf)));
|
||||
}
|
||||
@ -280,6 +293,7 @@ JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderA
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray eras) {
|
||||
WCHAR ad[BUFLEN];
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
CHECK_NULL_RETURN(langtag, eras);
|
||||
|
||||
getCalendarInfoWrapper(langtag, getCalendarID(langtag), NULL,
|
||||
CAL_SERASTRING, ad, BUFLEN, NULL);
|
||||
@ -347,10 +361,14 @@ JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderA
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getNumberPattern
|
||||
(JNIEnv *env, jclass cls, jint numberStyle, jstring jlangtag) {
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
const jchar *langtag;
|
||||
jstring ret;
|
||||
WCHAR * pattern;
|
||||
|
||||
WCHAR * pattern = getNumberPattern(langtag, numberStyle);
|
||||
langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
CHECK_NULL_RETURN(langtag, NULL);
|
||||
pattern = getNumberPattern(langtag, numberStyle);
|
||||
CHECK_NULL_RETURN(pattern, NULL);
|
||||
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
ret = (*env)->NewString(env, pattern, wcslen(pattern));
|
||||
@ -367,8 +385,10 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
|
||||
JNIEXPORT jboolean JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_isNativeDigit
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag) {
|
||||
DWORD num;
|
||||
int got;
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag,
|
||||
CHECK_NULL_RETURN(langtag, JNI_FALSE);
|
||||
got = getLocaleInfoWrapper(langtag,
|
||||
LOCALE_IDIGITSUBSTITUTION | LOCALE_RETURN_NUMBER,
|
||||
(LPWSTR)&num, sizeof(num));
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
@ -384,8 +404,10 @@ JNIEXPORT jboolean JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapt
|
||||
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getCurrencySymbol
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jstring currencySymbol) {
|
||||
WCHAR buf[BUFLEN];
|
||||
int got;
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_SCURRENCY, buf, BUFLEN);
|
||||
CHECK_NULL_RETURN(langtag, currencySymbol);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_SCURRENCY, buf, BUFLEN);
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
|
||||
if (got) {
|
||||
@ -403,8 +425,10 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
|
||||
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getDecimalSeparator
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jchar decimalSeparator) {
|
||||
WCHAR buf[BUFLEN];
|
||||
int got;
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_SDECIMAL, buf, BUFLEN);
|
||||
CHECK_NULL_RETURN(langtag, decimalSeparator);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_SDECIMAL, buf, BUFLEN);
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
|
||||
if (got) {
|
||||
@ -422,8 +446,10 @@ JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterI
|
||||
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getGroupingSeparator
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jchar groupingSeparator) {
|
||||
WCHAR buf[BUFLEN];
|
||||
int got;
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_STHOUSAND, buf, BUFLEN);
|
||||
CHECK_NULL_RETURN(langtag, groupingSeparator);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_STHOUSAND, buf, BUFLEN);
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
|
||||
if (got) {
|
||||
@ -441,8 +467,10 @@ JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterI
|
||||
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getInfinity
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jstring infinity) {
|
||||
WCHAR buf[BUFLEN];
|
||||
int got;
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_SPOSINFINITY, buf, BUFLEN);
|
||||
CHECK_NULL_RETURN(langtag, infinity);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_SPOSINFINITY, buf, BUFLEN);
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
|
||||
if (got) {
|
||||
@ -460,8 +488,10 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
|
||||
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getInternationalCurrencySymbol
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jstring internationalCurrencySymbol) {
|
||||
WCHAR buf[BUFLEN];
|
||||
int got;
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_SINTLSYMBOL, buf, BUFLEN);
|
||||
CHECK_NULL_RETURN(langtag, internationalCurrencySymbol);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_SINTLSYMBOL, buf, BUFLEN);
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
|
||||
if (got) {
|
||||
@ -479,8 +509,10 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
|
||||
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getMinusSign
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jchar minusSign) {
|
||||
WCHAR buf[BUFLEN];
|
||||
int got;
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_SNEGATIVESIGN, buf, BUFLEN);
|
||||
CHECK_NULL_RETURN(langtag, minusSign);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_SNEGATIVESIGN, buf, BUFLEN);
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
|
||||
if (got) {
|
||||
@ -498,8 +530,10 @@ JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterI
|
||||
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getMonetaryDecimalSeparator
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jchar monetaryDecimalSeparator) {
|
||||
WCHAR buf[BUFLEN];
|
||||
int got;
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_SMONDECIMALSEP, buf, BUFLEN);
|
||||
CHECK_NULL_RETURN(langtag, monetaryDecimalSeparator);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_SMONDECIMALSEP, buf, BUFLEN);
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
|
||||
if (got) {
|
||||
@ -517,8 +551,10 @@ JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterI
|
||||
JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getNaN
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jstring nan) {
|
||||
WCHAR buf[BUFLEN];
|
||||
int got;
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_SNAN, buf, BUFLEN);
|
||||
CHECK_NULL_RETURN(langtag, nan);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_SNAN, buf, BUFLEN);
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
|
||||
if (got) {
|
||||
@ -536,8 +572,10 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
|
||||
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getPercent
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jchar percent) {
|
||||
WCHAR buf[BUFLEN];
|
||||
int got;
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_SPERCENT, buf, BUFLEN);
|
||||
CHECK_NULL_RETURN(langtag, percent);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_SPERCENT, buf, BUFLEN);
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
|
||||
if (got) {
|
||||
@ -555,8 +593,12 @@ JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterI
|
||||
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getPerMill
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jchar perMill) {
|
||||
WCHAR buf[BUFLEN];
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_SPERMILLE, buf, BUFLEN);
|
||||
const jchar *langtag;
|
||||
int got;
|
||||
langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
CHECK_NULL_RETURN(langtag, perMill);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_SPERMILLE, buf, BUFLEN);
|
||||
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
|
||||
if (got) {
|
||||
@ -574,8 +616,12 @@ JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterI
|
||||
JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getZeroDigit
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jchar zeroDigit) {
|
||||
WCHAR buf[BUFLEN];
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int got = getLocaleInfoWrapper(langtag, LOCALE_SNATIVEDIGITS, buf, BUFLEN);
|
||||
const jchar *langtag;
|
||||
int got;
|
||||
langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
CHECK_NULL_RETURN(langtag, zeroDigit);
|
||||
got = getLocaleInfoWrapper(langtag, LOCALE_SNATIVEDIGITS, buf, BUFLEN);
|
||||
|
||||
(*env)->ReleaseStringChars(env, jlangtag, langtag);
|
||||
|
||||
if (got) {
|
||||
@ -593,9 +639,11 @@ JNIEXPORT jchar JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterI
|
||||
JNIEXPORT jint JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapterImpl_getCalendarDataValue
|
||||
(JNIEnv *env, jclass cls, jstring jlangtag, jint type) {
|
||||
DWORD num;
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
const jchar *langtag;
|
||||
int got = 0;
|
||||
|
||||
langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
CHECK_NULL_RETURN(langtag, -1);
|
||||
switch (type) {
|
||||
case sun_util_locale_provider_HostLocaleProviderAdapterImpl_CD_FIRSTDAYOFWEEK:
|
||||
got = getLocaleInfoWrapper(langtag,
|
||||
@ -648,6 +696,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
|
||||
}
|
||||
|
||||
pjChar = (*env)->GetStringChars(env, jStr, JNI_FALSE);
|
||||
CHECK_NULL_RETURN(pjChar, NULL);
|
||||
got = getLocaleInfoWrapper(pjChar, lcType, buf, BUFLEN);
|
||||
(*env)->ReleaseStringChars(env, jStr, pjChar);
|
||||
|
||||
@ -705,8 +754,11 @@ jint getCalendarID(const jchar *langtag) {
|
||||
|
||||
void replaceCalendarArrayElems(JNIEnv *env, jstring jlangtag, jobjectArray jarray, CALTYPE* pCalTypes, int offset, int length) {
|
||||
WCHAR name[BUFLEN];
|
||||
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
int calid = getCalendarID(langtag);
|
||||
const jchar *langtag;
|
||||
int calid;
|
||||
langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
|
||||
CHECK_NULL(langtag);
|
||||
calid = getCalendarID(langtag);
|
||||
|
||||
if (calid != -1) {
|
||||
int i;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user