diff options
author | Yury G. Kudryashov <urkud.urkud@gmail.com> | 2012-08-08 13:10:36 +0400 |
---|---|---|
committer | Yury G. Kudryashov <urkud.urkud@gmail.com> | 2012-08-26 22:05:19 +0400 |
commit | c03efbd8f9201c6c852b5f60016700ebdacea976 (patch) | |
tree | c18ab8825421fbf30d8ff491673d50ee2d16cf05 /pkgs/development/libraries/libical/respect-env-tzdir.patch | |
parent | 84e1da4b09e2332447e5a2d9fc4e45b2499d7cc0 (diff) |
Fix libical
Libical searched zoneinfo in /usr/share/zoneinfo, and failed to find it. This leads to, e.g., random Kontact freezes.
Diffstat (limited to 'pkgs/development/libraries/libical/respect-env-tzdir.patch')
-rw-r--r-- | pkgs/development/libraries/libical/respect-env-tzdir.patch | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/pkgs/development/libraries/libical/respect-env-tzdir.patch b/pkgs/development/libraries/libical/respect-env-tzdir.patch new file mode 100644 index 0000000000000..12da8d41c7b58 --- /dev/null +++ b/pkgs/development/libraries/libical/respect-env-tzdir.patch @@ -0,0 +1,32 @@ +* Remove /usr/*/zoneinfo from the default search path +* Respect $TZDIR +diff --git a/src/libical/icaltz-util.c b/src/libical/icaltz-util.c +index adf7598..d2fd5c8 100644 +--- a/src/libical/icaltz-util.c ++++ b/src/libical/icaltz-util.c +@@ -108,7 +108,7 @@ typedef struct + + static int r_pos [] = {1, 2, 3, -2, -1}; + +-static char *search_paths [] = {"/usr/share/zoneinfo","/usr/lib/zoneinfo","/etc/zoneinfo","/usr/share/lib/zoneinfo"}; ++static char *search_paths [] = {"/etc/zoneinfo"}; + static char *zdir = NULL; + + #define NUM_SEARCH_PATHS (sizeof (search_paths)/ sizeof (search_paths [0])) +@@ -195,6 +195,16 @@ set_zonedir (void) + const char *fname = ZONES_TAB_SYSTEM_FILENAME; + int i; + ++ const char *env_tzdir = strdup (getenv ("TZDIR")); ++ if (env_tzdir) { ++ sprintf (file_path, "%s/%s", env_tzdir, fname); ++ if (!access (file_path, F_OK|R_OK)) { ++ zdir = env_tzdir; ++ return; ++ } ++ free (env_tzdir); ++ } ++ + for (i = 0;i < NUM_SEARCH_PATHS; i++) { + sprintf (file_path, "%s/%s", search_paths [i], fname); + if (!access (file_path, F_OK|R_OK)) { |