Pārlūkot izejas kodu

[libc][posix/io/stdio] rename libc.c as posix/stdio.c

Meco Man 2 gadi atpakaļ
vecāks
revīzija
b08d8672d2

+ 0 - 2
bsp/allwinner/libraries/libos/include/misc/support.h

@@ -21,8 +21,6 @@
 #define __SUPPORT_H__
 #include <typedef.h>
 #include <kapi.h>
-#include <libc.h>
-
 /*
  * Generic macro to convert pointers to values for comparison purposes.
  */

+ 0 - 1
bsp/allwinner/libraries/sunxi-hal/hal/source/usb/include/usb_list.h

@@ -25,7 +25,6 @@
 #ifndef _USB_LIST_H_
 #define _USB_LIST_H_
 
-#include <libc.h>
 #include <log.h>
 #include <hal_osal.h>
 //#include "usb_host_config.h"

+ 1 - 1
components/dfs/dfs_v1/src/dfs.c

@@ -19,7 +19,7 @@
 #endif
 
 #ifdef RT_USING_POSIX_STDIO
-#include <libc.h>
+#include <posix/stdio.h>
 #endif /* RT_USING_POSIX_STDIO */
 
 /* Global variables */

+ 3 - 3
components/libc/compilers/armlibc/syscalls.c

@@ -23,7 +23,7 @@
 #include <sys/stat.h>
 #include <compiler_private.h>
 #ifdef RT_USING_POSIX_STDIO
-    #include "libc.h"
+#include <posix/stdio.h>
 #endif /* RT_USING_POSIX_STDIO */
 
 #define DBG_TAG    "armlibc.syscalls"
