|
Packit |
b00eeb |
/* Copyright (C) 1999, 2001-2002 Free Software Foundation, Inc.
|
|
Packit |
b00eeb |
This file is part of the GNU C Library.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
The GNU C Library is free software; you can redistribute it and/or
|
|
Packit |
b00eeb |
modify it under the terms of the GNU Library General Public License as
|
|
Packit |
b00eeb |
published by the Free Software Foundation; either version 2 of the
|
|
Packit |
b00eeb |
License, or (at your option) any later version.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
The GNU C Library is distributed in the hope that it will be useful,
|
|
Packit |
b00eeb |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
b00eeb |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
b00eeb |
Library General Public License for more details.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
You should have received a copy of the GNU Library General Public
|
|
Packit |
b00eeb |
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
|
Packit |
b00eeb |
see <http://www.gnu.org/licenses/>. */
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
#ifdef HAVE_CONFIG_H
|
|
Packit |
b00eeb |
# include "config.h"
|
|
Packit |
b00eeb |
#endif
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
#include "egg-timegm.h"
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
#ifndef HAVE_TIMEGM
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
time_t
|
|
Packit |
b00eeb |
timegm(struct tm *t)
|
|
Packit |
b00eeb |
{
|
|
Packit |
b00eeb |
time_t tl, tb;
|
|
Packit |
b00eeb |
struct tm *tg;
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
tl = mktime (t);
|
|
Packit |
b00eeb |
if (tl == -1)
|
|
Packit |
b00eeb |
{
|
|
Packit |
b00eeb |
t->tm_hour--;
|
|
Packit |
b00eeb |
tl = mktime (t);
|
|
Packit |
b00eeb |
if (tl == -1)
|
|
Packit |
b00eeb |
return -1;
|
|
Packit |
b00eeb |
tl += 3600;
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
tg = gmtime (&tl;;
|
|
Packit |
b00eeb |
tg->tm_isdst = 0;
|
|
Packit |
b00eeb |
tb = mktime (tg);
|
|
Packit |
b00eeb |
if (tb == -1)
|
|
Packit |
b00eeb |
{
|
|
Packit |
b00eeb |
tg->tm_hour--;
|
|
Packit |
b00eeb |
tb = mktime (tg);
|
|
Packit |
b00eeb |
if (tb == -1)
|
|
Packit |
b00eeb |
return -1;
|
|
Packit |
b00eeb |
tb += 3600;
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
return (tl - (tb - tl));
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
#endif
|