This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 314348cafe721723a470b06b2bba341650be7e34
Author: Marco Casaroli <[email protected]>
AuthorDate: Thu Oct 8 22:01:33 2026 +0200

    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 <[email protected]>
---
 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(-)

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 <time.h>
+
+/****************************************************************************
+ * 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)
+{
+}

Reply via email to