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 |
|