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) {