1 /* Reentrant time functions like localtime_r. 2 3 Copyright (C) 2003, 2006-2007, 2010-2023 Free Software Foundation, 4 Inc. 5 6 This file is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Lesser General Public License as 8 published by the Free Software Foundation; either version 2.1 of the 9 License, or (at your option) any later version. 10 11 This file 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 Lesser General Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public License 17 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 18 19 /* Written by Paul Eggert. */ 20 21 #include <config.h> 22 23 #include <time.h> 24 25 static struct tm * 26 copy_tm_result (struct tm *dest, struct tm const *src) 27 { 28 if (! src) 29 return 0; 30 *dest = *src; 31 return dest; 32 } 33 34 35 struct tm * 36 gmtime_r (time_t const * restrict t, struct tm * restrict tp) 37 { 38 return copy_tm_result (tp, gmtime (t)); 39 } 40 41 struct tm * 42 localtime_r (time_t const * restrict t, struct tm * restrict tp) 43 { 44 return copy_tm_result (tp, localtime (t)); 45 }