When I set locale (specifically LC_TIME) to cs_CZ, run Orage and and view some selected date, Orage aborts and following error shows up in terminal: ** ERROR **: Orage: orage_i18_date_to_tm_date wrong format (10.12.2008) aborting... Aborted gdb backtrace: #0 0x00007fc5a8c593c5 in raise () from /lib/libc.so.6 #1 0x00007fc5a8c5a73e in abort () from /lib/libc.so.6 #2 0x00007fc5a8fa4eb5 in g_logv () from /usr/lib/libglib-2.0.so.0 #3 0x00007fc5a8fa4f38 in g_log () from /usr/lib/libglib-2.0.so.0 #4 0x00000000004196ba in orage_i18_date_to_tm_date (i18_date=0x9b1f70 "10.12.2008") at functions.c:319 #5 0x0000000000417708 in refresh_el_win (el=0x980120) at event-list.c:575 #6 0x0000000000418a09 in create_el_win (start_date=0x0) at event-list.c:1346 #7 0x00007fc5a9249955 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0 #8 0x00007fc5a9257e36 in ?? () from /usr/lib/libgobject-2.0.so.0 #9 0x00007fc5a92590b3 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0 #10 0x00007fc5a925927e in g_signal_emit () from /usr/lib/libgobject-2.0.so.0 #11 0x00007fc5aaf13f43 in ?? () from /usr/lib/libgtk-x11-2.0.so.0 #12 0x00007fc5aafc14c5 in ?? () from /usr/lib/libgtk-x11-2.0.so.0 #13 0x00007fc5a9249955 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0 #14 0x00007fc5a9258227 in ?? () from /usr/lib/libgobject-2.0.so.0 #15 0x00007fc5a9258e81 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0 #16 0x00007fc5a925927e in g_signal_emit () from /usr/lib/libgobject-2.0.so.0 #17 0x00007fc5ab0b2a2d in ?? () from /usr/lib/libgtk-x11-2.0.so.0 #18 0x00007fc5aafbc22d in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0 #19 0x00007fc5aafbcf8a in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0 #20 0x00007fc5aaa3236e in ?? () from /usr/lib/libgdk-x11-2.0.so.0 #21 0x00007fc5a8f9cbbf in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #22 0x00007fc5a8f9fadd in ?? () from /usr/lib/libglib-2.0.so.0 #23 0x00007fc5a8f9fe2d in g_main_loop_run () from /usr/lib/libglib-2.0.so.0 #24 0x00007fc5aafbd2ff in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0 #25 0x0000000000429082 in main (argc=1, argv=0x7fffb38752c8) at main.c:490 Output of `locale': LANG=en_US.UTF-8 LC_CTYPE=cs_CZ.UTF-8 LC_NUMERIC=cs_CZ.UTF-8 LC_TIME=cs_CZ.UTF-8 LC_COLLATE=cs_CZ.UTF-8 LC_MONETARY=cs_CZ.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=cs_CZ.UTF-8 LC_NAME=cs_CZ.UTF-8 LC_ADDRESS=cs_CZ.UTF-8 LC_TELEPHONE=cs_CZ.UTF-8 LC_MEASUREMENT=cs_CZ.UTF-8 LC_IDENTIFICATION=cs_CZ.UTF-8 LC_ALL= Version of glibc: 2.6.1 When I set LC_TIME to some other locale (C, en_US), Orage works properly. Might be, that this is a bug in glibc locale handling..
Is it the same if you set export LANG=cs_CZ.UTF-8 also? Why do you have that differently than the other settings? What do you get if you do: date +%x Can you compile and run if I create you a small c program to test the language settings?
I've tried this: hrubi@janhruban ~ $ export LC_ALL=cs_CZ.UTF-8 LANG=cs_CZ.UTF-8 hrubi@janhruban ~ $ locale LANG=cs_CZ.UTF-8 LC_CTYPE="cs_CZ.UTF-8" LC_NUMERIC="cs_CZ.UTF-8" LC_TIME="cs_CZ.UTF-8" LC_COLLATE="cs_CZ.UTF-8" LC_MONETARY="cs_CZ.UTF-8" LC_MESSAGES="cs_CZ.UTF-8" LC_PAPER="cs_CZ.UTF-8" LC_NAME="cs_CZ.UTF-8" LC_ADDRESS="cs_CZ.UTF-8" LC_TELEPHONE="cs_CZ.UTF-8" LC_MEASUREMENT="cs_CZ.UTF-8" LC_IDENTIFICATION="cs_CZ.UTF-8" LC_ALL=cs_CZ.UTF-8 hrubi@janhruban ~ $ orage ** (orage:17691): WARNING **: Failed to connect to the D-BUS session bus: Failed to connect to socket /tmp/dbus-LamykVLx6N: Spojení odmítnuto ** (orage:17691): WARNING **: Default timezone set to floating. Do not use timezones when setting appointments, it does not make sense without proper local timezone. ** (orage:17691): CRITICAL **: convert_to_timezone: builtin timezone Central Europe Standard Time not found, conversion failed. ** (orage:17691): CRITICAL **: convert_to_timezone: builtin timezone Central Europe Standard Time not found, conversion failed. ** Message: Orage **: Sestavit seznam výstrah: Přidáno 1 výstrah. Zpracováno 3 výstrah. ** Message: Orage **: Bylo nalezeno 3 výstrah, z nichž 1 je aktivních. (Bylo prohledáno 104826 opakujících se výstrah.) ** ERROR **: Orage: orage_i18_date_to_tm_date wrong format (10.12.2008) aborting... Neúspěšně ukončen (SIGABRT) So the result is the same. (If you wonder about custom locale settings, I just don't like czech speaking system, so LANG and LC_MESSAGES are set to en_US, but I want time, currentcy etc. to be in czech) date +%x gives: 10.12.2008 I've tried custom program derived from orage piece of code: #include <stdio.h> #define __USE_XOPEN #include <time.h> #include <locale.h> int main(void) { //setlocale(LC_TIME, "sk_SK.UTF-8"); setlocale(LC_TIME, "cs_CZ.UTF-8"); struct tm tm_date = {0,0,0,0,0,0,0,0,0}; const char *i18_date = "10.12.2008"; if (strptime(i18_date, "%x", &tm_date) == NULL) { printf("error\n"); return 1; } else { printf("success\n"); return 0; } } It prints "error" cs_CZ.UTF-8 LC_CTIME. However if I comment the czech locale settings and supply it with slovak one (which date +%x is the same as czech) it prints out success. So probably my thoughts about buggy glibc were right? I'd be glad to further cooperate..
Yes, this is clearly glibc problem. I run your test program and it works in my environment with your locale. I tested in Ubuntu 8.04, which has glibc 2.7. Thanks for your effort, but I can not fix this, try to upgrade your system.
glibc issue