See
https://mail-archives.apache.org/mod_mbox/nuttx-dev/202012.mbox/%3CCAKFLXYwes3pcDA2zXsL2FcwgCS4PecdmiP9srkGEtTaOoLEhMg%40mail.gmail.com%3E
I don't think this is the correct solution since with Xiao Xiang's
recent changes, stdin should never be closed. But it does give some
clues about the nature of the problem: stdin is no valid; stdout is okay
On 12/13/2020 4:07 PM, Brennan Ashton wrote:
This is impacting all the usbnsh configurations. I can take another
look later this evening
https://github.com/apache/incubator-nuttx/pull/2526
--Brennan
On Fri, Dec 11, 2020 at 5:05 AM Gregory Nutt <spudan...@gmail.com> wrote:
Several other PRs specifically removed support for fclose (stdin). Are
you certain you want to restore it? I think this needs more analysis
and resolution with the previous changes that removed the fclose() of
stdin, stdout, and stderr.
On 12/10/2020 5:37 PM, Masayuki Ishikawa wrote:
Suzuki-san,
Please send a PR (Pull Request) to
https://github.com/apache/incubator-nuttx-apps/
On Thu, Dec 10, 2020 at 5:24 PM SUZUKI Keiji <zuki.ebe...@gmail.com> wrote:
Hi,
I use STM32F407G-DISC1 (MB997D) and build nuttx on macOS Mojave (10.14.6).
The following error occurs with the default configuration of
stm32f4discovery:usbnsh.
NuttShell (NSH) NuttX-10.0.0
nsh> nsh: nsh_session: readline failed: 9
The reason seems that instream->fs_fd is -1 instead of 0 in the readline()
function called by
nsh_session().
This error occurs in version 10.0-RC0 and after (I checked 10.0-RC0, 10.0
and current master)
but does not occur in 9.1 and before (I checked 9.1, 8.2 and 7.31).
The following patch fixed it in my environment but I don't know this is a
correct fix.
=== from here ===
diff --git a/nshlib/nsh_usbconsole.c b/nshlib/nsh_usbconsole.c
index 28f63bcc..768a621b 100644
--- a/nshlib/nsh_usbconsole.c
+++ b/nshlib/nsh_usbconsole.c
@@ -77,8 +77,8 @@
static void nsh_configstdio(int fd, FAR struct console_stdio_s *pstate)
{
- /* Make sure the stdout, and stderr are flushed */
-
+ /* Make sure the stdin is closed and the stdout, and stderr are flushed
*/
+ fclose(stdin);
fflush(stdout);
fflush(stderr);
@@ -88,6 +88,9 @@ static void nsh_configstdio(int fd, FAR struct
console_stdio_s *pstate)
dup2(fd, 1);
dup2(fd, 2);
+ /* fdopen stdin */
+ fdopen(0, "r");
+
/* Setup the stdout */
pstate->cn_outfd = 1;
=====
Thanks,
SUZUKI Keiji