From 314348cafe721723a470b06b2bba341650be7e34 Mon Sep 17 00:00:00 2001 From: Marco Casaroli Date: Thu, 8 Oct 2026 22:01:33 +0200 Subject: [PATCH] libs/libc/time: Add tzset() for builds without time zones. POSIX requires tzset(), but NuttX declared and defined it only with CONFIG_LIBC_LOCALTIME, so programs that call it do not build without that option. Without CONFIG_LIBC_LOCALTIME there are no time zones and local time is UTC, so tzset() has nothing to do. Declare tzset() always, and add an empty one for builds without CONFIG_LIBC_LOCALTIME. Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: Marco Casaroli --- include/time.h | 2 -- libs/libc/time/CMakeLists.txt | 2 +- libs/libc/time/Make.defs | 2 +- libs/libc/time/lib_tzset.c | 46 +++++++++++++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 libs/libc/time/lib_tzset.c diff --git a/include/time.h b/include/time.h index 19e03bec5b6..0ff75587ed5 100644 --- a/include/time.h +++ b/include/time.h @@ -237,9 +237,7 @@ int clock_nanosleep(clockid_t clockid, int flags, FAR struct timespec *rmtp); int nanosleep(FAR const struct timespec *rqtp, FAR struct timespec *rmtp); -#ifdef CONFIG_LIBC_LOCALTIME void tzset(void); -#endif #undef EXTERN #if defined(__cplusplus) diff --git a/libs/libc/time/CMakeLists.txt b/libs/libc/time/CMakeLists.txt index cd577ece293..d7807de764f 100644 --- a/libs/libc/time/CMakeLists.txt +++ b/libs/libc/time/CMakeLists.txt @@ -41,7 +41,7 @@ set(SRCS if(CONFIG_LIBC_LOCALTIME) list(APPEND SRCS lib_localtime.c) else() - list(APPEND SRCS lib_timegm.c lib_gmtime.c lib_gmtimer.c) + list(APPEND SRCS lib_timegm.c lib_gmtime.c lib_gmtimer.c lib_tzset.c) endif() if(CONFIG_ALLOW_MIT_COMPONENTS) diff --git a/libs/libc/time/Make.defs b/libs/libc/time/Make.defs index 22a0856da28..71883b25aa5 100644 --- a/libs/libc/time/Make.defs +++ b/libs/libc/time/Make.defs @@ -31,7 +31,7 @@ CSRCS += lib_gethrtime.c ifdef CONFIG_LIBC_LOCALTIME CSRCS += lib_localtime.c else -CSRCS += lib_timegm.c lib_gmtime.c lib_gmtimer.c +CSRCS += lib_timegm.c lib_gmtime.c lib_gmtimer.c lib_tzset.c endif ifdef CONFIG_ALLOW_MIT_COMPONENTS diff --git a/libs/libc/time/lib_tzset.c b/libs/libc/time/lib_tzset.c new file mode 100644 index 00000000000..00f829111ee --- /dev/null +++ b/libs/libc/time/lib_tzset.c @@ -0,0 +1,46 @@ +/**************************************************************************** + * libs/libc/time/lib_tzset.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: tzset + * + * Description: + * Set up the time zone from the TZ environment variable. Without + * CONFIG_LIBC_LOCALTIME there are no time zones (local time is UTC), so + * there is nothing to set up. The function exists because POSIX + * requires it and portable programs call it. + * + ****************************************************************************/ + +void tzset(void) +{ +}