lmonetary.c (74f2b97544e335c01509fe73ba5bfb12147299f2) | lmonetary.c (831e8f614c17f44fcf64bfafd036188c485a662a) |
---|---|
1/* 2 * Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 13 unchanged lines hidden (view full) --- 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 * $FreeBSD$ 27 */ 28 29#include <limits.h> | 1/* 2 * Copyright (c) 2000, 2001 Alexey Zelkin <phantom@FreeBSD.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 13 unchanged lines hidden (view full) --- 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 * $FreeBSD$ 27 */ 28 29#include <limits.h> |
30#include <stdlib.h> |
|
30#include "lmonetary.h" 31#include "ldpart.h" 32 33extern int __mlocale_changed; 34extern const char * __fix_locale_grouping_str(const char *); 35 36#define LCMONETARY_SIZE (sizeof(struct lc_monetary_T) / sizeof(char *)) 37 --- 17 unchanged lines hidden (view full) --- 55 numempty, /* p_sign_posn */ 56 numempty /* n_sign_posn */ 57}; 58 59static struct lc_monetary_T _monetary_locale; 60static int _monetary_using_locale; 61static char *_monetary_locale_buf; 62 | 31#include "lmonetary.h" 32#include "ldpart.h" 33 34extern int __mlocale_changed; 35extern const char * __fix_locale_grouping_str(const char *); 36 37#define LCMONETARY_SIZE (sizeof(struct lc_monetary_T) / sizeof(char *)) 38 --- 17 unchanged lines hidden (view full) --- 56 numempty, /* p_sign_posn */ 57 numempty /* n_sign_posn */ 58}; 59 60static struct lc_monetary_T _monetary_locale; 61static int _monetary_using_locale; 62static char *_monetary_locale_buf; 63 |
64static char 65cnv(const char *str) { 66 int i = strtol(str, NULL, 10); 67 if (i == -1) 68 i = CHAR_MAX; 69 return (char)i; 70} 71 |
|
63int 64__monetary_load_locale(const char *name) { 65 66 int ret; 67 __mlocale_changed = 1; 68 ret = __part_load_locale(name, &_monetary_using_locale, 69 _monetary_locale_buf, "LC_MONETARY", 70 LCMONETARY_SIZE, LCMONETARY_SIZE, 71 (const char **)&_monetary_locale); | 72int 73__monetary_load_locale(const char *name) { 74 75 int ret; 76 __mlocale_changed = 1; 77 ret = __part_load_locale(name, &_monetary_using_locale, 78 _monetary_locale_buf, "LC_MONETARY", 79 LCMONETARY_SIZE, LCMONETARY_SIZE, 80 (const char **)&_monetary_locale); |
72 if (ret == 0 && _monetary_using_locale) | 81 if (ret == 0 && _monetary_using_locale) { |
73 _monetary_locale.mon_grouping = 74 __fix_locale_grouping_str(_monetary_locale.mon_grouping); | 82 _monetary_locale.mon_grouping = 83 __fix_locale_grouping_str(_monetary_locale.mon_grouping); |
84 85#define M_ASSIGN_CHAR(NAME) (((char *)_monetary_locale.NAME)[0] = \ 86 cnv(_monetary_locale.NAME)) 87 88 M_ASSIGN_CHAR(int_frac_digits); 89 M_ASSIGN_CHAR(frac_digits); 90 M_ASSIGN_CHAR(p_cs_precedes); 91 M_ASSIGN_CHAR(p_sep_by_space); 92 M_ASSIGN_CHAR(n_cs_precedes); 93 M_ASSIGN_CHAR(n_sep_by_space); 94 M_ASSIGN_CHAR(p_sign_posn); 95 M_ASSIGN_CHAR(n_sign_posn); 96 } |
|
75 return ret; 76} 77 78struct lc_monetary_T * 79__get_current_monetary_locale(void) { 80 81 return (_monetary_using_locale 82 ? &_monetary_locale --- 5 unchanged lines hidden (view full) --- 88monetdebug() { 89printf( "int_curr_symbol = %s\n" 90 "currency_symbol = %s\n" 91 "mon_decimal_point = %s\n" 92 "mon_thousands_sep = %s\n" 93 "mon_grouping = %s\n" 94 "positive_sign = %s\n" 95 "negative_sign = %s\n" | 97 return ret; 98} 99 100struct lc_monetary_T * 101__get_current_monetary_locale(void) { 102 103 return (_monetary_using_locale 104 ? &_monetary_locale --- 5 unchanged lines hidden (view full) --- 110monetdebug() { 111printf( "int_curr_symbol = %s\n" 112 "currency_symbol = %s\n" 113 "mon_decimal_point = %s\n" 114 "mon_thousands_sep = %s\n" 115 "mon_grouping = %s\n" 116 "positive_sign = %s\n" 117 "negative_sign = %s\n" |
96 "int_frac_digits = %s\n" 97 "frac_digits = %s\n" 98 "p_cs_precedes = %s\n" 99 "p_sep_by_space = %s\n" 100 "n_cs_precedes = %s\n" 101 "n_sep_by_space = %s\n" 102 "p_sign_posn = %s\n" 103 "n_sign_posn = %s\n", | 118 "int_frac_digits = %d\n" 119 "frac_digits = %d\n" 120 "p_cs_precedes = %d\n" 121 "p_sep_by_space = %d\n" 122 "n_cs_precedes = %d\n" 123 "n_sep_by_space = %d\n" 124 "p_sign_posn = %d\n" 125 "n_sign_posn = %d\n", |
104 _monetary_locale.int_curr_symbol, 105 _monetary_locale.currency_symbol, 106 _monetary_locale.mon_decimal_point, 107 _monetary_locale.mon_thousands_sep, 108 _monetary_locale.mon_grouping, 109 _monetary_locale.positive_sign, 110 _monetary_locale.negative_sign, | 126 _monetary_locale.int_curr_symbol, 127 _monetary_locale.currency_symbol, 128 _monetary_locale.mon_decimal_point, 129 _monetary_locale.mon_thousands_sep, 130 _monetary_locale.mon_grouping, 131 _monetary_locale.positive_sign, 132 _monetary_locale.negative_sign, |
111 _monetary_locale.int_frac_digits, 112 _monetary_locale.frac_digits, 113 _monetary_locale.p_cs_precedes, 114 _monetary_locale.p_sep_by_space, 115 _monetary_locale.n_cs_precedes, 116 _monetary_locale.n_sep_by_space, 117 _monetary_locale.p_sign_posn, 118 _monetary_locale.n_sign_posn | 133 _monetary_locale.int_frac_digits[0], 134 _monetary_locale.frac_digits[0], 135 _monetary_locale.p_cs_precedes[0], 136 _monetary_locale.p_sep_by_space[0], 137 _monetary_locale.n_cs_precedes[0], 138 _monetary_locale.n_sep_by_space[0], 139 _monetary_locale.p_sign_posn[0], 140 _monetary_locale.n_sign_posn[0] |
119); 120} 121#endif /* LOCALE_DEBUG */ | 141); 142} 143#endif /* LOCALE_DEBUG */ |