summaryrefslogtreecommitdiff
path: root/components/libc
diff options
context:
space:
mode:
authorMeco Man <[email protected]>2023-08-07 13:46:34 -0400
committerMeco Man <[email protected]>2023-08-17 02:22:53 -0400
commitb08d8672d258b029edc4d2c45543c3af9e595830 (patch)
tree470da1b57bf9acf705e5bf75235c71a1e35c8e64 /components/libc
parentd862816a51ab6fec2321f0410e8aea2d05507542 (diff)
[libc][posix/io/stdio] rename libc.c as posix/stdio.c
Diffstat (limited to 'components/libc')
-rw-r--r--components/libc/compilers/armlibc/syscalls.c6
-rw-r--r--components/libc/compilers/common/cstdio.c87
-rw-r--r--components/libc/compilers/common/cunistd.c34
-rw-r--r--components/libc/compilers/dlib/syscall_read.c4
-rw-r--r--components/libc/compilers/newlib/syscalls.c4
-rw-r--r--components/libc/posix/io/stdio/SConscript20
-rw-r--r--components/libc/posix/io/stdio/libc.h30
-rw-r--r--components/libc/posix/io/stdio/posix/stdio.h (renamed from components/libc/compilers/common/include/posix/stdio.h)16
-rw-r--r--components/libc/posix/io/stdio/stdio.c (renamed from components/libc/posix/io/stdio/libc.c)104
9 files changed, 129 insertions, 176 deletions
diff --git a/components/libc/compilers/armlibc/syscalls.c b/components/libc/compilers/armlibc/syscalls.c
index f163ab1ad9..5f7bcd0179 100644
--- a/components/libc/compilers/armlibc/syscalls.c
+++ b/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;
diff --git a/components/libc/compilers/common/cstdio.c b/components/libc/compilers/common/cstdio.c
deleted file mode 100644
index fc14c0b9c3..0000000000
--- a/components/libc/compilers/common/cstdio.c
+++ /dev/null
@@ -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 */
diff --git a/components/libc/compilers/common/cunistd.c b/components/libc/compilers/common/cunistd.c
new file mode 100644
index 0000000000..eda1c02a1a
--- /dev/null
+++ b/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);
diff --git a/components/libc/compilers/dlib/syscall_read.c b/components/libc/compilers/dlib/syscall_read.c
index a276a3e401..9cb60d72d9 100644
--- a/components/libc/compilers/dlib/syscall_read.c
+++ b/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 */
diff --git a/components/libc/compilers/newlib/syscalls.c b/components/libc/compilers/newlib/syscalls.c
index 8a59968323..ece5494b77 100644
--- a/components/libc/compilers/newlib/syscalls.c
+++ b/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;
diff --git a/components/libc/posix/io/stdio/SConscript b/components/libc/posix/io/stdio/SConscript
index d33809ce42..8180c9b0b8 100644
--- a/components/libc/posix/io/stdio/SConscript
+++ b/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')
diff --git a/components/libc/posix/io/stdio/libc.h b/components/libc/posix/io/stdio/libc.h
deleted file mode 100644
index 6b5dfd1fcc..0000000000
--- a/components/libc/posix/io/stdio/libc.h
+++ /dev/null
@@ -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
diff --git a/components/libc/compilers/common/include/posix/stdio.h b/components/libc/posix/io/stdio/posix/stdio.h
index a2cf01f6b6..d5e76859bf 100644
--- a/components/libc/compilers/common/include/posix/stdio.h
+++ b/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
}
diff --git a/components/libc/posix/io/stdio/libc.c b/components/libc/posix/io/stdio/stdio.c
index 522ff36510..4e5464c53a 100644
--- a/components/libc/posix/io/stdio/libc.c
+++ b/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;
- rt_set_errno(ENOTTY);
- return 0;
+ 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);
}
-RTM_EXPORT(isatty);