This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git
commit f82e6c22295e4f8d6ce7bef2490170933f4aa2be Author: yangsong8 <[email protected]> AuthorDate: Mon Dec 9 21:13:49 2024 +0800 nsh: return EOF when nread is 0 If enable CONFIG NSH_CLE. When sh reads data and detects that nread is 0, return EOF and exit. Signed-off-by: yangsong8 <[email protected]> --- nshlib/nsh_session.c | 5 +++-- system/cle/cle.c | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/nshlib/nsh_session.c b/nshlib/nsh_session.c index 500c8d6f1..bb83b98fb 100644 --- a/nshlib/nsh_session.c +++ b/nshlib/nsh_session.c @@ -211,11 +211,12 @@ int nsh_session(FAR struct console_stdio_s *pstate, ret = cle_fd(pstate->cn_line, nsh_prompt(), LINE_MAX, INFD(pstate), OUTFD(pstate)); - if (ret < 0) + if (ret == EOF) { dprintf(ERRFD(pstate), g_fmtcmdfailed, "nsh_session", "cle", NSH_ERRNO_OF(-ret)); - continue; + ret = EXIT_SUCCESS; + break; } #else /* Display the prompt string */ diff --git a/system/cle/cle.c b/system/cle/cle.c index cf11f7097..21b442806 100644 --- a/system/cle/cle.c +++ b/system/cle/cle.c @@ -316,7 +316,7 @@ static int cle_getch(FAR struct cle_s *priv) if (nread == 0 || errcode != EINTR) { cledbg("ERROR: read from stdin failed: %d\n", errcode); - return -EIO; + return EOF; } } } @@ -372,13 +372,13 @@ static void cle_setcursor(FAR struct cle_s *priv, int16_t column) int len; int off; - /* Sub prompt offset from real postion to get correct offset to execute */ + /* Sub prompt offset from real position to get correct offset to execute */ off = column - (priv->realpos - priv->coloffs); cleinfo("column=%d offset=%d\n", column, off); - /* If cursor not move, retrun directly */ + /* If cursor not move, return directly */ if (off == 0) { @@ -703,9 +703,9 @@ static int cle_editloop(FAR struct cle_s *priv) for (; ; ) { ch = cle_getch(priv); - if (ch < 0) + if (ch == EOF) { - return -EIO; + return EOF; } else if (state != 0) {
