nshlib: Add login argument to nsh_session for controling the login process
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
parent
7b4d34e352
commit
9ab5e2ff45
@ -860,7 +860,7 @@ int nsh_loginscript(FAR struct nsh_vtbl_s *vtbl);
|
|||||||
/* Basic session and message handling */
|
/* Basic session and message handling */
|
||||||
|
|
||||||
struct console_stdio_s;
|
struct console_stdio_s;
|
||||||
int nsh_session(FAR struct console_stdio_s *pstate);
|
int nsh_session(FAR struct console_stdio_s *pstate, bool login);
|
||||||
int nsh_parse(FAR struct nsh_vtbl_s *vtbl, char *cmdline);
|
int nsh_parse(FAR struct nsh_vtbl_s *vtbl, char *cmdline);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
@ -317,7 +317,7 @@ int nsh_consolemain(int argc, char *argv[])
|
|||||||
|
|
||||||
/* Execute the session */
|
/* Execute the session */
|
||||||
|
|
||||||
nsh_session(pstate);
|
nsh_session(pstate, true);
|
||||||
|
|
||||||
/* We lost the connection. Wait for the keyboard to
|
/* We lost the connection. Wait for the keyboard to
|
||||||
* be re-connected.
|
* be re-connected.
|
||||||
|
@ -106,7 +106,7 @@ int nsh_consolemain(int argc, char *argv[])
|
|||||||
|
|
||||||
/* Execute the session */
|
/* Execute the session */
|
||||||
|
|
||||||
ret = nsh_session(pstate);
|
ret = nsh_session(pstate, true);
|
||||||
|
|
||||||
/* Exit upon return */
|
/* Exit upon return */
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int nsh_session(FAR struct console_stdio_s *pstate)
|
int nsh_session(FAR struct console_stdio_s *pstate, bool login)
|
||||||
{
|
{
|
||||||
FAR struct nsh_vtbl_s *vtbl;
|
FAR struct nsh_vtbl_s *vtbl;
|
||||||
int ret;
|
int ret;
|
||||||
@ -87,41 +87,44 @@ int nsh_session(FAR struct console_stdio_s *pstate)
|
|||||||
DEBUGASSERT(pstate);
|
DEBUGASSERT(pstate);
|
||||||
vtbl = &pstate->cn_vtbl;
|
vtbl = &pstate->cn_vtbl;
|
||||||
|
|
||||||
#ifdef CONFIG_NSH_CONSOLE_LOGIN
|
if (login)
|
||||||
/* Login User and Password Check */
|
|
||||||
|
|
||||||
if (nsh_login(pstate) != OK)
|
|
||||||
{
|
{
|
||||||
nsh_exit(vtbl, 1);
|
#ifdef CONFIG_NSH_CONSOLE_LOGIN
|
||||||
return -1; /* nsh_exit does not return */
|
/* Login User and Password Check */
|
||||||
}
|
|
||||||
|
if (nsh_login(pstate) != OK)
|
||||||
|
{
|
||||||
|
nsh_exit(vtbl, 1);
|
||||||
|
return -1; /* nsh_exit does not return */
|
||||||
|
}
|
||||||
#endif /* CONFIG_NSH_CONSOLE_LOGIN */
|
#endif /* CONFIG_NSH_CONSOLE_LOGIN */
|
||||||
|
|
||||||
/* Present a greeting and possibly a Message of the Day (MOTD) */
|
/* Present a greeting and possibly a Message of the Day (MOTD) */
|
||||||
|
|
||||||
fputs(g_nshgreeting, pstate->cn_outstream);
|
fputs(g_nshgreeting, pstate->cn_outstream);
|
||||||
|
|
||||||
#ifdef CONFIG_NSH_MOTD
|
#ifdef CONFIG_NSH_MOTD
|
||||||
#ifdef CONFIG_NSH_PLATFORM_MOTD
|
#ifdef CONFIG_NSH_PLATFORM_MOTD
|
||||||
/* Output the platform message of the day */
|
/* Output the platform message of the day */
|
||||||
|
|
||||||
platform_motd(vtbl->iobuffer, IOBUFFERSIZE);
|
platform_motd(vtbl->iobuffer, IOBUFFERSIZE);
|
||||||
fprintf(pstate->cn_outstream, "%s\n", vtbl->iobuffer);
|
fprintf(pstate->cn_outstream, "%s\n", vtbl->iobuffer);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/* Output the fixed message of the day */
|
/* Output the fixed message of the day */
|
||||||
|
|
||||||
fprintf(pstate->cn_outstream, "%s\n", g_nshmotd);
|
fprintf(pstate->cn_outstream, "%s\n", g_nshmotd);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fflush(pstate->cn_outstream);
|
fflush(pstate->cn_outstream);
|
||||||
|
|
||||||
/* Execute the login script */
|
/* Execute the login script */
|
||||||
|
|
||||||
#ifdef CONFIG_NSH_ROMFSRC
|
#ifdef CONFIG_NSH_ROMFSRC
|
||||||
nsh_loginscript(vtbl);
|
nsh_loginscript(vtbl);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/* Then enter the command line parsing loop */
|
/* Then enter the command line parsing loop */
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int nsh_session(FAR struct console_stdio_s *pstate)
|
int nsh_session(FAR struct console_stdio_s *pstate, bool login)
|
||||||
{
|
{
|
||||||
FAR struct nsh_vtbl_s *vtbl;
|
FAR struct nsh_vtbl_s *vtbl;
|
||||||
int ret;
|
int ret;
|
||||||
@ -84,34 +84,37 @@ int nsh_session(FAR struct console_stdio_s *pstate)
|
|||||||
DEBUGASSERT(pstate);
|
DEBUGASSERT(pstate);
|
||||||
vtbl = &pstate->cn_vtbl;
|
vtbl = &pstate->cn_vtbl;
|
||||||
|
|
||||||
#ifdef CONFIG_NSH_CONSOLE_LOGIN
|
if (login)
|
||||||
/* Login User and Password Check */
|
|
||||||
|
|
||||||
if (nsh_stdlogin(pstate) != OK)
|
|
||||||
{
|
{
|
||||||
nsh_exit(vtbl, 1);
|
#ifdef CONFIG_NSH_CONSOLE_LOGIN
|
||||||
return -1; /* nsh_exit does not return */
|
/* Login User and Password Check */
|
||||||
}
|
|
||||||
|
if (nsh_stdlogin(pstate) != OK)
|
||||||
|
{
|
||||||
|
nsh_exit(vtbl, 1);
|
||||||
|
return -1; /* nsh_exit does not return */
|
||||||
|
}
|
||||||
#endif /* CONFIG_NSH_CONSOLE_LOGIN */
|
#endif /* CONFIG_NSH_CONSOLE_LOGIN */
|
||||||
|
|
||||||
/* Present a greeting and possibly a Message of the Day (MOTD) */
|
/* Present a greeting and possibly a Message of the Day (MOTD) */
|
||||||
|
|
||||||
printf("%s", g_nshgreeting);
|
printf("%s", g_nshgreeting);
|
||||||
|
|
||||||
#ifdef CONFIG_NSH_MOTD
|
#ifdef CONFIG_NSH_MOTD
|
||||||
# ifdef CONFIG_NSH_PLATFORM_MOTD
|
# ifdef CONFIG_NSH_PLATFORM_MOTD
|
||||||
/* Output the platform message of the day */
|
/* Output the platform message of the day */
|
||||||
|
|
||||||
platform_motd(vtbl->iobuffer, IOBUFFERSIZE);
|
platform_motd(vtbl->iobuffer, IOBUFFERSIZE);
|
||||||
printf("%s\n", vtbl->iobuffer);
|
printf("%s\n", vtbl->iobuffer);
|
||||||
|
|
||||||
# else
|
# else
|
||||||
/* Output the fixed message of the day */
|
/* Output the fixed message of the day */
|
||||||
|
|
||||||
printf("%s\n", g_nshmotd);
|
printf("%s\n", g_nshmotd);
|
||||||
|
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/* Then enter the command line parsing loop */
|
/* Then enter the command line parsing loop */
|
||||||
|
|
||||||
|
@ -339,7 +339,7 @@ int nsh_consolemain(int argc, char *argv[])
|
|||||||
|
|
||||||
/* Execute the session */
|
/* Execute the session */
|
||||||
|
|
||||||
nsh_session(pstate);
|
nsh_session(pstate, true);
|
||||||
|
|
||||||
/* Switch to /dev/null because we probably no longer have a
|
/* Switch to /dev/null because we probably no longer have a
|
||||||
* valid console device.
|
* valid console device.
|
||||||
|
Loading…
Reference in New Issue
Block a user