Add ticketlife, renewlife.
[shishi.git] / lib / gztime.c
blob308375cc8a9cfd1051bd705affeea5d7c14f01d7
1 /* gztime.c convert into GeneralizedTime
2 * Copyright (C) 2002, 2003 Simon Josefsson
4 * This file is part of Shishi.
6 * Shishi is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * Shishi is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with Shishi; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #include "internal.h"
24 const char *
25 shishi_generalize_time (Shishi * handle, time_t t)
27 struct tm *tm;
29 tm = gmtime (&t);
30 strftime (handle->gztime_buf, sizeof (handle->gztime_buf),
31 "%Y%m%d%H%M%SZ", tm);
33 return handle->gztime_buf;
36 static time_t
37 my_timegm (struct tm *tm)
39 time_t ret;
40 char *tz;
42 tz = getenv ("TZ");
43 setenv ("TZ", "UTC", 1);
44 tzset ();
45 ret = mktime (tm);
46 if (tz)
47 setenv ("TZ", tz, 1);
48 else
49 unsetenv ("TZ");
50 tzset ();
51 return ret;
54 time_t
55 shishi_generalize_ctime (Shishi * handle, const char *t)
57 struct tm tm;
58 time_t ct;
60 memset (&tm, 0, sizeof (tm));
62 sscanf (t, "%4u%2u%2u%2u%2u%2uZ",
63 &tm.tm_year, &tm.tm_mon, &tm.tm_mday,
64 &tm.tm_hour, &tm.tm_min, &tm.tm_sec);
65 tm.tm_year -= 1900;
66 tm.tm_mon--;
68 ct = my_timegm (&tm);
70 return ct;