1 /* Convert UTC calendar time to simple time. Like mktime but assumes UTC. 2 3 Copyright (C) 1994-2022 Free Software Foundation, Inc. 4 This file is part of the GNU C Library. 5 6 The GNU C Library is free software; you can redistribute it and/or 7 modify it under the terms of the GNU Lesser General Public 8 License as published by the Free Software Foundation; either 9 version 2.1 of the License, or (at your option) any later version. 10 11 The GNU C Library 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 GNU 14 Lesser General Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public 17 License along with the GNU C Library; if not, see 18 <https://www.gnu.org/licenses/>. */ 19 20 #ifndef _LIBC 21 # include <libc-config.h> 22 #endif 23 24 #include <time.h> 25 #include <errno.h> 26 27 #include "mktime-internal.h" 28 29 __time64_t __timegm64(struct tm * tmp)30__timegm64 (struct tm *tmp) 31 { 32 static mktime_offset_t gmtime_offset; 33 tmp->tm_isdst = 0; 34 return __mktime_internal (tmp, __gmtime64_r, &gmtime_offset); 35 } 36 37 #if defined _LIBC && __TIMESIZE != 64 38 libc_hidden_def(__timegm64)39libc_hidden_def (__timegm64) 40 41 time_t 42 timegm (struct tm *tmp) 43 { 44 struct tm tm = *tmp; 45 __time64_t t = __timegm64 (&tm); 46 if (in_time_t_range (t)) 47 { 48 *tmp = tm; 49 return t; 50 } 51 else 52 { 53 __set_errno (EOVERFLOW); 54 return -1; 55 } 56 } 57 58 #endif 59