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