You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by gu...@apache.org on 2021/07/31 18:35:57 UTC

[incubator-nuttx] 02/02: libc: Add the empty nl_langinfo implementation

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

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

commit 0e2cbe9a7968e9fb9ebbaf2a6ad45b53836943e0
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Fri Jul 30 04:50:54 2021 +0800

    libc: Add the empty nl_langinfo implementation
    
    https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/langinfo.h.html
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 include/langinfo.h              | 125 ++++++++++++++++++++++++++++++++++++++++
 include/nl_types.h              |  54 +++++++++++++++++
 libs/libc/locale/Make.defs      |   1 +
 libs/libc/locale/lib_langinfo.c |  48 +++++++++++++++
 4 files changed, 228 insertions(+)

diff --git a/include/langinfo.h b/include/langinfo.h
new file mode 100644
index 0000000..9a7cad7
--- /dev/null
+++ b/include/langinfo.h
@@ -0,0 +1,125 @@
+/****************************************************************************
+ * include/langinfo.h
+ *
+ * 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.
+ *
+ ****************************************************************************/
+
+#ifndef __INCLUDE_LANGINFO_H
+#define __INCLUDE_LANGINFO_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nl_types.h>
+#include <locale.h>
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+#define NL_ITEM(cat, index) (((cat) << 16) | (index))
+#define NL_LOCALE_NAME(cat) NL_ITEM((cat), (0xffff))
+
+#define CODESET             NL_ITEM(LC_CTYPE,    0x0e)
+
+#define RADIXCHAR           NL_ITEM(LC_NUMERIC,  0x00)
+#define THOUSEP             NL_ITEM(LC_NUMERIC,  0x01)
+
+#define ABDAY_1             NL_ITEM(LC_TIME,     0x00)
+#define ABDAY_2             NL_ITEM(LC_TIME,     0x01)
+#define ABDAY_3             NL_ITEM(LC_TIME,     0x02)
+#define ABDAY_4             NL_ITEM(LC_TIME,     0x03)
+#define ABDAY_5             NL_ITEM(LC_TIME,     0x04)
+#define ABDAY_6             NL_ITEM(LC_TIME,     0x05)
+#define ABDAY_7             NL_ITEM(LC_TIME,     0x06)
+
+#define DAY_1               NL_ITEM(LC_TIME,     0x07)
+#define DAY_2               NL_ITEM(LC_TIME,     0x08)
+#define DAY_3               NL_ITEM(LC_TIME,     0x09)
+#define DAY_4               NL_ITEM(LC_TIME,     0x0a)
+#define DAY_5               NL_ITEM(LC_TIME,     0x0b)
+#define DAY_6               NL_ITEM(LC_TIME,     0x0c)
+#define DAY_7               NL_ITEM(LC_TIME,     0x0d)
+
+#define ABMON_1             NL_ITEM(LC_TIME,     0x0e)
+#define ABMON_2             NL_ITEM(LC_TIME,     0x0f)
+#define ABMON_3             NL_ITEM(LC_TIME,     0x10)
+#define ABMON_4             NL_ITEM(LC_TIME,     0x11)
+#define ABMON_5             NL_ITEM(LC_TIME,     0x12)
+#define ABMON_6             NL_ITEM(LC_TIME,     0x13)
+#define ABMON_7             NL_ITEM(LC_TIME,     0x14)
+#define ABMON_8             NL_ITEM(LC_TIME,     0x15)
+#define ABMON_9             NL_ITEM(LC_TIME,     0x16)
+#define ABMON_10            NL_ITEM(LC_TIME,     0x17)
+#define ABMON_11            NL_ITEM(LC_TIME,     0x18)
+#define ABMON_12            NL_ITEM(LC_TIME,     0x19)
+
+#define MON_1               NL_ITEM(LC_TIME,     0x1a)
+#define MON_2               NL_ITEM(LC_TIME,     0x1b)
+#define MON_3               NL_ITEM(LC_TIME,     0x1c)
+#define MON_4               NL_ITEM(LC_TIME,     0x1d)
+#define MON_5               NL_ITEM(LC_TIME,     0x1e)
+#define MON_6               NL_ITEM(LC_TIME,     0x1f)
+#define MON_7               NL_ITEM(LC_TIME,     0x20)
+#define MON_8               NL_ITEM(LC_TIME,     0x21)
+#define MON_9               NL_ITEM(LC_TIME,     0x22)
+#define MON_10              NL_ITEM(LC_TIME,     0x23)
+#define MON_11              NL_ITEM(LC_TIME,     0x24)
+#define MON_12              NL_ITEM(LC_TIME,     0x25)
+
+#define AM_STR              NL_ITEM(LC_TIME,     0x26)
+#define PM_STR              NL_ITEM(LC_TIME,     0x27)
+#define D_T_FMT             NL_ITEM(LC_TIME,     0x28)
+#define D_FMT               NL_ITEM(LC_TIME,     0x29)
+#define T_FMT               NL_ITEM(LC_TIME,     0x2a)
+#define T_FMT_AMPM          NL_ITEM(LC_TIME,     0x2b)
+#define ERA                 NL_ITEM(LC_TIME,     0x2c)
+#define ERA_D_FMT           NL_ITEM(LC_TIME,     0x2e)
+#define ALT_DIGITS          NL_ITEM(LC_TIME,     0x2f)
+#define ERA_D_T_FMT         NL_ITEM(LC_TIME,     0x30)
+#define ERA_T_FMT           NL_ITEM(LC_TIME,     0x31)
+
+#define CRNCYSTR            NL_ITEM(LC_MONETARY, 0x0f)
+
+#define YESEXPR             NL_ITEM(LC_MESSAGES, 0x00)
+#define NOEXPR              NL_ITEM(LC_MESSAGES, 0x01)
+#define YESSTR              NL_ITEM(LC_MESSAGES, 0x02)
+#define NOSTR               NL_ITEM(LC_MESSAGES, 0x03)
+
+#define nl_langinfo_l(i, l) nl_langinfo(i)
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#ifdef __cplusplus
+#define EXTERN extern "C"
+extern "C"
+{
+#else
+#define EXTERN extern
+#endif
+
+FAR char *nl_langinfo(nl_item item);
+
+#undef EXTERN
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __INCLUDE_LANGINFO_H */
diff --git a/include/nl_types.h b/include/nl_types.h
new file mode 100644
index 0000000..96ed6b3
--- /dev/null
+++ b/include/nl_types.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ * include/nl_types.h
+ *
+ * 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.
+ *
+ ****************************************************************************/
+
+#ifndef __INCLUDE_NL_TYPES_H
+#define __INCLUDE_NL_TYPES_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+#include <nuttx/compiler.h>
+
+/****************************************************************************
+ * Public Type Definitions
+ ****************************************************************************/
+
+typedef int       nl_item;
+
+/****************************************************************************
+ * Public Function Prototypes
+ ****************************************************************************/
+
+#ifdef __cplusplus
+#define EXTERN extern "C"
+extern "C"
+{
+#else
+#define EXTERN extern
+#endif
+
+#undef EXTERN
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __INCLUDE_NL_TYPES_H */
diff --git a/libs/libc/locale/Make.defs b/libs/libc/locale/Make.defs
index c606a66..35aa696 100644
--- a/libs/libc/locale/Make.defs
+++ b/libs/libc/locale/Make.defs
@@ -24,6 +24,7 @@ ifeq ($(CONFIG_LIBC_LOCALE),y)
 
 CSRCS += lib_duplocale.c lib_freelocale.c lib_localeconv.c
 CSRCS += lib_newlocale.c lib_setlocale.c lib_uselocale.c
+CSRCS += lib_langinfo.c
 
 # Add the locale directory to the build
 
diff --git a/libs/libc/locale/lib_langinfo.c b/libs/libc/locale/lib_langinfo.c
new file mode 100644
index 0000000..83eae33
--- /dev/null
+++ b/libs/libc/locale/lib_langinfo.c
@@ -0,0 +1,48 @@
+/****************************************************************************
+ * libs/libc/locale/lib_langinfo.c
+ *
+ * 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 <nuttx/config.h>
+
+#include <langinfo.h>
+
+#ifdef CONFIG_LIBC_LOCALE
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: nl_langinfo
+ *
+ * Description:
+ *   locales are not supported by NuttX
+ *
+ ****************************************************************************/
+
+FAR char *nl_langinfo(nl_item item)
+{
+  return "";
+}
+
+#endif