View | Details | Raw Unified | Return to issue 7161
Collapse All | Expand All

(-)osl/unx/nlsupport.c (-14 / +362 lines)
Lines 63-72 Link Here
63
#include <osl/diagnose.h>
63
#include <osl/diagnose.h>
64
#include <osl/process.h>
64
#include <osl/process.h>
65
65
66
#if defined(LINUX) || defined(SOLARIS) || defined(IRIX) || defined(NETBSD)
66
#if defined(LINUX) || defined(SOLARIS) || defined(IRIX) || defined(NETBSD) || defined(MACOSX)
67
#include <pthread.h>
67
#include <pthread.h>
68
#ifndef MACOSX
68
#include <locale.h>
69
#include <locale.h>
69
#include <langinfo.h>
70
#include <langinfo.h>
71
#else
72
#ifdef BUILD_OS_APPLEOSX
73
#include <jni.h>
74
#endif
75
#endif
70
#endif
76
#endif
71
77
72
/*****************************************************************************/
78
/*****************************************************************************/
Lines 241-247 Link Here
241
    return NULL;
247
    return NULL;
242
}
248
}
243
        
249
        
244
#if defined(LINUX) || defined(SOLARIS) || defined(IRIX) || defined(NETBSD)
250
#if defined(LINUX) || defined(SOLARIS) || defined(IRIX) || defined(NETBSD) || defined(MACOSX)
245
251
246
/*
252
/*
247
 * This implementation of osl_getTextEncodingFromLocale maps 
253
 * This implementation of osl_getTextEncodingFromLocale maps 
Lines 315-321 Link Here
315
   { "sjis",		RTL_TEXTENCODING_SHIFT_JIS	}, /* Japan */
321
   { "sjis",		RTL_TEXTENCODING_SHIFT_JIS	}, /* Japan */
316
};
322
};
317
323
318
#elif defined(LINUX) || defined(NETBSD)
324
#elif defined(LINUX) || defined(NETBSD) || defined(MACOSX)
319
325
320
const _pair _nl_language_list[] = {
326
const _pair _nl_language_list[] = {
321
    { "ANSI_X3.110-1983",           RTL_TEXTENCODING_DONTKNOW   },  /* ISO-IR-99 NAPLPS */
327
    { "ANSI_X3.110-1983",           RTL_TEXTENCODING_DONTKNOW   },  /* ISO-IR-99 NAPLPS */
Lines 496-505 Link Here
496
    { "WIN-SAMI-2",                 RTL_TEXTENCODING_DONTKNOW }     /* WS2 */
502
    { "WIN-SAMI-2",                 RTL_TEXTENCODING_DONTKNOW }     /* WS2 */
497
};
503
};
498
504
499
#endif /* ifdef LINUX || NETBSD */
505
#endif /* ifdef LINUX || NETBSD || MACOSX */
506
507
#ifdef MACOSX
508
/* MacOS X has some special names for some of its encodings.  These encoding names are
509
 * returned by CFStringConvertEncodingToIANACharSetName() when given a CFTextEncoding
510
 * argument from one of the ones in CFStringEncodingExt.h in the CoreFoundation framework.
511
 */
