summary refs log tree commit diff
path: root/pkgs/development/libraries/libical/respect-env-tzdir.patch
blob: 980a0d5c71ae59ae7312ef0a54b49010f0f75549 (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
30
diff --git a/src/libical/icaltz-util.c b/src/libical/icaltz-util.c
index fe984c9..22ba0a1 100644
--- a/src/libical/icaltz-util.c
+++ b/src/libical/icaltz-util.c
@@ -107,7 +107,7 @@ typedef struct
 	char	charcnt[4];			
 } tzinfo; 
 
-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]))
@@ -194,6 +194,16 @@ set_zonedir (void)
 	const char *fname = ZONES_TAB_SYSTEM_FILENAME;
 	unsigned 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)) {