--- 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);