summaryrefslogtreecommitdiff
path: root/components/libc/compilers/dlib/syscall_read.c
diff options
context:
space:
mode:
Diffstat (limited to 'components/libc/compilers/dlib/syscall_read.c')
-rw-r--r--components/libc/compilers/dlib/syscall_read.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/components/libc/compilers/dlib/syscall_read.c b/components/libc/compilers/dlib/syscall_read.c
index e248211486..ae980be6ca 100644
--- a/components/libc/compilers/dlib/syscall_read.c
+++ b/components/libc/compilers/dlib/syscall_read.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
+ * Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
@@ -15,6 +15,10 @@
#include <yfuns.h>
#include "libc.h"
+#define DBG_TAG "dlib.syscall_read"
+#define DBG_LVL DBG_INFO
+#include <rtdbg.h>
+
#pragma module_name = "?__read"
size_t __read(int handle, unsigned char *buf, size_t len)
{
@@ -25,14 +29,20 @@ size_t __read(int handle, unsigned char *buf, size_t len)
if (handle == _LLIO_STDIN)
{
#ifdef RT_USING_POSIX
- return libc_stdio_read(buf, len);
+ if (libc_stdio_get_console() < 0)
+ {
+ LOG_W("Do not invoke standard input before initializing libc");
+ return 0;
+ }
+ return read(STDIN_FILENO, buf, len);
#else
return _LLIO_ERROR;
#endif
}
-
- if ((handle == _LLIO_STDOUT) || (handle == _LLIO_STDERR))
+ else if ((handle == _LLIO_STDOUT) || (handle == _LLIO_STDERR))
+ {
return _LLIO_ERROR;
+ }
#ifndef RT_USING_DFS
return _LLIO_ERROR;