about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/libical/respect-env-tzdir.patch
blob: 59d23e490e5a07218f206b59eabe6bb85541aa19 (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
@@ -94,9 +94,9 @@
 static const char *zdir = NULL;
 
 static const char *search_paths[] = {
+    "/etc/zoneinfo",
     "/usr/share/zoneinfo",
     "/usr/lib/zoneinfo",
-    "/etc/zoneinfo",
     "/usr/share/lib/zoneinfo"
 };
 
@@ -178,6 +178,15 @@
     const char *fname = ZONES_TAB_SYSTEM_FILENAME;
     size_t i, num_search_paths;
 
+   const char *env_tzdir = 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;
+       }
+   }
+
     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);