1 | // ================================================================ // |
---|
2 | // // |
---|
3 | // File : arb_main.h // |
---|
4 | // Purpose : code executed at start of main() // |
---|
5 | // // |
---|
6 | // Coded by Ralf Westram (coder@reallysoft.de) in February 2014 // |
---|
7 | // http://www.arb-home.de/ // |
---|
8 | // // |
---|
9 | // ================================================================ // |
---|
10 | |
---|
11 | #ifndef ARB_MAIN_H |
---|
12 | #define ARB_MAIN_H |
---|
13 | |
---|
14 | #include <locale.h> |
---|
15 | |
---|
16 | static void start_of_main() { |
---|
17 | // ARB code depends on locale settings. |
---|
18 | // To avoid problems we setlocale here! |
---|
19 | |
---|
20 | // const char *USER_LOCALE = ""; // -> use user-defined locale |
---|
21 | // const char *USER_LOCALE = "de_DE.UTF-8"; // use german locale |
---|
22 | |
---|
23 | // -------------------------------------------------------------------------------- |
---|
24 | // Fails-counts mentioned below were determined under ubuntu 13.10/64bit. |
---|
25 | // Make sure only one of the following sections is enabled! |
---|
26 | |
---|
27 | #if 1 |
---|
28 | // enabling this section does not fail any unit test |
---|
29 | setlocale(LC_ALL, "C"); |
---|
30 | #endif |
---|
31 | |
---|
32 | #if 0 |
---|
33 | // enabling this section does not fail any unit test |
---|
34 | // (but this might cause problems with databases edited using different locales) |
---|
35 | setlocale(LC_ALL, USER_LOCALE); |
---|
36 | setlocale(LC_NUMERIC, "C"); |
---|
37 | #endif |
---|
38 | |
---|
39 | #if 0 |
---|
40 | // enabling this section does not fail any unit test |
---|
41 | setlocale(LC_ALL, "C"); |
---|
42 | setlocale(LC_COLLATE, USER_LOCALE); |
---|
43 | setlocale(LC_CTYPE, USER_LOCALE); |
---|
44 | setlocale(LC_MESSAGES, USER_LOCALE); |
---|
45 | setlocale(LC_MONETARY, USER_LOCALE); |
---|
46 | setlocale(LC_TIME, USER_LOCALE); |
---|
47 | #endif |
---|
48 | |
---|
49 | |
---|
50 | #if 0 |
---|
51 | // enabling this section fails 57 unit tests (for german USER_LOCALE) |
---|
52 | setlocale(LC_ALL, USER_LOCALE); |
---|
53 | #endif |
---|
54 | |
---|
55 | #if 0 |
---|
56 | // enabling this section fails 57 unit tests (for german USER_LOCALE) |
---|
57 | setlocale(LC_COLLATE, "C"); |
---|
58 | setlocale(LC_CTYPE, "C"); |
---|
59 | setlocale(LC_MESSAGES, "C"); |
---|
60 | setlocale(LC_MONETARY, "C"); |
---|
61 | setlocale(LC_NUMERIC, USER_LOCALE); |
---|
62 | setlocale(LC_TIME, "C"); |
---|
63 | #endif |
---|
64 | |
---|
65 | #if 0 |
---|
66 | // enabling this section fails 57 unit tests (for german USER_LOCALE) |
---|
67 | // (fails 57 unit tests under ubuntu 13.10, centos 5 and 6) |
---|
68 | setlocale(LC_ALL, "C"); |
---|
69 | setlocale(LC_NUMERIC, USER_LOCALE); |
---|
70 | #endif |
---|
71 | } |
---|
72 | |
---|
73 | #else |
---|
74 | #error arb_main.h included twice |
---|
75 | #endif // ARB_MAIN_H |
---|