]> cloudbase.mooo.com Git - z180-stamp.git/blame - time/mktime.c
command printenv: new option -s: Print env variables in setenv commands.
[z180-stamp.git] / time / mktime.c
CommitLineData
e63b2f75
L
1/*
2 * (C)2012 Michael Duane Rice All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 *
8 * Redistributions of source code must retain the above copyright notice, this
9 * list of conditions and the following disclaimer. Redistributions in binary
10 * form must reproduce the above copyright notice, this list of conditions
11 * and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution. Neither the name of the copyright holders
13 * nor the names of contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/* $Id: mktime.c 2318 2013-03-30 11:59:28Z swfltek $ */
30
31/*
32 Standard mktime(). The provided broken down Local 'calendar' time is converted into
33 a binary time stamp. The process is then reversed to 'normalize' timeptr.
34*/
35
36#include <time.h>
37
38extern long __utc_offset;
39
40extern int (*__dst_ptr) (const time_t *, int32_t *);
41
42time_t
43mktime(struct tm * timeptr)
44{
45 time_t ret;
46
47 ret = mk_gmtime(timeptr);
48
49 if (timeptr->tm_isdst < 0) {
50 if (__dst_ptr)
51 timeptr->tm_isdst = __dst_ptr(&ret, &__utc_offset);
52 }
53 if (timeptr->tm_isdst > 0)
54 ret -= timeptr->tm_isdst;
55
56 ret -= __utc_offset;
57
58 localtime_r(&ret, timeptr);
59
60 return ret;
61}