From 4b6d95bb6f8b94cdbb23538bbca0abc2f650ac57 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Thu, 1 Apr 2010 10:24:32 +0000 Subject: [PATCH] Restore TZ env variable after using it. --- org.glite.lbjp-common.db/src/db.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/org.glite.lbjp-common.db/src/db.c b/org.glite.lbjp-common.db/src/db.c index f4a79f0..c574c7b 100644 --- a/org.glite.lbjp-common.db/src/db.c +++ b/org.glite.lbjp-common.db/src/db.c @@ -134,25 +134,36 @@ void glite_lbu_TimestampToStr(double t, char **str) { time_t glite_lbu_StrToTime(const char *str) { struct tm tm; + char *tz; + time_t t; memset(&tm,0,sizeof(tm)); - putenv("TZ=UTC"); tzset(); + tz = getenv("TZ"); + setenv("TZ", "UTC", 1); + tzset(); + sscanf(str,"%4d-%02d-%02d %02d:%02d:%02d", &tm.tm_year,&tm.tm_mon,&tm.tm_mday, &tm.tm_hour,&tm.tm_min,&tm.tm_sec); tm.tm_year -= 1900; tm.tm_mon--; + t = mktime(&tm); + + if (tz) setenv("TZ", tz, 1); + else unsetenv("TZ"); - return mktime(&tm); + return t; } double glite_lbu_StrToTimestamp(const char *str) { struct tm tm; - double sec; + double sec, t; + char *tz; memset(&tm,0,sizeof(tm)); - putenv("TZ=UTC"); tzset(); + tz = getenv("TZ"); + setenv("TZ", "UTC", 1); sscanf(str,"%4d-%02d-%02d %02d:%02d:%lf", &tm.tm_year,&tm.tm_mon,&tm.tm_mday, &tm.tm_hour,&tm.tm_min,&sec); @@ -160,7 +171,12 @@ double glite_lbu_StrToTimestamp(const char *str) { tm.tm_mon--; tm.tm_sec = sec; - return (sec - tm.tm_sec) + mktime(&tm); + t = (sec - tm.tm_sec) + mktime(&tm); + + if (tz) setenv("TZ", tz, 1); + else unsetenv("TZ"); + + return t; } -- 1.8.2.3