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

(-)osl/unx/nlsupport.c (-13 / +334 lines)
Lines 63-73 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>
70
#endif
71
#endif
72
#endif
71
73
72
/*****************************************************************************/
74
/*****************************************************************************/
73
/* typedefs
75
/* typedefs
Lines 241-247 Link Here
241
    return NULL;
243
    return NULL;
242
}
244
}
243
        
245
        
244
#if defined(LINUX) || defined(SOLARIS) || defined(IRIX) || defined(NETBSD)
246
#if defined(LINUX) || defined(SOLARIS) || defined(IRIX) || defined(NETBSD) || defined(MACOSX)
245
247
246
/*
248
/*
247
 * This implementation of osl_getTextEncodingFromLocale maps 
249
 * This implementation of osl_getTextEncodingFromLocale maps 
Lines 315-321 Link Here
315
   { "sjis",		RTL_TEXTENCODING_SHIFT_JIS	}, /* Japan */
317
   { "sjis",		RTL_TEXTENCODING_SHIFT_JIS	}, /* Japan */
316
};
318
};
317
319
318
#elif defined(LINUX) || defined(NETBSD)
320
#elif defined(LINUX) || defined(NETBSD) || defined(MACOSX)
319
321
320
const _pair _nl_language_list[] = {
322
const _pair _nl_language_list[] = {
321
    { "ANSI_X3.110-1983",           RTL_TEXTENCODING_DONTKNOW   },  /* ISO-IR-99 NAPLPS */
323
    { "ANSI_X3.110-1983",           RTL_TEXTENCODING_DONTKNOW   },  /* ISO-IR-99 NAPLPS */
Lines 495-505 Link Here
495
    { "VIDEOTEX-SUPPL",             RTL_TEXTENCODING_DONTKNOW },    /* ISO-IR-70 */
497
    { "VIDEOTEX-SUPPL",             RTL_TEXTENCODING_DONTKNOW },    /* ISO-IR-70 */
496
    { "WIN-SAMI-2",                 RTL_TEXTENCODING_DONTKNOW }     /* WS2 */
498
    { "WIN-SAMI-2",                 RTL_TEXTENCODING_DONTKNOW }     /* WS2 */
497
};
499
};
500
501
#endif /* ifdef LINUX || NETBSD || MACOSX */
498
502
499
#endif /* ifdef LINUX || NETBSD */
503
#ifdef MACOSX
504
/* MacOS X has some special names for some of its encodings.  These encoding names are
505
 * returned by CFStringConvertEncodingToIANACharSetName() when given a CFTextEncoding
506
 * argument from one of the ones in CFStringEncodingExt.h in the CoreFoundation framework.
507
 */
