summary refs log tree commit diff
path: root/pkgs/development/libraries/libical/respect-env-tzdir.patch
blob: 715ba1fa8426c2e866e906b0c14d0f966c6232de (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
--- a/src/libical/icaltz-util.c
+++ b/src/libical/icaltz-util.c
@@ -96,9 +96,9 @@ typedef struct
 static char *zdir = NULL;
 
 static char *search_paths[] = {
+    "/etc/zoneinfo",
     "/usr/share/zoneinfo",
     "/usr/lib/zoneinfo",
-    "/etc/zoneinfo",
     "/usr/share/lib/zoneinfo"
 };
 
@@ -179,6 +179,15 @@ static void set_zonedir(void)
     const char *fname = ZONES_TAB_SYSTEM_FILENAME;
     size_t i, num_search_paths;
 
+   const char *env_tzdir = getenv ("TZDIR");
+   if (env_tzdir) {
+       snprintf(file_path, MAXPATHLEN, "%s/%s", env_tzdir, fname);
+       if (!access (file_path, F_OK|R_OK)) {
+           zdir = env_tzdir;
+           return;
+       }
+   }
+
     num_search_paths = sizeof(search_paths) / sizeof(search_paths[0]);
     for (i = 0; i < num_search_paths; i++) {
         snprintf(file_path, MAXPATHLEN, "%s/%s", search_paths[i], fname);