| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- {
- This file is part of the Free Pascal run time library.
- Copyright (c) 2008 by the Free Pascal development team.
- Init rtl formating variables based on BSD like libc locales
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- { Initial FreeBSD Implementation by Marco van de Voort.
- Crosschecked with OS X 10.4/ppc headers.
- To some symbols leading underscores were added. If these values are
- ever exposed in an interface this has to be reevaluated.
- OpenBSD's langinfo came from NetBSD which is different to FreeBSD. CODESET is
- at the end, shifting the older constants one up, the ERA block
- is missing and the order after RADIXCHAR is different, first -EXPR then -STR on
- FreeBSD and -EXPR paired with corresponding -STR on Open/NetBSD
- }
- {$IFDEF FPC}
- {$PACKRECORDS C}
- {$ENDIF}
- __LC_ALL = 0;
- __LC_COLLATE = 1;
- __LC_CTYPE = 2;
- __LC_MONETARY = 3;
- __LC_NUMERIC = 4;
- __LC_TIME = 5;
- __LC_MESSAGES = 6;
- _LC_LAST = 7; { marks end }
- Type
- lconv = record
- decimal_point : PAnsiChar;
- thousands_sep : PAnsiChar;
- grouping : PAnsiChar;
- int_curr_symbol : PAnsiChar;
- currency_symbol : PAnsiChar;
- mon_decimal_point : PAnsiChar;
- mon_thousands_sep : PAnsiChar;
- mon_grouping : PAnsiChar;
- positive_sign : PAnsiChar;
- negative_sign : PAnsiChar;
- int_frac_digits : AnsiChar;
- frac_digits : AnsiChar;
- p_cs_precedes : AnsiChar;
- p_sep_by_space : AnsiChar;
- n_cs_precedes : AnsiChar;
- n_sep_by_space : AnsiChar;
- p_sign_posn : AnsiChar;
- n_sign_posn : AnsiChar;
- int_p_cs_precedes : AnsiChar;
- int_n_cs_precedes : AnsiChar;
- int_p_sep_by_space: AnsiChar;
- int_n_sep_by_space: AnsiChar;
- int_p_sign_posn : AnsiChar;
- int_n_sign_posn : AnsiChar;
- end;
- Tlconv = lconv;
- plconv = ^lconv;
- Const
- {$if defined(openbsd) or defined(netbsd)}
- D_T_FIRST = 0;
- {$else}
- // FreeBSD and Mac OS X?
- D_T_FIRST = 1;
- CODESET = 0; { codeset name }
- {$endif}
- D_T_FMT = D_T_FIRST; { string for formatting date and time }
- D_FMT = D_T_FIRST+1; { date format string }
- T_FMT = D_T_FIRST+2; { time format string }
- T_FMT_AMPM = D_T_FIRST+3; { a.m. or p.m. time formatting string }
- AM_STR = D_T_FIRST+4; { Ante Meridian affix }
- PM_STR = D_T_FIRST+5; { Post Meridian affix }
- { week day names }
- DAY_1 = PM_STR+1;
- DAY_2 = DAY_1+1;
- DAY_3 = DAY_1+2;
- DAY_4 = DAY_1+3;
- DAY_5 = DAY_1+4;
- DAY_6 = DAY_1+5;
- DAY_7 = DAY_1+6;
- { abbreviated week day names }
- ABDAY_1 = DAY_7+1;
- ABDAY_2 = ABDAY_1+1;
- ABDAY_3 = ABDAY_1+2;
- ABDAY_4 = ABDAY_1+3;
- ABDAY_5 = ABDAY_1+4;
- ABDAY_6 = ABDAY_1+5;
- ABDAY_7 = ABDAY_1+6;
- { month names }
- MON_1 = ABDAY_7+1;
- MON_2 = MON_1+1;
- MON_3 = MON_1+2;
- MON_4 = MON_1+3;
- MON_5 = MON_1+4;
- MON_6 = MON_1+5;
- MON_7 = MON_1+6;
- MON_8 = MON_1+7;
- MON_9 = MON_1+8;
- MON_10 = MON_1+9;
- MON_11 = MON_1+10;
- MON_12 = MON_1+11;
- { abbreviated month names }
- ABMON_1 = MON_12+1;
- ABMON_2 = ABMON_1+1;
- ABMON_3 = ABMON_1+2;
- ABMON_4 = ABMON_1+3;
- ABMON_5 = ABMON_1+4;
- ABMON_6 = ABMON_1+5;
- ABMON_7 = ABMON_1+6;
- ABMON_8 = ABMON_1+7;
- ABMON_9 = ABMON_1+8;
- ABMON_10 = ABMON_1+9;
- ABMON_11 = ABMON_1+10;
- ABMON_12 = ABMON_1+11;
- {$if defined(openbsd) or defined(netbsd)}
- RADIXCHAR = ABMON_1+12; { Radix AnsiChar}
- THOUSEP = RADIXCHAR+1; { separator for thousands }
- YESSTR = RADIXCHAR+2; { affirmative response for yes/no queries }
- YESEXPR = RADIXCHAR+3; { affirmative response expression }
- NOSTR = RADIXCHAR+4; { negative response for yes/no queries }
- NOEXPR = RADIXCHAR+5; { negative response expression }
- CRNCYSTR = RADIXCHAR+6; { currency symbol }
- {$else}
- ERA = ABMON_12+1; { era description segments }
- ERA_D_FMT = ERA+1; { era date format string }
- ERA_D_T_FMT = ERA+2; { era date and time format string }
- ERA_T_FMT = ERA+3; { era time format string }
- ALT_DIGITS = ERA+4; { alternative symbols for digits }
- RADIXCHAR = ERA+5; { radix AnsiChar }
- THOUSEP = RADIXCHAR+1; { separator for thousands }
- YESEXPR = RADIXCHAR+2; { affirmative response expression }
- NOEXPR = RADIXCHAR+3; { negative response expression }
- YESSTR = RADIXCHAR+4; { affirmative response for yes/no queries }
- NOSTR = RADIXCHAR+5; { negative response for yes/no queries }
- CRNCYSTR = RADIXCHAR+6; { currency symbol }
- {$endif}
- {$if defined(openbsd) or defined(netbsd)}
- CODESET = 51;
- {$else}
- D_MD_ORDER = 57; { month/day order (local extension) }
- {$endif}
- function localeconv:plconv; cdecl; external clib name 'localeconv';
|