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

(-)osl/unx/nlsupport.c (-14 / +365 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 = NULL;
748
	char				sEncoding[ 64 ] = "";
749
	CFStringEncoding	sCFSysEncoding;
750
	CFStringRef		sCFEncodingName;
751
	const unsigned int	macxpListMembers = sizeof(_macxp_language_list) / sizeof(_pair);
752
	const unsigned int	otherListMembers = sizeof(_nl_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
	/* Try the Mac-specific list first, then non-Mac list (picks up MACINTOSH from non-Mac list) */
775
	pLanguage = _pair_search( sEncoding, _macxp_language_list, macxpListMembers );
776
	if ( pLanguage == NULL )
777
		pLanguage = _pair_search( sEncoding, _nl_language_list, otherListMembers );
778
		
779
	OSL_ASSERT( pLanguage && ( RTL_TEXTENCODING_DONTKNOW != pLanguage->value ) );
780
781
	/*
782
	 * a matching item in our list provides a mapping from codeset to
783
	 * rtl-codeset
784
     */
785
	if ( pLanguage != NULL  )
786
		return pLanguage->value;
787
   
788
	return RTL_TEXTENCODING_DONTKNOW;
634
}
789
}
635
790
636
/*****************************************************************************/
791
/*****************************************************************************/
637
/* return the current process locale
792
/* return the current process locale
638
/*****************************************************************************/
793
/*****************************************************************************/
639
640
void _imp_getProcessLocale( rtl_Locale ** ppLocale )
794
void _imp_getProcessLocale( rtl_Locale ** ppLocale )
641
{
795
{
642
    *ppLocale = _parse_locale( "C" );
796
#ifdef BUILD_OS_APPLEOSX
797
    static const char *locale = NULL;
798
    JNIEnv *env = NULL;
799
    JavaVM *jvm = NULL;
800
    JavaVMInitArgs vm_args;
801
    jclass aClass = NULL;
802
    jmethodID aMethod = NULL;
803
    jobject aLocale = NULL;
804
    jstring sLocale = NULL;
805
    jboolean bCopy = JNI_TRUE;
806
#endif /* ifdef BUILD_OS_APPLEOSX */
807
808
    /* basic thread safeness */
809
    pthread_mutex_lock( &aLocalMutex );
810
811
#ifdef BUILD_OS_APPLEOSX
812
    /* Only fetch the locale once and cache it */
813
    if ( NULL == locale )
814
    {
815
        /* specify Java 2 */
816
        vm_args.version = JNI_VERSION_1_2;
817
        vm_args.options = NULL;
818
        vm_args.nOptions = 0;
819
        vm_args.ignoreUnrecognized = JNI_TRUE;
820
821
        /* get default JVM args */
822
        JNI_GetDefaultJavaVMInitArgs( &vm_args );
823
824
        /* create the Java VM */
825
        if ( JNI_CreateJavaVM( &jvm, (void *)&env, &vm_args ) == JNI_OK )
826
        {
827
            /* get the current locale */
828
            aClass = (*env)->FindClass( env, "java.util.Locale" );
829
            if ( aClass )
830
                aMethod = (*env)->GetStaticMethodID( env, aClass, "getDefault", "()Ljava/util/Locale;" );
831
            if ( aMethod )
832
                aLocale = (*env)->CallStaticObjectMethod( env, aClass, aMethod );
833
            if ( aClass )
834
                aMethod = (*env)->GetMethodID( env, aClass, "toString", "()Ljava/lang/String;" );
835
            if ( aMethod )
836
                sLocale = (jstring)( (*env)->CallObjectMethod( env, aLocale, aMethod) );
837
            if ( sLocale )
838
                locale = (*env)->GetStringUTFChars( env, sLocale, &bCopy );
839
840
            /* Destroy the JVM */
841
            (*jvm)->DestroyJavaVM( jvm );
842
        }
843
#endif /* ifdef BUILD_OS_APPLEOSX */
844
845
        /* handle the case where the Java method of finding locale fails */
846
        if ( NULL == locale )
847
        {
848
            /* simulate behavior of setlocale */
849
            locale = getenv( "LC_ALL" );
850
851
            if( NULL == locale )
852
                locale = getenv( "LC_CTYPE" );
853
854
            if( NULL == locale )
855
                locale = getenv( "LANG" );
856
857
            if( NULL == locale )
858
                locale = "C";
859
        }
860
861
        *ppLocale = _parse_locale( locale );
862
    }
863
864
    /* return the locale */
865
    *ppLocale = _parse_locale( locale );
866
867
    pthread_mutex_unlock( &aLocalMutex );
868
643
}
869
}
644
870
645
/*****************************************************************************/
871
/*****************************************************************************/
646
/* set the current process locale
872
/* set the current process locale
647
/*****************************************************************************/
873
/*****************************************************************************/
648
649
int _imp_setProcessLocale( rtl_Locale * pLocale )
874
int _imp_setProcessLocale( rtl_Locale * pLocale )
650
{
875
{
651
    return 0;
876
	/* There is not yet any way to set the locale of a process
877
	 * on Darwin or MacOS X through BSD layer functions.
878
	 *
879
	 * On MacOS X locale and language are set by the user through
880
	 * the International pane of the System Preferences application.
881
	 *
882
	 * FIXME when this can be done.
883
	 */
884
	return 0;
652
}
885
}
886
887
/*****************************************************************************/
888
/* Get a charset name from a CoreFoundation text encoding number
889
/*****************************************************************************/
890
void macxp_ConvertCFEncodingToIANACharSetName( char *buffer, unsigned int bufferLen, CFStringEncoding cfEncoding )
891
{
892
	switch( cfEncoding )
893
	{
894
		case 0:		strncpy( buffer, "MACINTOSH", bufferLen-1 );				break;	/* kCFStringEncodingMacRoman */
895
		case 1:		strncpy( buffer, "X-MAC-JAPANESE", bufferLen-1 );			break;	/* kCFStringEncodingMacJapanese */
896
		case 2:		strncpy( buffer, "X-MAC-TRAD-CHINESE", bufferLen-1 );		break;	/* kCFStringEncodingMacChineseTrad */
897
		case 3:		strncpy( buffer, "X-MAC-KOREAN", bufferLen-1 );			break;	/* kCFStringEncodingMacKorean */
898
		case 4:		strncpy( buffer, "X-MAC-ARABIC", bufferLen-1 );			break;	/* kCFStringEncodingMacArabic */
899
		case 5:		strncpy( buffer, "X-MAC-HEBREW", bufferLen-1 );			break;	/* kCFStringEncodingMacHebrew */
900
		case 6:		strncpy( buffer, "X-MAC-GREEK", bufferLen-1 );			break;	/* kCFStringEncodingMacGreek */
901
		case 7:		strncpy( buffer, "X-MAC-CYRILLIC", bufferLen-1 );			break;	/* kCFStringEncodingMacCyrillic */
902
		case 9:		strncpy( buffer, "X-MAC-DEVANAGARI", bufferLen-1 );		break;	/* kCFStringEncodingMacDevanagari */
903
		case 10:		strncpy( buffer, "X-MAC-GURMUKHI", bufferLen-1 );			break;	/* kCFStringEncodingMacGurmukhi */
904
		case 11:		strncpy( buffer, "X-MAC-GUJARATI", bufferLen-1 );			break;	/* kCFStringEncodingMacGujarati */
905
		case 12:		strncpy( buffer, "X-MAC-ORIYA", bufferLen-1 );			break;	/* kCFStringEncodingMacOriya */
906
		case 13:		strncpy( buffer, "X-MAC-BENGALI", bufferLen-1 );			break;	/* kCFStringEncodingMacBengali */
907
		case 14:		strncpy( buffer, "X-MAC-TAMIL", bufferLen-1 );			break;	/* kCFStringEncodingMacTamil */
908
		case 15:		strncpy( buffer, "X-MAC-TELUGU", bufferLen-1 );			break;	/* kCFStringEncodingMacTamil */
909
		case 16:		strncpy( buffer, "X-MAC-KANNADA", bufferLen-1 );			break;	/* kCFStringEncodingMacKannada */
910
		case 17:		strncpy( buffer, "X-MAC-MALAYALAM", bufferLen-1 );		break;	/* kCFStringEncodingMacMalayalam */
911
		case 18:		strncpy( buffer, "X-MAC-SINHALESE", bufferLen-1 );		break;	/* kCFStringEncodingMacSinhalese */
912
		case 19:		strncpy( buffer, "X-MAC-BURMESE", bufferLen-1 );			break;	/* kCFStringEncodingMacBurmese */
913
		case 20:		strncpy( buffer, "X-MAC-KHMER", bufferLen-1 );			break;	/* kCFStringEncodingMacKhmer */
914
		case 21:		strncpy( buffer, "X-MAC-THAI", bufferLen-1 );			break;	/* kCFStringEncodingMacThai */
915
		case 22:		strncpy( buffer, "X-MAC-LAOTIAN", bufferLen-1 );			break;	/* kCFStringEncodingMacLaotian */
916
		case 23:		strncpy( buffer, "X-MAC-GEORGIAN", bufferLen-1 );			break;	/* kCFStringEncodingMacGeorgian */
917
		case 24:		strncpy( buffer, "X-MAC-ARMENIAN", bufferLen-1 );			break;	/* kCFStringEncodingMacArmenian */
918
		case 25:		strncpy( buffer, "X-MAC-SIMP-CHINESE", bufferLen-1 );		break;	/* kCFStringEncodingMacChineseSimp */
919
		case 26:		strncpy( buffer, "X-MAC-TIBETAN", bufferLen-1 );			break;	/* kCFStringEncodingMacTibetan */
920
		case 27:		strncpy( buffer, "X-MAC-MONGOLIAN", bufferLen-1 );		break;	/* kCFStringEncodingMacMongolian */
921
		case 28:		strncpy( buffer, "X-MAC-ETHIOPIC", bufferLen-1 );			break;	/* kCFStringEncodingMacEthiopic */
922
		case 29:		strncpy( buffer, "X-MAC-CENTRALEURROMAN", bufferLen-1 );	break;	/* kCFStringEncodingMacCentralEurRoman */
923
		case 30:		strncpy( buffer, "X-MAC-VIETNAMESE", bufferLen-1 );		break;	/* kCFStringEncodingMacVietnamese */
924
		case 31:		strncpy( buffer, "X-MAC-EXTARABIC", bufferLen-1 );		break;	/* kCFStringEncodingMacExtArabic */
925
		case 33:		strncpy( buffer, "X-MAC-SYMBOL", bufferLen-1 );			break;	/* kCFStringEncodingMacSymbol */
926
		case 34:		strncpy( buffer, "X-MAC-DINGBATS", bufferLen-1 );			break;	/* kCFStringEncodingMacDingbats */
927
		case 35:		strncpy( buffer, "X-MAC-TURKISH", bufferLen-1 );			break;	/* kCFStringEncodingMacTurkish */
928
		case 36:		strncpy( buffer, "X-MAC-CROATIAN", bufferLen-1 );			break;	/* kCFStringEncodingMacCroatian */
929
		case 37:		strncpy( buffer, "X-MAC-ICELANDIC", bufferLen-1 );		break;	/* kCFStringEncodingMacIcelandic */
930
		case 38:		strncpy( buffer, "X-MAC-ROMANIAN", bufferLen-1 );			break;	/* kCFStringEncodingMacRomanian */
931
		case 126:		strncpy( buffer, "UNICODE-2-0", bufferLen-1 );			break;	/*  */
932
		case 140:		strncpy( buffer, "X-MAC-FARSI", bufferLen-1 );			break;	/* kCFStringEncodingMacFarsi */
933
		case 152:		strncpy( buffer, "X-MAC-UKRAINIAN", bufferLen-1 );		break;	/* kCFStringEncodingMacUkrainian */
934
		case 252:		strncpy( buffer, "X-MAC-VT100", bufferLen-1 );			break;	/* kCFStringEncodingMacVT100 */
935
		case 255:		strncpy( buffer, "macintosh", bufferLen-1 );				break;	/* kCFStringEncodingMacHFS */
936
		case 256:		strncpy( buffer, "UTF-16BE", bufferLen-1 );				break;	/* kCFStringEncodingUnicode */
937
		case 257:		strncpy( buffer, "UNICODE-1-1", bufferLen-1 );			break;	/*  */
938
		case 258:		strncpy( buffer, "UNICODE-1-1", bufferLen-1 );			break;	/*  */
939
		case 259:		strncpy( buffer, "UNICODE-2-0", bufferLen-1 );			break;	/*  */
940
		case 260:		strncpy( buffer, "csUnicode", bufferLen-1 );				break;	/*  */
941
		case 513:		strncpy( buffer, "ISO-8859-1", bufferLen-1 );			break;	/* kCFStringEncodingISOLatin1 */
942
		case 514:		strncpy( buffer, "ISO-8859-2", bufferLen-1 );			break;	/* kCFStringEncodingISOLatin2 */
943
		case 515:		strncpy( buffer, "ISO-8859-3", bufferLen-1 );			break;	/* kCFStringEncodingISOLatin3 */
944
		case 516:		strncpy( buffer, "ISO-8859-4", bufferLen-1 );			break;	/* kCFStringEncodingISOLatin4 */
945
		case 517:		strncpy( buffer, "ISO-8859-5", bufferLen-1 );			break;	/* kCFStringEncodingISOLatinCyrillic */
946
		case 518:		strncpy( buffer, "ISO-8859-6", bufferLen-1 );			break;	/* kCFStringEncodingISOLatinArabic */
947
		case 519:		strncpy( buffer, "ISO-8859-7", bufferLen-1 );			break;	/* kCFStringEncodingISOLatinGreek */
948
		case 520:		strncpy( buffer, "ISO-8859-8", bufferLen-1 );			break;	/* kCFStringEncodingISOLatinHebrew */
949
		case 521:		strncpy( buffer, "ISO-8859-9", bufferLen-1 );			break;	/* kCFStringEncodingISOLatin5 */
950
		case 522:		strncpy( buffer, "ISO-8859-10", bufferLen-1 );			break;	/* kCFStringEncodingISOLatin6 */
951
		case 523:		strncpy( buffer, "ISO-8859-11", bufferLen-1 );			break;	/* kCFStringEncodingISOLatinThai */
952
		case 525:		strncpy( buffer, "ISO-8859-13", bufferLen-1 );			break;	/* kCFStringEncodingISOLatin7 */
953
		case 526:		strncpy( buffer, "ISO-8859-14", bufferLen-1 );			break;	/* kCFStringEncodingISOLatin8 */
954
		case 527:		strncpy( buffer, "ISO-8859-15", bufferLen-1 );			break;	/* kCFStringEncodingISOLatin9 */
955
		case 1024:	strncpy( buffer, "CP437", bufferLen-1 );				break;	/* kCFStringEncodingDOSLatinUS */
956
		case 1029:	strncpy( buffer, "CP737", bufferLen-1 );				break;	/* kCFStringEncodingDOSGreek */
957
		case 1030:	strncpy( buffer, "CP775", bufferLen-1 );				break;	/* kCFStringEncodingDOSBalticRim */
958
		case 1040:	strncpy( buffer, "CP850", bufferLen-1 );				break;	/* kCFStringEncodingDOSLatin1 */
959
		case 1042:	strncpy( buffer, "CP852", bufferLen-1 );				break;	/* kCFStringEncodingDOSGreek1 */
960
		case 1044:	strncpy( buffer, "CP857", bufferLen-1 );				break;	/* kCFStringEncodingDOSTurkish */
961
		case 1046:	strncpy( buffer, "CP861", bufferLen-1 );				break;	/* kCFStringEncodingDOSIcelandic */
962
		case 1049:	strncpy( buffer, "cp864", bufferLen-1 );				break;	/* kCFStringEncodingDOSArabic */
963
		case 1051:	strncpy( buffer, "CP866", bufferLen-1 );				break;	/* kCFStringEncodingDOSRussian */
964
		case 1053:	strncpy( buffer, "CP874", bufferLen-1 );				break;	/* kCFStringEncodingDOSThai */
965
		case 1056:	strncpy( buffer, "CP932", bufferLen-1 );				break;	/* kCFStringEncodingDOSJapanese */
966
		case 1057:	strncpy( buffer, "CP936", bufferLen-1 );				break;	/* kCFStringEncodingDOSChineseSimplif */
967
		case 1058:	strncpy( buffer, "CP949", bufferLen-1 );				break;	/* kCFStringEncodingDOSKorean */
968
		case 1059:	strncpy( buffer, "CP950", bufferLen-1 );				break;	/* kCFStringEncodingDOSChineseTrad */
969
		case 1280:	strncpy( buffer, "WINDOWS-1252", bufferLen-1 );			break;	/* kCFStringEncodingWindowsLatin1 */
970
		case 1281:	strncpy( buffer, "WINDOWS-1250", bufferLen-1 );			break;	/* kCFStringEncodingWindowsLatin2 */
971
		case 1282:	strncpy( buffer, "WINDOWS-1251", bufferLen-1 );			break;	/* kCFStringEncodingWindowsCyrillic */
972
		case 1283:	strncpy( buffer, "WINDOWS-1253", bufferLen-1 );			break;	/* kCFStringEncodingWindowsGreek */
973
		case 1284:	strncpy( buffer, "WINDOWS-1254", bufferLen-1 );			break;	/* kCFStringEncodingWindowsLatin5 */
974
		case 1285:	strncpy( buffer, "WINDOWS-1255", bufferLen-1 );			break;	/* kCFStringEncodingWindowsHebrew */
975
		case 1286:	strncpy( buffer, "WINDOWS-1256", bufferLen-1 );			break;	/* kCFStringEncodingWindowsArabic */
976
		case 1287:	strncpy( buffer, "WINDOWS-1257", bufferLen-1 );			break;	/* kCFStringEncodingWindowsBalticRim */
977
		case 1288:	strncpy( buffer, "WINDOWS-1258", bufferLen-1 );			break;	/* kCFStringEncodingWindowsVietnamese */
978
		case 1536:	strncpy( buffer, "US-ASCII", bufferLen-1 );				break;	/* kCFStringEncodingASCII */
979
		case 1570:	strncpy( buffer, "JIS_C6226-1983", bufferLen-1 );			break;	/* kCFStringEncodingJIS_X0208_90 */
980
		case 1584:	strncpy( buffer, "csISO58GB231280", bufferLen-1 );		break;	/* kCFStringEncodingGB_2312_80 */
981
		case 1585:	strncpy( buffer, "X-GBK", bufferLen-1 );				break;	/* kCFStringEncodingGBK_95 */
982
		case 1600:	strncpy( buffer, "csKSC56011987", bufferLen-1 );			break;	/* kCFStringEncodingKSC_5601_87 */
983
		case 2080:	strncpy( buffer, "ISO-2022-JP", bufferLen-1 );			break;	/* kCFStringEncodingISO_2022_JP */
984
		case 2096:	strncpy( buffer, "ISO-2022-CN", bufferLen-1 );			break;	/* kCFStringEncodingISO_2022_CN */
985
		case 2097:	strncpy( buffer, "ISO-2022-CN-EXT", bufferLen-1 );		break;	/* kCFStringEncodingISO_2022_CN_EXT */
986
		case 2112:	strncpy( buffer, "ISO-2022-KR", bufferLen-1 );			break;	/* kCFStringEncodingISO_2022_KR */
987
		case 2336:	strncpy( buffer, "EUC-JP", bufferLen-1 );				break;	/* kCFStringEncodingEUC_JP */
988
		case 2352:	strncpy( buffer, "EUC-CN", bufferLen-1 );				break;	/* kCFStringEncodingEUC_CN */
989
		case 2353:	strncpy( buffer, "EUC-TW", bufferLen-1 );				break;	/* kCFStringEncodingEUC_TW */
990
		case 2368:	strncpy( buffer, "EUC-KR", bufferLen-1 );				break;	/* kCFStringEncodingEUC_KR */
991
		case 2561:	strncpy( buffer, "SHIFT_JIS", bufferLen-1 );				break;	/* kCFStringEncodingShiftJIS */
992
		case 2562:	strncpy( buffer, "KOI8-R", bufferLen-1 );				break;	/* kCFStringEncodingKOI8_R */
993
		case 2563:	strncpy( buffer, "BIG5", bufferLen-1 );					break;	/* kCFStringEncodingBig5 */
994
		case 2564:	strncpy( buffer, "X-MAC-ROMAN-LATIN1", bufferLen-1 );		break;	/* kCFStringEncodingMacRomanLatin1 */
995
		case 2565:	strncpy( buffer, "HZ-GB-2312", bufferLen-1 );			break;	/* kCFStringEncodingHZ_GB_2312 */
996
		case 2566:	strncpy( buffer, "Big5-HKSCS", bufferLen-1 );			break;	/* kCFStringEncodingBig5_HKSCS_1999 */
997
		case 2817:	strncpy( buffer, "X-NEXTSTEP", bufferLen-1 );			break;	/* kCFStringEncodingNextStepLatin */
998
		case 3074:	strncpy( buffer, "cp037", bufferLen-1 );				break;	/* kCFStringEncodingEBCDIC_CP037 */
999
		default:		strncpy( buffer, "", bufferLen-1 );					break;	/* Not listed */
1000
	}
1001
}
1002
#endif	/* ifndef MACOSX */
1003
653
1004
654
#else /* ifdef LINUX || SOLARIS || MACOSX || NETBSD */
1005
#else /* ifdef LINUX || SOLARIS || MACOSX || NETBSD */
655
1006
(-)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)
(-)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