src/solaris/native/java/io/io_util_md.c
Print this page
*** 32,72 ****
#ifdef MACOSX
#include <CoreFoundation/CoreFoundation.h>
- static inline char *convertToNFD(const char *path, char *buf, size_t bufsize)
- {
- CFMutableStringRef mutable = CFStringCreateMutable(NULL, 0);
- CFStringAppendCString(mutable, path, kCFStringEncodingUTF8);
- CFStringNormalize(mutable, kCFStringNormalizationFormD);
-
- CFStringGetCString(mutable, buf, bufsize, kCFStringEncodingUTF8);
-
- CFRelease(mutable);
- return buf;
- }
-
- /* Converts the path to NFD form if it was in NFC form. Returns a pointer to
- * the converting string which could be buf (if the converstion took place) or
- * origPath if no conversion was needed
- */
__private_extern__
! char* convertToNFDIfNeeded(const char *origPath, char *buf, size_t bufsize)
{
! const char *current = origPath;
! int c;
! for (c = *current; c != 0; current++, c = *current) {
! if (c < 0) {
! // Need to convert
! return convertToNFD(origPath, buf, bufsize);
}
}
!
! return (char *)origPath;
}
-
#endif
void
fileOpen(JNIEnv *env, jobject this, jstring path, jfieldID fid, int flags)
{
--- 32,60 ----
#ifdef MACOSX
#include <CoreFoundation/CoreFoundation.h>
__private_extern__
! jstring newStringPlatform(JNIEnv *env, const char* str)
{
! jstring rv = NULL;
! CFMutableStringRef csref = CFStringCreateMutable(NULL, 0);
! CFStringAppendCString(csref, str, kCFStringEncodingUTF8);
! CFStringNormalize(csref, kCFStringNormalizationFormC);
! int clen = CFStringGetLength(csref);
! int ulen = (clen + 1) * 2; // utf16 + zero padding
! char* chars = malloc(ulen);
! if (chars != NULL) {
! if (CFStringGetCString(csref, chars, ulen, kCFStringEncodingUTF16)) {
! rv = (*env)->NewString(env, (jchar*)chars, clen);
}
+ free(chars);
}
! CFRelease(csref);
! return rv;
}
#endif
void
fileOpen(JNIEnv *env, jobject this, jstring path, jfieldID fid, int flags)
{