508
const _pair _macxp_language_list[] = {
509
	{ "X-MAC-JAPANESE",			RTL_TEXTENCODING_EUC_JP },			/* kCFStringEncodingMacJapanese */
510
	{ "X-MAC-TRAD-CHINESE",		RTL_TEXTENCODING_APPLE_CHINTRAD },		/* kCFStringEncodingMacChineseTrad */
511
	{ "X-MAC-KOREAN",			RTL_TEXTENCODING_EUC_KR },			/* kCFStringEncodingMacKorean */
512
	{ "X-MAC-ARABIC",			RTL_TEXTENCODING_APPLE_ARABIC },		/* kCFStringEncodingMacArabic */
513
	{ "X-MAC-HEBREW",			RTL_TEXTENCODING_APPLE_HEBREW },		/* kCFStringEncodingMacHebrew */
514
	{ "X-MAC-GREEK",			RTL_TEXTENCODING_APPLE_GREEK },		/* kCFStringEncodingMacGreek */
515
	{ "X-MAC-CYRILLIC",			RTL_TEXTENCODING_APPLE_CYRILLIC },		/* kCFStringEncodingMacCyrillic */
516
	{ "X-MAC-DEVANAGARI",		RTL_TEXTENCODING_APPLE_DEVANAGARI },	/* kCFStringEncodingMacDevanagari */
517
	{ "X-MAC-GURMUKHI",			RTL_TEXTENCODING_APPLE_GURMUKHI },		/* kCFStringEncodingMacGurmukhi */
518
	{ "X-MAC-GUJARATI",			RTL_TEXTENCODING_APPLE_GUJARATI },		/* kCFStringEncodingMacGujarati */
519
	{ "X-MAC-ORIYA",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacOriya */
520
	{ "X-MAC-BENGALI",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacBengali */
521
	{ "X-MAC-TAMIL",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacTamil */
522
	{ "X-MAC-TELUGU",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacTelugu */
523
	{ "X-MAC-KANNADA",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacKannada */
524
	{ "X-MAC-MALAYALAM",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacMalayalam */
525
	{ "X-MAC-SINHALESE",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacSinhalese */
526
	{ "X-MAC-BURMESE",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacBurmese */
527
	{ "X-MAC-KHMER",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacKhmer */
528
	{ "X-MAC-THAI",			RTL_TEXTENCODING_APPLE_THAI },		/* kCFStringEncodingMacThai */
529
	{ "X-MAC-LAOTIAN",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacLaotian */
530
	{ "X-MAC-GEORGIAN",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacGeorgian */
531
	{ "X-MAC-ARMENIAN",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacArmenian */
532
	{ "X-MAC-SIMP-CHINESE",		RTL_TEXTENCODING_APPLE_CHINSIMP },		/* kCFStringEncodingMacChineseSimp */
533
	{ "X-MAC-TIBETAN",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacTibetan */
534
	{ "X-MAC-MONGOLIAN",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacMongolian */
535
	{ "X-MAC-ETHIOPIC",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacEthiopic */
536
	{ "X-MAC-CENTRALEURROMAN",	RTL_TEXTENCODING_APPLE_CENTEURO },		/* kCFStringEncodingMacCentralEurRoman */
537
	{ "X-MAC-VIETNAMESE",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacVietnamese */
538
	{ "X-MAC-EXTARABIC",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacExtArabic */
539
	{ "X-MAC-SYMBOL",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacSymbol */
540
	{ "X-MAC-DINGBATS",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacDingbats */
541
	{ "X-MAC-TURKISH",			RTL_TEXTENCODING_APPLE_TURKISH },		/* kCFStringEncodingMacTurkish */
542
	{ "X-MAC-CROATIAN",			RTL_TEXTENCODING_APPLE_CROATIAN },		/* kCFStringEncodingMacCroatian */
543
	{ "X-MAC-ICELANDIC",		RTL_TEXTENCODING_APPLE_ICELAND },		/* kCFStringEncodingMacIcelandic */
544
	{ "X-MAC-ROMANIAN",			RTL_TEXTENCODING_APPLE_ROMANIAN },		/* kCFStringEncodingMacRomanian */
545
	{ "UNICODE-2-0",			RTL_TEXTENCODING_DONTKNOW },			/*  */
546
	{ "X-MAC-FARSI",			RTL_TEXTENCODING_APPLE_FARSI },		/* kCFStringEncodingMacFarsi */
547
	{ "X-MAC-UKRAINIAN",		RTL_TEXTENCODING_APPLE_UKRAINIAN },	/* kCFStringEncodingMacUkrainian */
548
	{ "X-MAC-VT100",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacVT100 */
549
	{ "macintosh",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingMacHFS */
550
	{ "UTF-16BE",				RTL_TEXTENCODING_UNICODE },			/* kCFStringEncodingUnicode */
551
	{ "UNICODE-1-1",			RTL_TEXTENCODING_DONTKNOW },			/*  */
552
	{ "UNICODE-1-1",			RTL_TEXTENCODING_DONTKNOW },			/*  */
553
	{ "UNICODE-2-0",			RTL_TEXTENCODING_DONTKNOW },			/*  */
554
	{ "csUnicode",				RTL_TEXTENCODING_DONTKNOW },			/*  */
555
	{ "CP437",				RTL_TEXTENCODING_IBM_437 },			/* kCFStringEncodingDOSLatinUS */
556
	{ "CP737",				RTL_TEXTENCODING_IBM_737 },			/* kCFStringEncodingDOSGreek */
557
	{ "CP775",				RTL_TEXTENCODING_IBM_775 },			/* kCFStringEncodingDOSBalticRim */
558
	{ "CP850",				RTL_TEXTENCODING_IBM_850 },			/* kCFStringEncodingDOSLatin1 */
559
	{ "CP852",				RTL_TEXTENCODING_IBM_852 },			/* kCFStringEncodingDOSGreek1 */
560
	{ "CP857",				RTL_TEXTENCODING_IBM_857 },			/* kCFStringEncodingDOSTurkish */
561
	{ "CP861",				RTL_TEXTENCODING_IBM_861 },			/* kCFStringEncodingDOSIcelandic */
562
	{ "cp864",				RTL_TEXTENCODING_IBM_864 },			/* kCFStringEncodingDOSArabic */
563
	{ "CP866",				RTL_TEXTENCODING_IBM_866 },			/* kCFStringEncodingDOSRussian */
564
	{ "CP874",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingDOSThai */
565
	{ "CP932",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingDOSJapanese */
566
	{ "CP936",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingDOSChineseSimplif */
567
	{ "CP949",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingDOSKorean */
568
	{ "CP950",				RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingDOSChineseTrad */
569
	{ "WINDOWS-1252",			RTL_TEXTENCODING_MS_1252 },			/* kCFStringEncodingWindowsLatin1 */
570
	{ "WINDOWS-1250",			RTL_TEXTENCODING_MS_1250 },			/* kCFStringEncodingWindowsLatin2 */
571
	{ "WINDOWS-1251",			RTL_TEXTENCODING_MS_1251 },			/* kCFStringEncodingWindowsCyrillic */
572
	{ "WINDOWS-1253",			RTL_TEXTENCODING_MS_1253 },			/* kCFStringEncodingWindowsGreek */
573
	{ "WINDOWS-1254",			RTL_TEXTENCODING_MS_1254 },			/* kCFStringEncodingWindowsLatin5 */
574
	{ "WINDOWS-1255",			RTL_TEXTENCODING_MS_1255 },			/* kCFStringEncodingWindowsHebrew */
575
	{ "WINDOWS-1256",			RTL_TEXTENCODING_MS_1256 },			/* kCFStringEncodingWindowsArabic */
576
	{ "WINDOWS-1257",			RTL_TEXTENCODING_MS_1257 },			/* kCFStringEncodingWindowsBalticRim */
577
	{ "WINDOWS-1258",			RTL_TEXTENCODING_MS_1258 },			/* kCFStringEncodingWindowsVietnamese */
578
	{ "US-ASCII",				RTL_TEXTENCODING_ASCII_US },			/* kCFStringEncodingASCII */
579
	{ "JIS_C6226-1983",			RTL_TEXTENCODING_GB_2312 },			/* kCFStringEncodingJIS_X0208_90 */
580
	{ "csISO58GB231280",		RTL_TEXTENCODING_GB_2312 },			/* kCFStringEncodingGB_2312_80 */
581
	{ "X-GBK",				RTL_TEXTENCODING_GBK },				/* kCFStringEncodingGBK_95 */
582
	{ "csKSC56011987",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingKSC_5601_87 */
583
	{ "ISO-2022-JP",			RTL_TEXTENCODING_ISO_2022_JP },		/* kCFStringEncodingISO_2022_JP */
584
	{ "ISO-2022-CN",			RTL_TEXTENCODING_ISO_2022_CN },		/* kCFStringEncodingISO_2022_CN */
585
	{ "ISO-2022-CN-EXT",		RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingISO_2022_CN_EXT */
586
	{ "ISO-2022-KR",			RTL_TEXTENCODING_ISO_2022_KR },		/* kCFStringEncodingISO_2022_KR */
587
	{ "EUC-JP",				RTL_TEXTENCODING_EUC_JP },			/* kCFStringEncodingEUC_JP */
588
	{ "EUC-CN",				RTL_TEXTENCODING_EUC_CN },			/* kCFStringEncodingEUC_CN */
589
	{ "EUC-TW",				RTL_TEXTENCODING_EUC_TW },			/* kCFStringEncodingEUC_TW */
590
	{ "EUC-KR",				RTL_TEXTENCODING_EUC_KR },			/* kCFStringEncodingEUC_KR */
591
	{ "SHIFT_JIS",				RTL_TEXTENCODING_SHIFT_JIS },			/* kCFStringEncodingShiftJIS */
592
	{ "KOI8-R",				RTL_TEXTENCODING_KOI8_R },			/* kCFStringEncodingKOI8_R */
593
	{ "X-MAC-ROMAN-LATIN1",		RTL_TEXTENCODING_APPLE_ROMAN },		/* kCFStringEncodingMacRomanLatin1 */
594
	{ "HZ-GB-2312",			RTL_TEXTENCODING_GB_2312 },			/* kCFStringEncodingHZ_GB_2312 */
595
	{ "Big5-HKSCS",			RTL_TEXTENCODING_BIG5_HKSCS },		/* kCFStringEncodingBig5_HKSCS_1999 */
596
	{ "X-NEXTSTEP",			RTL_TEXTENCODING_DONTKNOW },			/* kCFStringEncodingNextStepLatin */
597
	{ "cp037",				RTL_TEXTENCODING_DONTKNOW }			/* kCFStringEncodingEBCDIC_CP037 */
598
/* ___________ Add more encodings here ___________ */
599
};
600
#endif	/* ifdef MACOSX */
500
601
501
static pthread_mutex_t aLocalMutex = PTHREAD_MUTEX_INITIALIZER;
602
static pthread_mutex_t aLocalMutex = PTHREAD_MUTEX_INITIALIZER;
502
603
604
#ifndef MACOSX
503
/*****************************************************************************/
605
/*****************************************************************************/
504
/* return the text encoding corresponding to the given locale
606
/* return the text encoding corresponding to the given locale
505
/*****************************************************************************/
607
/*****************************************************************************/
Lines 618-655 Link Here
618
    return ret;
720
    return ret;
619
}
721
}
620
722
621
#elif defined(MACOSX) /* ifdef LINUX || SOLARIS || NETBSD */
723
#else	/* ifndef MACOSX */
622
724
623
/*
725
/*
624
 * FIXME: the MacOS X implemetation is missing
726
 *
727
 * MacOS X specific Locale manipulation code
728
 *
625
 */
729
 */
626
 
730
731
#include <premac.h>
732
#include <CoreFoundation/CoreFoundation.h>
733
#include <postmac.h>
734
735
void macxp_ConvertCFEncodingToIANACharSetName( char *buffer, unsigned int bufferLen, CFStringEncoding cfEncoding );
736
627
/*****************************************************************************/
737
/*****************************************************************************/
628
/* return the text encoding corresponding to the given locale
738
/* return the text encoding corresponding to the given locale
629
/*****************************************************************************/
739
/*****************************************************************************/
630
631
rtl_TextEncoding osl_getTextEncodingFromLocale( rtl_Locale * pLocale )
740
rtl_TextEncoding osl_getTextEncodingFromLocale( rtl_Locale * pLocale )
632
{
741
{
633
    return RTL_TEXTENCODING_DONTKNOW;
742
    const _pair	*language = 0;
743
    char			locale_buf[ 64 ] = "";
744
    char			*localeExtPtr;
745
746
    /* Default to process locale if pLocale == NULL */
747
    if( NULL == pLocale )
748
        osl_getProcessLocale( &pLocale );
749
750
    /* Convert rtl_Locale to locale string */
751
    if( _compose_locale( pLocale, locale_buf, 64 ) )
752
    {
753
		/* Search for the locale string in our language list */
754
		if ( locale_buf != NULL )
755
		{
756
			/* We want the extension at the end of the locale, not the language */
757
			localeExtPtr = strrchr( locale_buf, '.' );
758
			if( localeExtPtr != NULL )
759
			{
760
				const unsigned int members = sizeof(_nl_language_list) / sizeof(_pair);
761
				language = _pair_search( localeExtPtr + 1, _nl_language_list, members );
762
				
763
				/* If the language could not be found, try that MacOS X/Darwin specific
764
				* encoding translation list.
765
				*/
766
				if ( language == NULL )
767
				{
768
					const unsigned int members = sizeof(_macxp_language_list) / sizeof(_pair);
769
					language = _pair_search( localeExtPtr + 1, _macxp_language_list, members );
770
				}
771
			}
772
		}
773
		
774
		OSL_ASSERT( language && ( RTL_TEXTENCODING_DONTKNOW != language->value ) );
775
	}
776
777
	/* a matching item in our list provides a mapping from codeset to
778
		* rtl-codeset */
779
	if ( language != NULL )
780
		return language->value;
781
   
782
	return RTL_TEXTENCODING_DONTKNOW;
634
}
783
}
635
784
636
/*****************************************************************************/
785
/*****************************************************************************/
637
/* return the current process locale
786
/* return the current process locale
638
/*****************************************************************************/
787
/*****************************************************************************/
639
640
void _imp_getProcessLocale( rtl_Locale ** ppLocale )
788
void _imp_getProcessLocale( rtl_Locale ** ppLocale )
641
{
789
{
642
    *ppLocale = _parse_locale( "C" );
790
	char				sSystemLanguage[ 10 ] = "";
791
	char				sComposedLocale[ 64 ] = "";
792
	char				sEncoding[ 64 ] = "";
793
	CFStringEncoding	cfSysEncoding;
794
	CFStringRef		sCFEncodingName;
795
	const char		*ptr;
796
	int				success;
797
798
	/* basic thread safeness */
799
	pthread_mutex_lock( &aLocalMutex );
800
801
	/* The process goes like this:
802
	 * 1) Get the LANG environment variable.  If its NULL, then default to "en_US".
803
	 * 2) Get the current CoreFoundation system text encoding.
804
	 * 3) Concatenate the two and pass to _parse_locale()
805
	 */
806
807
	/* Get system language from the LANG environment variable. */
808
	ptr = getenv( "LANG" );
809
	if ( (ptr!=NULL) && (*ptr!=NULL) )
810
		strncpy( sSystemLanguage, ptr, 6 );	/* 5 characters for countrycode_LANGUAGE (ie "en_US") + NULL */
811
	else
812
		strcpy( sSystemLanguage, "en_US" );
813
814
	/* For retrieving the CoreFoundation text encoding, the process goes like this:
815
	 * 1) On MacOS X this will be the first language listed in the 
816
	 *     Language tab of the International preference pane.
817
	 * 2) On Darwin 5 the value is currently hardwired to
818
	 *     kCFStringEncodingMacRoman.
819
	 */
820
	cfSysEncoding = CFStringGetSystemEncoding();
821
	#ifdef QUARTZ
822
		/* Use MacOS X routines to get the charset name for us */
823
		sCFEncodingName = CFStringConvertEncodingToIANACharSetName( cfSysEncoding );
824
	
825
		/* FIXME: success is really supposed to be a Boolean but since we aren't checking it anyway... */
826
		success = CFStringGetCString( sCFEncodingName, sEncoding, 32, cfSysEncoding );
827
	#else
828
		/* Darwin doesn't have a CFStringConvertEncodingToIANACharSetName(), so we call our own replacement */
829
		macxp_ConvertCFEncodingToIANACharSetName( sEncoding, 32, cfSysEncoding );
830
	#endif
831
832
	/* Merge the two for an actual Locale. */
833
	snprintf( sComposedLocale, 63, "%s.%s", sSystemLanguage, sEncoding );
834
835
	/* return the LC_CTYPE locale */
836
	*ppLocale = _parse_locale( sComposedLocale );
837
838
	pthread_mutex_unlock( &aLocalMutex );
643
}
839
}
644
840
645
/*****************************************************************************/
841
/*****************************************************************************/
646
/* set the current process locale
842
/* set the current process locale
647
/*****************************************************************************/
843
/*****************************************************************************/
648
649
int _imp_setProcessLocale( rtl_Locale * pLocale )
844
int _imp_setProcessLocale( rtl_Locale * pLocale )
650
{
845
{
651
    return 0;
846
	/* There is not yet any way to set the locale of a process
847
	 * on Darwin or MacOS X through BSD layer functions.
848
	 *
849
	 * On MacOS X locale and language are set by the user through
850
	 * the International pane of the System Preferences application.
851
	 *
852
	 * FIXME when this can be done.
853
	 */
854
	return 0;
652
}
855
}
856
857
/*****************************************************************************/
858
/* Get a charset name from a CoreFoundation text encoding number
859
/*****************************************************************************/
860
void macxp_ConvertCFEncodingToIANACharSetName( char *buffer, unsigned int bufferLen, CFStringEncoding cfEncoding )
861
{
862
	switch( cfEncoding )
863
	{
864
		case 0:	strncpy( buffer, "MACINTOSH", 31 );			break;	/* kCFStringEncodingMacRoman */
865
		case 1:	strncpy( buffer, "X-MAC-JAPANESE", 31 );		break;	/* kCFStringEncodingMacJapanese */
866
		case 2:	strncpy( buffer, "X-MAC-TRAD-CHINESE", 31 );		break;	/* kCFStringEncodingMacChineseTrad */
867
		case 3:	strncpy( buffer, "X-MAC-KOREAN", 31 );			break;	/* kCFStringEncodingMacKorean */
868
		case 4:	strncpy( buffer, "X-MAC-ARABIC", 31 );			break;	/* kCFStringEncodingMacArabic */
869
		case 5:	strncpy( buffer, "X-MAC-HEBREW", 31 );			break;	/* kCFStringEncodingMacHebrew */
870
		case 6:	strncpy( buffer, "X-MAC-GREEK", 31 );			break;	/* kCFStringEncodingMacGreek */
871
		case 7:	strncpy( buffer, "X-MAC-CYRILLIC", 31 );		break;	/* kCFStringEncodingMacCyrillic */
872
		case 9:	strncpy( buffer, "X-MAC-DEVANAGARI", 31 );		break;	/* kCFStringEncodingMacDevanagari */
873
		case 10:	strncpy( buffer, "X-MAC-GURMUKHI", 31 );		break;	/* kCFStringEncodingMacGurmukhi */
874
		case 11:	strncpy( buffer, "X-MAC-GUJARATI", 31 );		break;	/* kCFStringEncodingMacGujarati */
875
		case 12:	strncpy( buffer, "X-MAC-ORIYA", 31 );			break;	/* kCFStringEncodingMacOriya */
876
		case 13:	strncpy( buffer, "X-MAC-BENGALI", 31 );			break;	/* kCFStringEncodingMacBengali */
877
		case 14:	strncpy( buffer, "X-MAC-TAMIL", 31 );			break;	/* kCFStringEncodingMacTamil */
878
		case 15:	strncpy( buffer, "X-MAC-TELUGU", 31 );			break;	/* kCFStringEncodingMacTamil */
879
		case 16:	strncpy( buffer, "X-MAC-KANNADA", 31 );			break;	/* kCFStringEncodingMacKannada */
880
		case 17:	strncpy( buffer, "X-MAC-MALAYALAM", 31 );		break;	/* kCFStringEncodingMacMalayalam */
881
		case 18:	strncpy( buffer, "X-MAC-SINHALESE", 31 );		break;	/* kCFStringEncodingMacSinhalese */
882
		case 19:	strncpy( buffer, "X-MAC-BURMESE", 31 );			break;	/* kCFStringEncodingMacBurmese */
883
		case 20:	strncpy( buffer, "X-MAC-KHMER", 31 );			break;	/* kCFStringEncodingMacKhmer */
884
		case 21:	strncpy( buffer, "X-MAC-THAI", 31 );			break;	/* kCFStringEncodingMacThai */
885
		case 22:	strncpy( buffer, "X-MAC-LAOTIAN", 31 );			break;	/* kCFStringEncodingMacLaotian */
886
		case 23:	strncpy( buffer, "X-MAC-GEORGIAN", 31 );		break;	/* kCFStringEncodingMacGeorgian */
887
		case 24:	strncpy( buffer, "X-MAC-ARMENIAN", 31 );		break;	/* kCFStringEncodingMacArmenian */
888
		case 25:	strncpy( buffer, "X-MAC-SIMP-CHINESE", 31 );		break;	/* kCFStringEncodingMacChineseSimp */
889
		case 26:	strncpy( buffer, "X-MAC-TIBETAN", 31 );			break;	/* kCFStringEncodingMacTibetan */
890
		case 27:	strncpy( buffer, "X-MAC-MONGOLIAN", 31 );		break;	/* kCFStringEncodingMacMongolian */
891
		case 28:	strncpy( buffer, "X-MAC-ETHIOPIC", 31 );		break;	/* kCFStringEncodingMacEthiopic */
892
		case 29:	strncpy( buffer, "X-MAC-CENTRALEURROMAN", 31 );	break;	/* kCFStringEncodingMacCentralEurRoman */
893
		case 30:	strncpy( buffer, "X-MAC-VIETNAMESE", 31 );		break;	/* kCFStringEncodingMacVietnamese */
894
		case 31:	strncpy( buffer, "X-MAC-EXTARABIC", 31 );		break;	/* kCFStringEncodingMacExtArabic */
895
		case 33:	strncpy( buffer, "X-MAC-SYMBOL", 31 );			break;	/* kCFStringEncodingMacSymbol */
896
		case 34:	strncpy( buffer, "X-MAC-DINGBATS", 31 );		break;	/* kCFStringEncodingMacDingbats */
897
		case 35:	strncpy( buffer, "X-MAC-TURKISH", 31 );			break;	/* kCFStringEncodingMacTurkish */
898
		case 36:	strncpy( buffer, "X-MAC-CROATIAN", 31 );		break;	/* kCFStringEncodingMacCroatian */
899
		case 37:	strncpy( buffer, "X-MAC-ICELANDIC", 31 );		break;	/* kCFStringEncodingMacIcelandic */
900
		case 38:	strncpy( buffer, "X-MAC-ROMANIAN", 31 );		break;	/* kCFStringEncodingMacRomanian */
901
		case 126:	strncpy( buffer, "UNICODE-2-0", 31 );			break;	/*  */
902
		case 140:	strncpy( buffer, "X-MAC-FARSI", 31 );			break;	/* kCFStringEncodingMacFarsi */
903
		case 152:	strncpy( buffer, "X-MAC-UKRAINIAN", 31 );		break;	/* kCFStringEncodingMacUkrainian */
904
		case 252:	strncpy( buffer, "X-MAC-VT100", 31 );			break;	/* kCFStringEncodingMacVT100 */
905
		case 255:	strncpy( buffer, "macintosh", 31 );			break;	/* kCFStringEncodingMacHFS */
906
		case 256:	strncpy( buffer, "UTF-16BE", 31 );				break;	/* kCFStringEncodingUnicode */
907
		case 257:	strncpy( buffer, "UNICODE-1-1", 31 );			break;	/*  */
908
		case 258:	strncpy( buffer, "UNICODE-1-1", 31 );			break;	/*  */
909
		case 259:	strncpy( buffer, "UNICODE-2-0", 31 );			break;	/*  */
910
		case 260:	strncpy( buffer, "csUnicode", 31 );			break;	/*  */
911
		case 513:	strncpy( buffer, "ISO-8859-1", 31 );			break;	/* kCFStringEncodingISOLatin1 */
912
		case 514:	strncpy( buffer, "ISO-8859-2", 31 );			break;	/* kCFStringEncodingISOLatin2 */
913
		case 515:	strncpy( buffer, "ISO-8859-3", 31 );			break;	/* kCFStringEncodingISOLatin3 */
914
		case 516:	strncpy( buffer, "ISO-8859-4", 31 );			break;	/* kCFStringEncodingISOLatin4 */
915
		case 517:	strncpy( buffer, "ISO-8859-5", 31 );			break;	/* kCFStringEncodingISOLatinCyrillic */
916
		case 518:	strncpy( buffer, "ISO-8859-6", 31 );			break;	/* kCFStringEncodingISOLatinArabic */
917
		case 519:	strncpy( buffer, "ISO-8859-7", 31 );			break;	/* kCFStringEncodingISOLatinGreek */
918
		case 520:	strncpy( buffer, "ISO-8859-8", 31 );			break;	/* kCFStringEncodingISOLatinHebrew */
919
		case 521:	strncpy( buffer, "ISO-8859-9", 31 );			break;	/* kCFStringEncodingISOLatin5 */
920
		case 522:	strncpy( buffer, "ISO-8859-10", 31 );			break;	/* kCFStringEncodingISOLatin6 */
921
		case 523:	strncpy( buffer, "ISO-8859-11", 31 );			break;	/* kCFStringEncodingISOLatinThai */
922
		case 525:	strncpy( buffer, "ISO-8859-13", 31 );			break;	/* kCFStringEncodingISOLatin7 */
923
		case 526:	strncpy( buffer, "ISO-8859-14", 31 );			break;	/* kCFStringEncodingISOLatin8 */
924
		case 527:	strncpy( buffer, "ISO-8859-15", 31 );			break;	/* kCFStringEncodingISOLatin9 */
925
		case 1024:	strncpy( buffer, "CP437", 31 );			break;	/* kCFStringEncodingDOSLatinUS */
926
		case 1029:	strncpy( buffer, "CP737", 31 );			break;	/* kCFStringEncodingDOSGreek */
927
		case 1030:	strncpy( buffer, "CP775", 31 );			break;	/* kCFStringEncodingDOSBalticRim */
928
		case 1040:	strncpy( buffer, "CP850", 31 );			break;	/* kCFStringEncodingDOSLatin1 */
929
		case 1042:	strncpy( buffer, "CP852", 31 );			break;	/* kCFStringEncodingDOSGreek1 */
930
		case 1044:	strncpy( buffer, "CP857", 31 );			break;	/* kCFStringEncodingDOSTurkish */
931
		case 1046:	strncpy( buffer, "CP861", 31 );			break;	/* kCFStringEncodingDOSIcelandic */
932
		case 1049:	strncpy( buffer, "cp864", 31 );			break;	/* kCFStringEncodingDOSArabic */
933
		case 1051:	strncpy( buffer, "CP866", 31 );			break;	/* kCFStringEncodingDOSRussian */
934
		case 1053:	strncpy( buffer, "CP874", 31 );			break;	/* kCFStringEncodingDOSThai */
935
		case 1056:	strncpy( buffer, "CP932", 31 );			break;	/* kCFStringEncodingDOSJapanese */
936
		case 1057:	strncpy( buffer, "CP936", 31 );			break;	/* kCFStringEncodingDOSChineseSimplif */
937
		case 1058:	strncpy( buffer, "CP949", 31 );			break;	/* kCFStringEncodingDOSKorean */
938
		case 1059:	strncpy( buffer, "CP950", 31 );			break;	/* kCFStringEncodingDOSChineseTrad */
939
		case 1280:	strncpy( buffer, "WINDOWS-1252", 31 );		break;	/* kCFStringEncodingWindowsLatin1 */
940
		case 1281:	strncpy( buffer, "WINDOWS-1250", 31 );		break;	/* kCFStringEncodingWindowsLatin2 */
941
		case 1282:	strncpy( buffer, "WINDOWS-1251", 31 );		break;	/* kCFStringEncodingWindowsCyrillic */
942
		case 1283:	strncpy( buffer, "WINDOWS-1253", 31 );		break;	/* kCFStringEncodingWindowsGreek */
943
		case 1284:	strncpy( buffer, "WINDOWS-1254", 31 );		break;	/* kCFStringEncodingWindowsLatin5 */
944
		case 1285:	strncpy( buffer, "WINDOWS-1255", 31 );		break;	/* kCFStringEncodingWindowsHebrew */
945
		case 1286:	strncpy( buffer, "WINDOWS-1256", 31 );		break;	/* kCFStringEncodingWindowsArabic */
946
		case 1287:	strncpy( buffer, "WINDOWS-1257", 31 );		break;	/* kCFStringEncodingWindowsBalticRim */
947
		case 1288:	strncpy( buffer, "WINDOWS-1258", 31 );		break;	/* kCFStringEncodingWindowsVietnamese */
948
		case 1536:	strncpy( buffer, "US-ASCII", 31 );			break;	/* kCFStringEncodingASCII */
949
		case 1570:	strncpy( buffer, "JIS_C6226-1983", 31 );	break;	/* kCFStringEncodingJIS_X0208_90 */
950
		case 1584:	strncpy( buffer, "csISO58GB231280", 31 );	break;	/* kCFStringEncodingGB_2312_80 */
951
		case 1585:	strncpy( buffer, "X-GBK", 31 );			break;	/* kCFStringEncodingGBK_95 */
952
		case 1600:	strncpy( buffer, "csKSC56011987", 31 );		break;	/* kCFStringEncodingKSC_5601_87 */
953
		case 2080:	strncpy( buffer, "ISO-2022-JP", 31 );		break;	/* kCFStringEncodingISO_2022_JP */
954
		case 2096:	strncpy( buffer, "ISO-2022-CN", 31 );		break;	/* kCFStringEncodingISO_2022_CN */
955
		case 2097:	strncpy( buffer, "ISO-2022-CN-EXT", 31 );	break;	/* kCFStringEncodingISO_2022_CN_EXT */
956
		case 2112:	strncpy( buffer, "ISO-2022-KR", 31 );		break;	/* kCFStringEncodingISO_2022_KR */
957
		case 2336:	strncpy( buffer, "EUC-JP", 31 );			break;	/* kCFStringEncodingEUC_JP */
958
		case 2352:	strncpy( buffer, "EUC-CN", 31 );			break;	/* kCFStringEncodingEUC_CN */
959
		case 2353:	strncpy( buffer, "EUC-TW", 31 );			break;	/* kCFStringEncodingEUC_TW */
960
		case 2368:	strncpy( buffer, "EUC-KR", 31 );			break;	/* kCFStringEncodingEUC_KR */
961
		case 2561:	strncpy( buffer, "SHIFT_JIS", 31 );		break;	/* kCFStringEncodingShiftJIS */
962
		case 2562:	strncpy( buffer, "KOI8-R", 31 );			break;	/* kCFStringEncodingKOI8_R */
963
		case 2563:	strncpy( buffer, "BIG5", 31 );			break;	/* kCFStringEncodingBig5 */
964
		case 2564:	strncpy( buffer, "X-MAC-ROMAN-LATIN1", 31 );	break;	/* kCFStringEncodingMacRomanLatin1 */
965
		case 2565:	strncpy( buffer, "HZ-GB-2312", 31 );		break;	/* kCFStringEncodingHZ_GB_2312 */
966
		case 2566:	strncpy( buffer, "Big5-HKSCS", 31 );		break;	/* kCFStringEncodingBig5_HKSCS_1999 */
967
		case 2817:	strncpy( buffer, "X-NEXTSTEP", 31 );		break;	/* kCFStringEncodingNextStepLatin */
968
		case 3074:	strncpy( buffer, "cp037", 31 );			break;	/* kCFStringEncodingEBCDIC_CP037 */
969
		default:		strncpy( buffer, "", 31 );				break;	/* Not listed */
970
	}
971
}
972
#endif	/* ifndef MACOSX */
973
653
974
654
#else /* ifdef LINUX || SOLARIS || MACOSX || NETBSD */
975
#else /* ifdef LINUX || SOLARIS || MACOSX || NETBSD */
655
976

Return to issue 7161