ARB
arb_main.h
Go to the documentation of this file.
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
static void start_of_main()
Definition: arb_main.h:16