@@ -153,7 +153,7 @@ int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode)
     if (fh == STDIN)
     {
 #ifdef RT_USING_POSIX_STDIO
-        if (libc_stdio_get_console() < 0)
+        if (rt_posix_stdio_get_console() < 0)
         {
             LOG_W("Do not invoke standard output before initializing Compiler");
             return 0; /* error, but keep going */
@@ -375,7 +375,7 @@ int fgetc(FILE *f)
 #ifdef RT_USING_POSIX_STDIO
     char ch;
 
-    if (libc_stdio_get_console() < 0)
+    if (rt_posix_stdio_get_console() < 0)
     {
         LOG_W("Do not invoke standard output before initializing Compiler");
         return 0;

+ 0 - 87
components/libc/compilers/common/cstdio.c

@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2006-2022, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date           Author       Notes
- * 2014-05-22     ivanrad      implement getline
- */
-
-#include "posix/stdio.h"
-#include <stdlib.h>
-#include <limits.h>
-#include <sys/errno.h>
-
-#ifdef DFS_USING_POSIX
-ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream)
-{
-    char *cur_pos, *new_lineptr;
-    size_t new_lineptr_len;
-    int c;
-
-    if (lineptr == NULL || n == NULL || stream == NULL)
-    {
-        errno = EINVAL;
-        return -1;
-    }
-
-    if (*lineptr == NULL)
-    {
-        *n = 128; /* init len */
-        if ((*lineptr = (char *)malloc(*n)) == NULL)
-        {
-            errno = ENOMEM;
-            return -1;
-        }
-    }
-
-    cur_pos = *lineptr;
-    for (;;)
-    {
-        c = getc(stream);
-
-        if (ferror(stream) || (c == EOF && cur_pos == *lineptr))
-            return -1;
-
-        if (c == EOF)
-            break;
-
-        if ((*lineptr + *n - cur_pos) < 2)
-        {
-            if (LONG_MAX / 2 < *n)
-            {
-#ifdef EOVERFLOW
-                errno = EOVERFLOW;
-#else
-                errno = ERANGE; /* no EOVERFLOW defined */
-#endif
-                return -1;
-            }
-            new_lineptr_len = *n * 2;
-
-            if ((new_lineptr = (char *)realloc(*lineptr, new_lineptr_len)) == NULL)
-            {
-                errno = ENOMEM;
-                return -1;
-            }
-            cur_pos = new_lineptr + (cur_pos - *lineptr);
-            *lineptr = new_lineptr;
-            *n = new_lineptr_len;
-        }
-
-        *cur_pos++ = (char)c;
-
-        if (c == delim)
-            break;
-    }
-
-    *cur_pos = '\0';
-    return (ssize_t)(cur_pos - *lineptr);
-}
-
-ssize_t getline(char **lineptr, size_t *n, FILE *stream)
-{
-    return getdelim(lineptr, n, '\n', stream);
-}
-#endif /* DFS_USING_POSIX */

+ 34 - 0
components/libc/compilers/common/cunistd.c

@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2023-08-16     Meco Man     first version
+ */
+
+#include <rtthread.h>
+#include <unistd.h>
+#include <sys/errno.h>
+
+int isatty(int fd)
+{
+#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
+    if(fd == STDOUT_FILENO || fd == STDERR_FILENO)
+    {
+        return 1;
+    }
+#endif /* defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE) */
+
+#ifdef RT_USING_POSIX_STDIO
+    if(fd == STDIN_FILENO)
+    {
+        return 1;
+    }
+#endif /* RT_USING_POSIX_STDIO */
+
+    rt_set_errno(ENOTTY);
+    return 0;
+}
+RTM_EXPORT(isatty);

+ 2 - 2
components/libc/compilers/dlib/syscall_read.c

@@ -12,7 +12,7 @@
 #include <LowLevelIOInterface.h>
 #include <unistd.h>
 #ifdef RT_USING_POSIX_STDIO
-#include "libc.h"
+#include <posix/stdio.h>
 #endif /* RT_USING_POSIX_STDIO */
 #include <compiler_private.h>
 #define DBG_TAG    "dlib.syscall.read"
@@ -40,7 +40,7 @@ size_t __read(int handle, unsigned char *buf, size_t len)
     if (handle == _LLIO_STDIN)
     {
 #ifdef RT_USING_POSIX_STDIO
-        if (libc_stdio_get_console() < 0)
+        if (rt_posix_stdio_get_console() < 0)
         {
             LOG_W("Do not invoke standard input before initializing Compiler");
             return 0; /* error, but keep going */

+ 2 - 2
components/libc/compilers/newlib/syscalls.c

@@ -21,7 +21,7 @@
 #include <sys/errno.h>
 #include <sys/stat.h>
 #ifdef RT_USING_POSIX_STDIO
-#include "libc.h"
+#include <posix/stdio.h>
 #endif /* RT_USING_POSIX_STDIO */
 #ifdef RT_USING_MODULE
 #include <dlmodule.h>
@@ -225,7 +225,7 @@ _ssize_t _read_r(struct _reent *ptr, int fd, void *buf, size_t nbytes)
     if (fd == STDIN_FILENO)
     {
 #ifdef RT_USING_POSIX_STDIO
-        if (libc_stdio_get_console() < 0)
+        if (rt_posix_stdio_get_console() < 0)
         {
             LOG_W("Do not invoke standard input before initializing Compiler");
             return 0;

+ 2 - 18
components/libc/posix/io/stdio/SConscript

@@ -1,22 +1,6 @@
-# RT-Thread building script for component
-
-import os
 from building import *
 
-src     = []
-cwd     = GetCurrentDir()
-CPPPATH = [cwd]
-group   = []
-
-if GetDepend('RT_USING_POSIX_STDIO'):
-    src += ['libc.c']
-
-group = DefineGroup('POSIX', src, depend = [''], CPPPATH = CPPPATH)
-
-list = os.listdir(cwd)
-for d in list:
-    path = os.path.join(cwd, d)
-    if os.path.isfile(os.path.join(path, 'SConscript')):
-        group = group + SConscript(os.path.join(d, 'SConscript'))
+src     = ['stdio.c']
+group = DefineGroup('POSIX', src, depend = ['RT_USING_POSIX_STDIO'], CPPPATH = [GetCurrentDir()])
 
 Return('group')

+ 0 - 30
components/libc/posix/io/stdio/libc.h

@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2006-2021, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date           Author       Notes
- * 2017/10/15     bernard      the first version
- */
-
-#ifndef __RTT_LIBC_H__
-#define __RTT_LIBC_H__
-
-#include <rtconfig.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int libc_system_init(void);
-#ifdef RT_USING_POSIX_STDIO
-int libc_stdio_get_console(void);
-int libc_stdio_set_console(const char* device_name, int mode);
-#endif /* RT_USING_POSIX_STDIO */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

+ 9 - 7
components/libc/compilers/common/include/posix/stdio.h → components/libc/posix/io/stdio/posix/stdio.h

@@ -1,27 +1,29 @@
 /*
- * Copyright (c) 2006-2022, RT-Thread Development Team
+ * Copyright (c) 2006-2021, RT-Thread Development Team
  *
  * SPDX-License-Identifier: Apache-2.0
  *
  * Change Logs:
  * Date           Author       Notes
- * 2022-06-07     Meco Man     first version
+ * 2017/10/15     bernard      the first version
  */
 
 #ifndef __POSIX_STDIO_H__
 #define __POSIX_STDIO_H__
 
+#include <rtconfig.h>
+#include <stdio.h>
+#include <sys/types.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#include <stdio.h>
-#include <sys/types.h>
-
-#ifdef DFS_USING_POSIX
+int rt_posix_stdio_init(void);
+int rt_posix_stdio_get_console(void);
+int rt_posix_stdio_set_console(const char* device_name, int mode);
 ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
 ssize_t getline(char **lineptr, size_t *n, FILE *stream);
-#endif /* DFS_USING_POSIX */
 
 #ifdef __cplusplus
 }

+ 77 - 27
components/libc/posix/io/stdio/libc.c → components/libc/posix/io/stdio/stdio.c

@@ -6,6 +6,7 @@
  * Change Logs:
  * Date           Author       Notes
  * 2017/10/15     bernard      the first version
+ * 2023/08/07     Meco Man     rename as posix/stdio.c
  */
 
 #include <rtthread.h>
@@ -13,24 +14,24 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <limits.h>
 #include <fcntl.h>
 #include <sys/time.h>
 #include <sys/errno.h>
-#include "libc.h"
+#include "posix/stdio.h"
 
 #define STDIO_DEVICE_NAME_MAX   32
 
 int sys_dup2(int oldfd, int new);
 
-int libc_system_init(void)
+int rt_posix_stdio_init(void)
 {
-#ifdef RT_USING_POSIX_STDIO
     rt_device_t dev_console;
 
     dev_console = rt_console_get_device();
     if (dev_console)
     {
-        int fd = libc_stdio_set_console(dev_console->parent.name, O_RDWR);
+        int fd = rt_posix_stdio_set_console(dev_console->parent.name, O_RDWR);
         if (fd < 0)
         {
             return -1;
@@ -40,15 +41,14 @@ int libc_system_init(void)
         sys_dup2(fd, 1);
         sys_dup2(fd, 2);
     }
-#endif /* RT_USING_POSIX_STDIO */
     return 0;
 }
-INIT_ENV_EXPORT(libc_system_init);
+INIT_ENV_EXPORT(rt_posix_stdio_init);
 
-#if defined(RT_USING_POSIX_STDIO) && defined(RT_USING_NEWLIBC)
+#if defined(RT_USING_NEWLIBC)
 
 static FILE* std_console = NULL;
-int libc_stdio_set_console(const char* device_name, int mode)
+int rt_posix_stdio_set_console(const char* device_name, int mode)
 {
     FILE *fp;
     char name[STDIO_DEVICE_NAME_MAX];
@@ -111,7 +111,7 @@ int libc_stdio_set_console(const char* device_name, int mode)
     return -1;
 }
 
-int libc_stdio_get_console(void)
+int rt_posix_stdio_get_console(void)
 {
     if (std_console)
         return fileno(std_console);
@@ -119,11 +119,11 @@ int libc_stdio_get_console(void)
         return -1;
 }
 
-#elif defined(RT_USING_POSIX_STDIO) && defined(RT_USING_MUSLLIBC)
+#elif defined(RT_USING_MUSLLIBC)
 
 static FILE* std_console = NULL;
 
-int libc_stdio_set_console(const char* device_name, int mode)
+int rt_posix_stdio_set_console(const char* device_name, int mode)
 {
     FILE *fp;
     char name[STDIO_DEVICE_NAME_MAX];
@@ -159,7 +159,7 @@ int libc_stdio_set_console(const char* device_name, int mode)
     return -1;
 }
 
-int libc_stdio_get_console(void)
+int rt_posix_stdio_get_console(void)
 {
     int ret = -1;
     if (std_console)
@@ -170,10 +170,10 @@ int libc_stdio_get_console(void)
     return ret;
 }
 
-#elif defined(RT_USING_POSIX_STDIO)
+#else
 
 static int std_fd = -1;
-int libc_stdio_set_console(const char* device_name, int mode)
+int rt_posix_stdio_set_console(const char* device_name, int mode)
 {
     int fd;
     char name[STDIO_DEVICE_NAME_MAX];
@@ -194,28 +194,78 @@ int libc_stdio_set_console(const char* device_name, int mode)
     return std_fd;
 }
 
-int libc_stdio_get_console(void) {
+int rt_posix_stdio_get_console(void) {
     return std_fd;
 }
-#endif /* defined(RT_USING_POSIX_STDIO) && defined(RT_USING_NEWLIBC) */
+#endif /* defined(RT_USING_NEWLIBC) */
 
-int isatty(int fd)
+ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream)
 {
-#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
-    if(fd == STDOUT_FILENO || fd == STDERR_FILENO)
+    char *cur_pos, *new_lineptr;
+    size_t new_lineptr_len;
+    int c;
+
+    if (lineptr == NULL || n == NULL || stream == NULL)
     {
-        return 1;
+        errno = EINVAL;
+        return -1;
     }
-#endif
 
-#ifdef RT_USING_POSIX_STDIO
-    if(fd == STDIN_FILENO)
+    if (*lineptr == NULL)
     {
-        return 1;
+        *n = 128; /* init len */
+        if ((*lineptr = (char *)malloc(*n)) == NULL)
+        {
+            errno = ENOMEM;
+            return -1;
+        }
     }
+
+    cur_pos = *lineptr;
+    for (;;)
+    {
+        c = getc(stream);
+
+        if (ferror(stream) || (c == EOF && cur_pos == *lineptr))
+            return -1;
+
+        if (c == EOF)
+            break;
+
+        if ((*lineptr + *n - cur_pos) < 2)
+        {
+            if (LONG_MAX / 2 < *n)
+            {
+#ifdef EOVERFLOW
+                errno = EOVERFLOW;
+#else
+                errno = ERANGE; /* no EOVERFLOW defined */
 #endif
+                return -1;
+            }
+            new_lineptr_len = *n * 2;
+
+            if ((new_lineptr = (char *)realloc(*lineptr, new_lineptr_len)) == NULL)
+            {
+                errno = ENOMEM;
+                return -1;
+            }
+            cur_pos = new_lineptr + (cur_pos - *lineptr);
+            *lineptr = new_lineptr;
+            *n = new_lineptr_len;
+        }
 
-    rt_set_errno(ENOTTY);
-    return 0;
+        *cur_pos++ = (char)c;
+
+        if (c == delim)
+            break;
+    }
+
+    *cur_pos = '\0';
+    return (ssize_t)(cur_pos - *lineptr);
+}
+
+ssize_t getline(char **lineptr, size_t *n, FILE *stream)
+{
+    return getdelim(lineptr, n, '\n', stream);
 }
-RTM_EXPORT(isatty);