512
const _pair _macxp_language_list[] = {
513
	{ "X-MAC-JAPANESE",			RTL_TEXTENCODING_EUC_JP },			/* kCFStringEncodingMacJapanese */
514
	{ "X-MAC-TRAD-CHINESE",		RTL_TEXTENCODING_APPLE_CHINTRAD },		/* kCFStringEncodingMacChineseTrad */
515
	{ "X-MAC-KOREAN",			RTL_TEXTENCODING_EUC_KR },			/* kCFStringEncodingMacKorean */
516
	{ "X-MAC-ARABIC",			RTL_TEXTENCODING_APPLE_ARABIC },		/* kCFStringEncodingMacArabic */
517
	{ "X-MAC-HEBREW",			RTL_TEXTENCODING_APPLE_HEBREW },		/* kCFStringEncodingMacHebrew */
518
	{ "X-MAC-GREEK",			RTL_TEXTENCODING_APPLE_GREEK },		/* kCFStringEncodingMacGreek */
519
	{ "X-MAC-CYRILLIC",			RTL_TEXTENCODING_APPLE_CYRILLIC },		/* kCFStringEncodingMacCyrillic */
520
	{ "X-MAC-DEVANAGARI",		RTL_TEXTENCODING_APPLE_DEVANAGARI },	/* kCFStringEncodingMacDevanagari */
521
	{ "X-MAC-GURMUKHI",			RTL_TEXTENCODING_APPLE_GURMUKHI },		/* kCFStringEncodingMacGurmukhi */
522
	{ "X-MAC-GUJARATI",			RTL_TEXTENCODING_APPLE_GUJARATI },		/* kCFStringEncodingMacGujarati */
523
	{ "X-MAC-ORIYA",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacOriya */
524
	{ "X-MAC-BENGALI",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacBengali */
525
	{ "X-MAC-TAMIL",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacTamil */
526
	{ "X-MAC-TELUGU",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacTelugu */
527
	{ "X-MAC-KANNADA",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacKannada */
528
	{ "X-MAC-MALAYALAM",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacMalayalam */
529
	{ "X-MAC-SINHALESE",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacSinhalese */
530
	{ "X-MAC-BURMESE",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacBurmese */
531
	{ "X-MAC-KHMER",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacKhmer */
532
	{ "X-MAC-THAI",			RTL_TEXTENCODING_APPLE_THAI },		/* kCFStringEncodingMacThai */
533
	{ "X-MAC-LAOTIAN",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacLaotian */
534
	{ "X-MAC-GEORGIAN",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacGeorgian */
535
	{ "X-MAC-ARMENIAN",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacArmenian */
536
	{ "X-MAC-SIMP-CHINESE",		RTL_TEXTENCODING_APPLE_CHINSIMP },		/* kCFStringEncodingMacChineseSimp */
537
	{ "X-MAC-TIBETAN",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacTibetan */
538
	{ "X-MAC-MONGOLIAN",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacMongolian */
539
	{ "X-MAC-ETHIOPIC",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacEthiopic */
540
	{ "X-MAC-CENTRALEURROMAN",	RTL_TEXTENCODING_APPLE_CENTEURO },		/* kCFStringEncodingMacCentralEurRoman */
541
	{ "X-MAC-VIETNAMESE",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacVietnamese */
542
	{ "X-MAC-EXTARABIC",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacExtArabic */
543
	{ "X-MAC-SYMBOL",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacSymbol */
544
	{ "X-MAC-DINGBATS",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacDingbats */
545
	{ "X-MAC-TURKISH",			RTL_TEXTENCODING_APPLE_TURKISH },		/* kCFStringEncodingMacTurkish */
546
	{ "X-MAC-CROATIAN",			RTL_TEXTENCODING_APPLE_CROATIAN },		/* kCFStringEncodingMacCroatian */
547
	{ "X-MAC-ICELANDIC",		RTL_TEXTENCODING_APPLE_ICELAND },		/* kCFStringEncodingMacIcelandic */
548
	{ "X-MAC-ROMANIAN",			RTL_TEXTENCODING_APPLE_ROMANIAN },		/* kCFStringEncodingMacRomanian */
549
	{ "UNICODE-2-0",			RTL_TEXTENCODING_DONTKNOW },			/*  */
550
	{ "X-MAC-FARSI",			RTL_TEXTENCODING_APPLE_FARSI },		/* kCFStringEncodingMacFarsi */
551
	{ "X-MAC-UKRAINIAN",		RTL_TEXTENCODING_APPLE_UKRAINIAN },	/* kCFStringEncodingMacUkrainian */
552
	{ "X-MAC-VT100",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacVT100 */
553
	{ "macintosh",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacHFS */
554
	{ "UTF-16BE",				RTL_TEXTENCODING_UNICODE },			/* kCFStringEncodingUnicode */
555
	{ "UNICODE-1-1",			RTL_TEXTENCODING_DONTKNOW },			/*  */
556
	{ "UNICODE-1-1",			RTL_TEXTENCODING_DONTKNOW },			/*  */
557
	{ "UNICODE-2-0",			RTL_TEXTENCODING_DONTKNOW },			/*  */
558
	{ "csUnicode",				RTL_TEXTENCODING_DONTKNOW },			/*  */
559
	{ "CP437",				RTL_TEXTENCODING_IBM_437 },			/* kCFStringEncodingDOSLatinUS */
560
	{ "CP737",				RTL_TEXTENCODING_IBM_737 },			/* kCFStringEncodingDOSGreek */
561
	{ "CP775",				RTL_TEXTENCODING_IBM_775 },			/* kCFStringEncodingDOSBalticRim */
562
	{ "CP850",				RTL_TEXTENCODING_IBM_850 },			/* kCFStringEncodingDOSLatin1 */
563
	{ "CP852",				RTL_TEXTENCODING_IBM_852 },			/* kCFStringEncodingDOSGreek1 */
564
	{ "CP857",				RTL_TEXTENCODING_IBM_857 },			/* kCFStringEncodingDOSTurkish */
565
	{ "CP861",				RTL_TEXTENCODING_IBM_861 },			/* kCFStringEncodingDOSIcelandic */
566
	{ "cp864",				RTL_TEXTENCODING_IBM_864 },			/* kCFStringEncodingDOSArabic */
567
	{ "CP866",				RTL_TEXTENCODING_IBM_866 },			/* kCFStringEncodingDOSRussian */
568
	{ "CP874",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingDOSThai */
569
	{ "CP932",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingDOSJapanese */
570
	{ "CP936",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingDOSChineseSimplif */
571
	{ "CP949",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingDOSKorean */
572
	{ "CP950",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingDOSChineseTrad */
573
	{ "WINDOWS-1252",			RTL_TEXTENCODING_MS_1252 },			/* kCFStringEncodingWindowsLatin1 */
574
	{ "WINDOWS-1250",			RTL_TEXTENCODING_MS_1250 },			/* kCFStringEncodingWindowsLatin2 */
575
	{ "WINDOWS-1251",			RTL_TEXTENCODING_MS_1251 },			/* kCFStringEncodingWindowsCyrillic */
576
	{ "WINDOWS-1253",			RTL_TEXTENCODING_MS_1253 },			/* kCFStringEncodingWindowsGreek */
577
	{ "WINDOWS-1254",			RTL_TEXTENCODING_MS_1254 },			/* kCFStringEncodingWindowsLatin5 */
578
	{ "WINDOWS-1255",			RTL_TEXTENCODING_MS_1255 },			/* kCFStringEncodingWindowsHebrew */
579
	{ "WINDOWS-1256",			RTL_TEXTENCODING_MS_1256 },			/* kCFStringEncodingWindowsArabic */
580
	{ "WINDOWS-1257",			RTL_TEXTENCODING_MS_1257 },			/* kCFStringEncodingWindowsBalticRim */
581
	{ "WINDOWS-1258",			RTL_TEXTENCODING_MS_1258 },			/* kCFStringEncodingWindowsVietnamese */
582
	{ "US-ASCII",				RTL_TEXTENCODING_ASCII_US },			/* kCFStringEncodingASCII */
583
	{ "JIS_C6226-1983",			RTL_TEXTENCODING_GB_2312 },			/* kCFStringEncodingJIS_X0208_90 */
584
	{ "csISO58GB231280",		RTL_TEXTENCODING_GB_2312 },			/* kCFStringEncodingGB_2312_80 */
585
	{ "X-GBK",				RTL_TEXTENCODING_GBK },				/* kCFStringEncodingGBK_95 */
586
	{ "csKSC56011987",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingKSC_5601_87 */
587
	{ "ISO-2022-JP",			RTL_TEXTENCODING_ISO_2022_JP },		/* kCFStringEncodingISO_2022_JP */
588
	{ "ISO-2022-CN",			RTL_TEXTENCODING_ISO_2022_CN },		/* kCFStringEncodingISO_2022_CN */
589
	{ "ISO-2022-CN-EXT",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingISO_2022_CN_EXT */
590
	{ "ISO-2022-KR",			RTL_TEXTENCODING_ISO_2022_KR },		/* kCFStringEncodingISO_2022_KR */
591
	{ "EUC-JP",				RTL_TEXTENCODING_EUC_JP },			/* kCFStringEncodingEUC_JP */
592
	{ "EUC-CN",				RTL_TEXTENCODING_EUC_CN },			/* kCFStringEncodingEUC_CN */
593
	{ "EUC-TW",				RTL_TEXTENCODING_EUC_TW },			/* kCFStringEncodingEUC_TW */
594
	{ "EUC-KR",				RTL_TEXTENCODING_EUC_KR },			/* kCFStringEncodingEUC_KR */
595
	{ "SHIFT_JIS",				RTL_TEXTENCODING_SHIFT_JIS },			/* kCFStringEncodingShiftJIS */
596
	{ "KOI8-R",				RTL_TEXTENCODING_KOI8_R },			/* kCFStringEncodingKOI8_R */
597
	{ "X-MAC-ROMAN-LATIN1",		RTL_TEXTENCODING_APPLE_ROMAN },		/* kCFStringEncodingMacRomanLatin1 */
598
	{ "HZ-GB-2312",			RTL_TEXTENCODING_GB_2312 },			/* kCFStringEncodingHZ_GB_2312 */
599
	{ "Big5-HKSCS",			RTL_TEXTENCODING_BIG5_HKSCS },		/* kCFStringEncodingBig5_HKSCS_1999 */
600
	{ "X-NEXTSTEP",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingNextStepLatin */
601
	{ "cp037",				RTL_TEXTENCODING_DONTKNOW }			/* kCFStringEncodingEBCDIC_CP037 */
602
/* ___________ Add more encodings here ___________ */
603
};
604
#endif	/* ifdef MACOSX */
500
605
501
static pthread_mutex_t aLocalMutex = PTHREAD_MUTEX_INITIALIZER;
606
static pthread_mutex_t aLocalMutex = PTHREAD_MUTEX_INITIALIZER;
502
607
608
#ifndef MACOSX
503
/*****************************************************************************/
609
/*****************************************************************************/
504
/* return the text encoding corresponding to the given locale
610
/* return the text encoding corresponding to the given locale
505
/*****************************************************************************/
611
/*****************************************************************************/
Lines 577-584 Link Here
577
683
578
void _imp_getProcessLocale( rtl_Locale ** ppLocale )
684
void _imp_getProcessLocale( rtl_Locale ** ppLocale )
579
{
685
{
686
580
    char * locale;
687
    char * locale;
581
    
688
582
    /* basic thread safeness */
689
    /* basic thread safeness */
583
    pthread_mutex_lock( &aLocalMutex );
690
    pthread_mutex_lock( &aLocalMutex );
584
691
Lines 618-655 Link Here
618
    return ret;
725
    return ret;
619
}
726
}
620
727
621
#elif defined(MACOSX) /* ifdef LINUX || SOLARIS || NETBSD */
728
#else	/* ifndef MACOSX */
622
729
623
/*
730
/*
624
 * FIXME: the MacOS X implemetation is missing
731
 *
732
 * MacOS X specific Locale manipulation code
733
 *
625
 */
734
 */
626
 
735
736
#include <premac.h>
737
#include <CoreFoundation/CoreFoundation.h>
738
#include <postmac.h>
739
740
void macxp_ConvertCFEncodingToIANACharSetName( char *buffer, unsigned int bufferLen, CFStringEncoding cfEncoding );
741
627
/*****************************************************************************/
742
/*****************************************************************************/
628
/* return the text encoding corresponding to the given locale
743
/* return the text encoding corresponding to the given locale
629
/*****************************************************************************/
744
/*****************************************************************************/
630
631
rtl_TextEncoding osl_getTextEncodingFromLocale( rtl_Locale * pLocale )
745
rtl_TextEncoding osl_getTextEncodingFromLocale( rtl_Locale * pLocale )
632
{
746
{
633
    return RTL_TEXTENCODING_DONTKNOW;
747
    const _pair		*pLanguage = 0;
748
    char			*pEncoding;
749
    char			sEncoding[ 64 ] = "";
750
	CFStringEncoding	sCFSysEncoding;
751
	CFStringRef		sCFEncodingName;
752
	const unsigned int	nMembers = sizeof(_macxp_language_list) / sizeof(_pair);
753
754
	/* For retrieving the CoreFoundation text encoding, the process goes like
755
	 * this:
756
	 * 1) On MacOS X this will be the first language listed in the 
757
	 *     Language tab of the International preference pane.
758
	 * 2) On Darwin 5 the value is currently hardwired to 
759
	 *     kCFStringEncodingMacRoman.
760
	 */
761
	sCFSysEncoding = CFStringGetSystemEncoding();
762
	#ifdef BUILD_OS_APPLEOSX
763
		/* Use MacOS X routines to get the charset name for us */
764
		sCFEncodingName = CFStringConvertEncodingToIANACharSetName( sCFSysEncoding );
765
		CFStringGetCString( sCFEncodingName, sEncoding, 32, sCFSysEncoding);
766
	#else
767
		/*
768
         * Darwin doesn't have a CFStringConvertEncodingToIANACharSetName(),
769
         * so we call our own replacement
770
         */
771
		macxp_ConvertCFEncodingToIANACharSetName( sEncoding, 32, sCFSysEncoding );
772
	#endif
773
774
	pLanguage = _pair_search( pEncoding, _macxp_language_list, nMembers );
775
		
776
	OSL_ASSERT( pLanguage && ( RTL_TEXTENCODING_DONTKNOW != pLanguage->value ) );
777
778
	/*
779
	 * a matching item in our list provides a mapping from codeset to
780
	 * rtl-codeset
781
     */
782
	if ( pLanguage != NULL  )
783
		return pLanguage->value;
784
   
785
	return RTL_TEXTENCODING_DONTKNOW;
634
}
786
}
635
787
636
/*****************************************************************************/
788
/*****************************************************************************/
637
/* return the current process locale
789
/* return the current process locale
638
/*****************************************************************************/
790
/*****************************************************************************/
639
640
void _imp_getProcessLocale( rtl_Locale ** ppLocale )
791
void _imp_getProcessLocale( rtl_Locale ** ppLocale )
641
{
792
{
642
    *ppLocale = _parse_locale( "C" );
793
#ifdef BUILD_OS_APPLEOSX
794
    static const char *locale = NULL;
795
    JNIEnv *env = NULL;
796
    JavaVM *jvm = NULL;
797
    JavaVMInitArgs vm_args;
798
    jclass aClass = NULL;
799
    jmethodID aMethod = NULL;
800
    jobject aLocale = NULL;
801
    jstring sLocale = NULL;
802
    jboolean bCopy = JNI_TRUE;
803
#endif /* ifdef BUILD_OS_APPLEOSX */
804
805
    /* basic thread safeness */
806
    pthread_mutex_lock( &aLocalMutex );
807
808
#ifdef BUILD_OS_APPLEOSX
809
    /* Only fetch the locale once and cache it */
810
    if ( NULL == locale )
811
    {
812
        /* specify Java 2 */
813
        vm_args.version = JNI_VERSION_1_2;
814
        vm_args.options = NULL;
815
        vm_args.nOptions = 0;
816
        vm_args.ignoreUnrecognized = JNI_TRUE;
817
818
        /* get default JVM args */
819
        JNI_GetDefaultJavaVMInitArgs( &vm_args );
820
821
        /* create the Java VM */
822
        if ( JNI_CreateJavaVM( &jvm, (void *)&env, &vm_args ) == JNI_OK )
823
        {
824
            /* get the current locale */
825
            aClass = (*env)->FindClass( env, "java.util.Locale" );
826
            if ( aClass )
827
                aMethod = (*env)->GetStaticMethodID( env, aClass, "getDefault", "()Ljava/util/Locale;" );
828
            if ( aMethod )
829
                aLocale = (*env)->CallStaticObjectMethod( env, aClass, aMethod );
830
            if ( aClass )
831
                aMethod = (*env)->GetMethodID( env, aClass, "toString", "()Ljava/lang/String;" );
832
            if ( aMethod )
833
                sLocale = (jstring)( (*env)->CallObjectMethod( env, aLocale, aMethod) );
834
            if ( sLocale )
835
                locale = (*env)->GetStringUTFChars( env, sLocale, &bCopy );
836
837
            /* Destroy the JVM */
838
            (*jvm)->DestroyJavaVM( jvm );
839
        }
840
#endif /* ifdef BUILD_OS_APPLEOSX */
841
842
        /* handle the case where the Java method of finding locale fails */
843
        if ( NULL == locale )
844
        {
845
            /* simulate behavior of setlocale */
846
            locale = getenv( "LC_ALL" );
847
848
            if( NULL == locale )
849
                locale = getenv( "LC_CTYPE" );
850
851
            if( NULL == locale )
852
                locale = getenv( "LANG" );
853
854
            if( NULL == locale )
855
                locale = "C";
856
        }
857
858
        *ppLocale = _parse_locale( locale );
859
    }
860
861
    /* return the locale */
862
    *ppLocale = _parse_locale( locale );
863
864
    pthread_mutex_unlock( &aLocalMutex );
865
643
}
866
}
644
867
645
/*****************************************************************************/
868
/*****************************************************************************/
646
/* set the current process locale
869
/* set the current process locale
647
/*****************************************************************************/
870
/*****************************************************************************/
648
649
int _imp_setProcessLocale( rtl_Locale * pLocale )
871
int _imp_setProcessLocale( rtl_Locale * pLocale )
650
{
872
{
651
    return 0;
873
	/* There is not yet any way to set the locale of a process
874
	 * on Darwin or MacOS X through BSD layer functions.
875
	 *
876
	 * On MacOS X locale and language are set by the user through
877
	 * the International pane of the System Preferences application.
878
	 *
879
	 * FIXME when this can be done.
880
	 */
881
	return 0;
652
}
882
}
883
884
/*****************************************************************************/
885
/* Get a charset name from a CoreFoundation text encoding number
886
/*****************************************************************************/
887
void macxp_ConvertCFEncodingToIANACharSetName( char *buffer, unsigned int bufferLen, CFStringEncoding cfEncoding )
888
{
889
	switch( cfEncoding )
890
	{
891
		case 0:	strncpy( buffer, "MACINTOSH", 31 );			break;	/* kCFStringEncodingMacRoman */
892
		case 1:	strncpy( buffer, "X-MAC-JAPANESE", 31 );		break;	/* kCFStringEncodingMacJapanese */
893
		case 2:	strncpy( buffer, "X-MAC-TRAD-CHINESE", 31 );		break;	/* kCFStringEncodingMacChineseTrad */
894
		case 3:	strncpy( buffer, "X-MAC-KOREAN", 31 );			break;	/* kCFStringEncodingMacKorean */
895
		case 4:	strncpy( buffer, "X-MAC-ARABIC", 31 );			break;	/* kCFStringEncodingMacArabic */
896
		case 5:	strncpy( buffer, "X-MAC-HEBREW", 31 );			break;	/* kCFStringEncodingMacHebrew */
897
		case 6:	strncpy( buffer, "X-MAC-GREEK", 31 );			break;	/* kCFStringEncodingMacGreek */
898
		case 7:	strncpy( buffer, "X-MAC-CYRILLIC", 31 );		break;	/* kCFStringEncodingMacCyrillic */
899
		case 9:	strncpy( buffer, "X-MAC-DEVANAGARI", 31 );		break;	/* kCFStringEncodingMacDevanagari */
900
		case 10:	strncpy( buffer, "X-MAC-GURMUKHI", 31 );		break;	/* kCFStringEncodingMacGurmukhi */
901
		case 11:	strncpy( buffer, "X-MAC-GUJARATI", 31 );		break;	/* kCFStringEncodingMacGujarati */
902
		case 12:	strncpy( buffer, "X-MAC-ORIYA", 31 );			break;	/* kCFStringEncodingMacOriya */
903
		case 13:	strncpy( buffer, "X-MAC-BENGALI", 31 );			break;	/* kCFStringEncodingMacBengali */
904
		case 14:	strncpy( buffer, "X-MAC-TAMIL", 31 );			break;	/* kCFStringEncodingMacTamil */
905
		case 15:	strncpy( buffer, "X-MAC-TELUGU", 31 );			break;	/* kCFStringEncodingMacTamil */
906
		case 16:	strncpy( buffer, "X-MAC-KANNADA", 31 );			break;	/* kCFStringEncodingMacKannada */
907
		case 17:	strncpy( buffer, "X-MAC-MALAYALAM", 31 );		break;	/* kCFStringEncodingMacMalayalam */
908
		case 18:	strncpy( buffer, "X-MAC-SINHALESE", 31 );		break;	/* kCFStringEncodingMacSinhalese */
909
		case 19:	strncpy( buffer, "X-MAC-BURMESE", 31 );			break;	/* kCFStringEncodingMacBurmese */
910
		case 20:	strncpy( buffer, "X-MAC-KHMER", 31 );			break;	/* kCFStringEncodingMacKhmer */
911
		case 21:	strncpy( buffer, "X-MAC-THAI", 31 );			break;	/* kCFStringEncodingMacThai */
912
		case 22:	strncpy( buffer, "X-MAC-LAOTIAN", 31 );			break;	/* kCFStringEncodingMacLaotian */
913
		case 23:	strncpy( buffer, "X-MAC-GEORGIAN", 31 );		break;	/* kCFStringEncodingMacGeorgian */
914
		case 24:	strncpy( buffer, "X-MAC-ARMENIAN", 31 );		break;	/* kCFStringEncodingMacArmenian */
915
		case 25:	strncpy( buffer, "X-MAC-SIMP-CHINESE", 31 );		break;	/* kCFStringEncodingMacChineseSimp */
916
		case 26:	strncpy( buffer, "X-MAC-TIBETAN", 31 );			break;	/* kCFStringEncodingMacTibetan */
917
		case 27:	strncpy( buffer, "X-MAC-MONGOLIAN", 31 );		break;	/* kCFStringEncodingMacMongolian */
918
		case 28:	strncpy( buffer, "X-MAC-ETHIOPIC", 31 );		break;	/* kCFStringEncodingMacEthiopic */
919
		case 29:	strncpy( buffer, "X-MAC-CENTRALEURROMAN", 31 );	break;	/* kCFStringEncodingMacCentralEurRoman */
920
		case 30:	strncpy( buffer, "X-MAC-VIETNAMESE", 31 );		break;	/* kCFStringEncodingMacVietnamese */
921
		case 31:	strncpy( buffer, "X-MAC-EXTARABIC", 31 );		break;	/* kCFStringEncodingMacExtArabic */
922
		case 33:	strncpy( buffer, "X-MAC-SYMBOL", 31 );			break;	/* kCFStringEncodingMacSymbol */
923
		case 34:	strncpy( buffer, "X-MAC-DINGBATS", 31 );		break;	/* kCFStringEncodingMacDingbats */
924
		case 35:	strncpy( buffer, "X-MAC-TURKISH", 31 );			break;	/* kCFStringEncodingMacTurkish */
925
		case 36:	strncpy( buffer, "X-MAC-CROATIAN", 31 );		break;	/* kCFStringEncodingMacCroatian */
926
		case 37:	strncpy( buffer, "X-MAC-ICELANDIC", 31 );		break;	/* kCFStringEncodingMacIcelandic */
927
		case 38:	strncpy( buffer, "X-MAC-ROMANIAN", 31 );		break;	/* kCFStringEncodingMacRomanian */
928
		case 126:	strncpy( buffer, "UNICODE-2-0", 31 );			break;	/*  */
929
		case 140:	strncpy( buffer, "X-MAC-FARSI", 31 );			break;	/* kCFStringEncodingMacFarsi */
930
		case 152:	strncpy( buffer, "X-MAC-UKRAINIAN", 31 );		break;	/* kCFStringEncodingMacUkrainian */
931
		case 252:	strncpy( buffer, "X-MAC-VT100", 31 );			break;	/* kCFStringEncodingMacVT100 */
932
		case 255:	strncpy( buffer, "macintosh", 31 );			break;	/* kCFStringEncodingMacHFS */
933
		case 256:	strncpy( buffer, "UTF-16BE", 31 );				break;	/* kCFStringEncodingUnicode */
934
		case 257:	strncpy( buffer, "UNICODE-1-1", 31 );			break;	/*  */
935
		case 258:	strncpy( buffer, "UNICODE-1-1", 31 );			break;	/*  */
936
		case 259:	strncpy( buffer, "UNICODE-2-0", 31 );			break;	/*  */
937
		case 260:	strncpy( buffer, "csUnicode", 31 );			break;	/*  */
938
		case 513:	strncpy( buffer, "ISO-8859-1", 31 );			break;	/* kCFStringEncodingISOLatin1 */
939
		case 514:	strncpy( buffer, "ISO-8859-2", 31 );			break;	/* kCFStringEncodingISOLatin2 */
940
		case 515:	strncpy( buffer, "ISO-8859-3", 31 );			break;	/* kCFStringEncodingISOLatin3 */
941
		case 516:	strncpy( buffer, "ISO-8859-4", 31 );			break;	/* kCFStringEncodingISOLatin4 */
942
		case 517:	strncpy( buffer, "ISO-8859-5", 31 );			break;	/* kCFStringEncodingISOLatinCyrillic */
943
		case 518:	strncpy( buffer, "ISO-8859-6", 31 );			break;	/* kCFStringEncodingISOLatinArabic */
944
		case 519:	strncpy( buffer, "ISO-8859-7", 31 );			break;	/* kCFStringEncodingISOLatinGreek */
945
		case 520:	strncpy( buffer, "ISO-8859-8", 31 );			break;	/* kCFStringEncodingISOLatinHebrew */
946
		case 521:	strncpy( buffer, "ISO-8859-9", 31 );			break;	/* kCFStringEncodingISOLatin5 */
947
		case 522:	strncpy( buffer, "ISO-8859-10", 31 );			break;	/* kCFStringEncodingISOLatin6 */
948
		case 523:	strncpy( buffer, "ISO-8859-11", 31 );			break;	/* kCFStringEncodingISOLatinThai */
949
		case 525:	strncpy( buffer, "ISO-8859-13", 31 );			break;	/* kCFStringEncodingISOLatin7 */
950
		case 526:	strncpy( buffer, "ISO-8859-14", 31 );			break;	/* kCFStringEncodingISOLatin8 */
951
		case 527:	strncpy( buffer, "ISO-8859-15", 31 );			break;	/* kCFStringEncodingISOLatin9 */
952
		case 1024:	strncpy( buffer, "CP437", 31 );			break;	/* kCFStringEncodingDOSLatinUS */
953
		case 1029:	strncpy( buffer, "CP737", 31 );			break;	/* kCFStringEncodingDOSGreek */
954
		case 1030:	strncpy( buffer, "CP775", 31 );			break;	/* kCFStringEncodingDOSBalticRim */
955
		case 1040:	strncpy( buffer, "CP850", 31 );			break;	/* kCFStringEncodingDOSLatin1 */
956
		case 1042:	strncpy( buffer, "CP852", 31 );			break;	/* kCFStringEncodingDOSGreek1 */
957
		case 1044:	strncpy( buffer, "CP857", 31 );			break;	/* kCFStringEncodingDOSTurkish */
958
		case 1046:	strncpy( buffer, "CP861", 31 );			break;	/* kCFStringEncodingDOSIcelandic */
959
		case 1049:	strncpy( buffer, "cp864", 31 );			break;	/* kCFStringEncodingDOSArabic */
960
		case 1051:	strncpy( buffer, "CP866", 31 );			break;	/* kCFStringEncodingDOSRussian */
961
		case 1053:	strncpy( buffer, "CP874", 31 );			break;	/* kCFStringEncodingDOSThai */
962
		case 1056:	strncpy( buffer, "CP932", 31 );			break;	/* kCFStringEncodingDOSJapanese */
963
		case 1057:	strncpy( buffer, "CP936", 31 );			break;	/* kCFStringEncodingDOSChineseSimplif */
964
		case 1058:	strncpy( buffer, "CP949", 31 );			break;	/* kCFStringEncodingDOSKorean */
965
		case 1059:	strncpy( buffer, "CP950", 31 );			break;	/* kCFStringEncodingDOSChineseTrad */
966
		case 1280:	strncpy( buffer, "WINDOWS-1252", 31 );		break;	/* kCFStringEncodingWindowsLatin1 */
967
		case 1281:	strncpy( buffer, "WINDOWS-1250", 31 );		break;	/* kCFStringEncodingWindowsLatin2 */
968
		case 1282:	strncpy( buffer, "WINDOWS-1251", 31 );		break;	/* kCFStringEncodingWindowsCyrillic */
969
		case 1283:	strncpy( buffer, "WINDOWS-1253", 31 );		break;	/* kCFStringEncodingWindowsGreek */
970
		case 1284:	strncpy( buffer, "WINDOWS-1254", 31 );		break;	/* kCFStringEncodingWindowsLatin5 */
971
		case 1285:	strncpy( buffer, "WINDOWS-1255", 31 );		break;	/* kCFStringEncodingWindowsHebrew */
972
		case 1286:	strncpy( buffer, "WINDOWS-1256", 31 );		break;	/* kCFStringEncodingWindowsArabic */
973
		case 1287:	strncpy( buffer, "WINDOWS-1257", 31 );		break;	/* kCFStringEncodingWindowsBalticRim */
974
		case 1288:	strncpy( buffer, "WINDOWS-1258", 31 );		break;	/* kCFStringEncodingWindowsVietnamese */
975
		case 1536:	strncpy( buffer, "US-ASCII", 31 );			break;	/* kCFStringEncodingASCII */
976
		case 1570:	strncpy( buffer, "JIS_C6226-1983", 31 );	break;	/* kCFStringEncodingJIS_X0208_90 */
977
		case 1584:	strncpy( buffer, "csISO58GB231280", 31 );	break;	/* kCFStringEncodingGB_2312_80 */
978
		case 1585:	strncpy( buffer, "X-GBK", 31 );			break;	/* kCFStringEncodingGBK_95 */
979
		case 1600:	strncpy( buffer, "csKSC56011987", 31 );		break;	/* kCFStringEncodingKSC_5601_87 */
980
		case 2080:	strncpy( buffer, "ISO-2022-JP", 31 );		break;	/* kCFStringEncodingISO_2022_JP */
981
		case 2096:	strncpy( buffer, "ISO-2022-CN", 31 );		break;	/* kCFStringEncodingISO_2022_CN */
982
		case 2097:	strncpy( buffer, "ISO-2022-CN-EXT", 31 );	break;	/* kCFStringEncodingISO_2022_CN_EXT */
983
		case 2112:	strncpy( buffer, "ISO-2022-KR", 31 );		break;	/* kCFStringEncodingISO_2022_KR */
984
		case 2336:	strncpy( buffer, "EUC-JP", 31 );			break;	/* kCFStringEncodingEUC_JP */
985
		case 2352:	strncpy( buffer, "EUC-CN", 31 );			break;	/* kCFStringEncodingEUC_CN */
986
		case 2353:	strncpy( buffer, "EUC-TW", 31 );			break;	/* kCFStringEncodingEUC_TW */
987
		case 2368:	strncpy( buffer, "EUC-KR", 31 );			break;	/* kCFStringEncodingEUC_KR */
988
		case 2561:	strncpy( buffer, "SHIFT_JIS", 31 );		break;	/* kCFStringEncodingShiftJIS */
989
		case 2562:	strncpy( buffer, "KOI8-R", 31 );			break;	/* kCFStringEncodingKOI8_R */
990
		case 2563:	strncpy( buffer, "BIG5", 31 );			break;	/* kCFStringEncodingBig5 */
991
		case 2564:	strncpy( buffer, "X-MAC-ROMAN-LATIN1", 31 );	break;	/* kCFStringEncodingMacRomanLatin1 */
992
		case 2565:	strncpy( buffer, "HZ-GB-2312", 31 );		break;	/* kCFStringEncodingHZ_GB_2312 */
993
		case 2566:	strncpy( buffer, "Big5-HKSCS", 31 );		break;	/* kCFStringEncodingBig5_HKSCS_1999 */
994
		case 2817:	strncpy( buffer, "X-NEXTSTEP", 31 );		break;	/* kCFStringEncodingNextStepLatin */
995
		case 3074:	strncpy( buffer, "cp037", 31 );			break;	/* kCFStringEncodingEBCDIC_CP037 */
996
		default:		strncpy( buffer, "", 31 );				break;	/* Not listed */
997
	}
998
}
999
#endif	/* ifndef MACOSX */
1000
653
1001
654
#else /* ifdef LINUX || SOLARIS || MACOSX || NETBSD */
1002
#else /* ifdef LINUX || SOLARIS || MACOSX || NETBSD */
655
1003
(-)osl/unx/system.c (-2 / +33 lines)
Lines 78-85 Link Here
78
#include <pwd.h>
78
#include <pwd.h>
79
#include <sys/types.h>
79
#include <sys/types.h>
80
80
81
81
/* [ed] 9/1/02 On OS 10.2 and higher, the OS headers define this function slightly differently.
82
   A fourth argument is expected, a struct passwd **.  We still want to make our own definition,
83
   however, so when we run on 10.1 we can still locate the symbol in our own libraries.  So
84
   if we're building on 10.2, simply change the prototype to match the expected system
85
   prototype and provide the duplicate symbol.
86
   */
87
#ifdef MACOSX
88
#ifdef BUILD_OS_APPLEOSX
89
#if (BUILD_OS_MAJOR >= 10) && (BUILD_OS_MINOR >= 2)
90
int getpwnam_r(const char* name, struct passwd* s, char* buffer, size_t size, struct passwd **ignore )
91
#else /* BUILD_OS_MAJOR && BUILD_OS_MINOR */
92
/* previous versions of MacOS X...10.0/1.  Use old prototype */
93
struct passwd *getpwnam_r(const char* name, struct passwd* s, char* buffer, int size )
94
#endif /* BUILD_OS_MAJOR && BUILD_OS_MINOR */
95
#else /* BUILD_OS_APPLE_OSX */
96
/* configure didn't take, or we're building on darwin.  Fallback on old prototype */
97
struct passwd *getpwnam_r(const char* name, struct passwd* s, char* buffer, int size )
98
#endif /* BUILD_OS_APPLEOSX */
99
#else /* MACOSX */
82
struct passwd *getpwnam_r(const char* name, struct passwd* s, char* buffer, int size )
100
struct passwd *getpwnam_r(const char* name, struct passwd* s, char* buffer, int size )
101
#endif /* MACOSX */
83
{
102
{
84
  	struct passwd* res;
103
  	struct passwd* res;
85
104
Lines 131-137 Link Here
131
  	
150
  	
132
	pthread_mutex_unlock(&getrtl_mutex);
151
	pthread_mutex_unlock(&getrtl_mutex);
133
152
134
  	return res;
153
#ifdef MACOSX
154
#ifdef BUILD_OS_APPLEOSX
155
#if (BUILD_OS_MAJOR >= 10) && (BUILD_OS_MINOR >= 2)
156
	return((int)res);
157
#else
158
	return(res);
159
#endif /* BUILD_OS_MAJOR && BUILD_OS_MINOR */
160
#else /* BUILD_OS_APPLEOSX */
161
        return(res);
162
#endif /* BUILD_OS_APPLEOSX */
163
#else /* MACOSX */
164
        return(res);
165
#endif /* MACOSX */
135
}
166
}
136
167
137
#if defined(NETBSD) || defined(MACOSX)
168
#if defined(NETBSD) || defined(MACOSX)
(-)osl/unx/thread.c (+2 lines)
Lines 278-284 Link Here
278
	{
278
	{
279
		pThreadImpl->m_Flags &= ~THREADIMPL_FLAGS_ATTACHED;
279
		pThreadImpl->m_Flags &= ~THREADIMPL_FLAGS_ATTACHED;
280
280
281
#ifndef MACOSX
281
		pthread_detach(pThreadImpl->m_hThread);
282
		pthread_detach(pThreadImpl->m_hThread);
283
#endif
282
	}
284
	}
283
	pthread_mutex_unlock(&pThreadImpl->m_HandleLock);
285
	pthread_mutex_unlock(&pThreadImpl->m_HandleLock);
284
286
(-)util/makefile.mk (+3 lines)
Lines 157-162 Link Here
157
.IF "$(OS)"=="NETBSD"
157
.IF "$(OS)"=="NETBSD"
158
SHL1STDLIBS+= -Wl,--whole-archive -lgnu_readdir_r -Wl,--no-whole-archive
158
SHL1STDLIBS+= -Wl,--whole-archive -lgnu_readdir_r -Wl,--no-whole-archive
159
.ENDIF                    #  OS == NETBSD
159
.ENDIF                    #  OS == NETBSD
160
.IF "$(OS)"=="MACOSX"
161
SHL1STDLIBS+= -framework JavaVM
162
.ENDIF                    #  OS == MACOSX 
160
.ENDIF                    # GUI == UNX
163
.ENDIF                    # GUI == UNX
161
164
162
165

Return to issue 7161