annotate lib/timegm.c @ 10622:ac6f431cc95d

New module 'fclose'.
author Bruno Haible <bruno@clisp.org>
date Sat, 11 Oct 2008 14:18:29 +0200
parents b31580167c2b
children 465038ef6bc4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4621
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
1 /* Convert UTC calendar time to simple time. Like mktime but assumes UTC.
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
2
8146
b31580167c2b New module 'time', so that apps can include <time.h> as per
Paul Eggert <eggert@cs.ucla.edu>
parents: 7302
diff changeset
3 Copyright (C) 1994, 1997, 2003, 2004, 2006, 2007 Free Software
7302
8a1a9361108c * _fpending.c: Include <config.h> unconditionally, since we no
Paul Eggert <eggert@cs.ucla.edu>
parents: 5848
diff changeset
4 Foundation, Inc. This file is part of the GNU C Library.
4616
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
5
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
6 This program is free software; you can redistribute it and/or modify
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
9 any later version.
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
10
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
11 This program is distributed in the hope that it will be useful,
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
14 GNU General Public License for more details.
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
15
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
17 along with this program; if not, write to the Free Software Foundation,
5848
a48fb0e98c8c *** empty log message ***
Paul Eggert <eggert@cs.ucla.edu>
parents: 4931
diff changeset
18 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
4616
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
19
8146
b31580167c2b New module 'time', so that apps can include <time.h> as per
Paul Eggert <eggert@cs.ucla.edu>
parents: 7302
diff changeset
20 #ifndef _LIBC
7302
8a1a9361108c * _fpending.c: Include <config.h> unconditionally, since we no
Paul Eggert <eggert@cs.ucla.edu>
parents: 5848
diff changeset
21 # include <config.h>
8146
b31580167c2b New module 'time', so that apps can include <time.h> as per
Paul Eggert <eggert@cs.ucla.edu>
parents: 7302
diff changeset
22 #endif
b31580167c2b New module 'time', so that apps can include <time.h> as per
Paul Eggert <eggert@cs.ucla.edu>
parents: 7302
diff changeset
23
b31580167c2b New module 'time', so that apps can include <time.h> as per
Paul Eggert <eggert@cs.ucla.edu>
parents: 7302
diff changeset
24 #include <time.h>
b31580167c2b New module 'time', so that apps can include <time.h> as per
Paul Eggert <eggert@cs.ucla.edu>
parents: 7302
diff changeset
25
b31580167c2b New module 'time', so that apps can include <time.h> as per
Paul Eggert <eggert@cs.ucla.edu>
parents: 7302
diff changeset
26 #ifndef _LIBC
4621
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
27 # undef __gmtime_r
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
28 # define __gmtime_r gmtime_r
4931
3743557233a8 (__mktime_internal) [!_LIBC]: Define to mktime_internal
Jim Meyering <jim@meyering.net>
parents: 4621
diff changeset
29 # define __mktime_internal mktime_internal
4621
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
30 time_t __mktime_internal (struct tm *,
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
31 struct tm * (*) (time_t const *, struct tm *),
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
32 time_t *);
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
33 #endif
4616
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
34
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
35 time_t
4621
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
36 timegm (struct tm *tmp)
4616
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
37 {
4621
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
38 static time_t gmtime_offset;
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
39 tmp->tm_isdst = 0;
3d28ad4e18e2 Add time_r module. Change timegm, mktime, and strftime to use localtime_r
Paul Eggert <eggert@cs.ucla.edu>
parents: 4616
diff changeset
40 return __mktime_internal (tmp, __gmtime_r, &gmtime_offset);
4616
40e97ca1f46c New module 'timegm'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
41 }