summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-01-17 18:03:23 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-01-17 18:03:23 -0600
commit4f8b0d0a714a7f8302e876e217e8f49e2c5901d5 (patch)
tree15d6fa10198715c62050711a064cce6444d064e1 /apps
parente33bd6bd784ba0334beb0481d82416be38fbb54d (diff)
downloadnuttx-4f8b0d0a714a7f8302e876e217e8f49e2c5901d5.tar.gz
nuttx-4f8b0d0a714a7f8302e876e217e8f49e2c5901d5.tar.bz2
nuttx-4f8b0d0a714a7f8302e876e217e8f49e2c5901d5.zip
NSH: Loosen up if-then-else-fi syntx so that a command can be on the same line as the 'then' and 'else' tokens. This allows, as an example, 'if true; then echo true; else echo false; fi' which is much more bash-like
Diffstat (limited to 'apps')
-rw-r--r--apps/ChangeLog.txt5
-rw-r--r--apps/nshlib/nsh_parse.c14
2 files changed, 7 insertions, 12 deletions
diff --git a/apps/ChangeLog.txt b/apps/ChangeLog.txt
index dfb45293e..fb3bf2979 100644
--- a/apps/ChangeLog.txt
+++ b/apps/ChangeLog.txt
@@ -792,3 +792,8 @@
support for while-do-done and until-do-done loops. These only work
when executing a script file because they depend on the ability to seek
in the file to implement the looping behaviors (2014-1-17).
+ * apps/nshlib/nsh_parse.c: Loosen up if-then-else-fi syntax to allow
+ a command to be on the same line as the then and else tokens like:
+ "if true; then echo true; else echo false; fi". Much more like bash!
+ (2014-1-17).
+
diff --git a/apps/nshlib/nsh_parse.c b/apps/nshlib/nsh_parse.c
index a612e892a..c7505f34d 100644
--- a/apps/nshlib/nsh_parse.c
+++ b/apps/nshlib/nsh_parse.c
@@ -1684,14 +1684,9 @@ static int nsh_itef(FAR struct nsh_vtbl_s *vtbl, FAR char **ppcmd,
else if (strcmp(cmd, "then") == 0)
{
- /* Get the cmd following the "then" -- there shouldn't be one */
+ /* Get the cmd following the "then" -- there may or may not be one */
*ppcmd = nsh_argument(vtbl, saveptr, memlist);
- if (*ppcmd)
- {
- nsh_output(vtbl, g_fmtarginvalid, "then");
- goto errout;
- }
/* Verify that "then" is valid in this context */
@@ -1708,14 +1703,9 @@ static int nsh_itef(FAR struct nsh_vtbl_s *vtbl, FAR char **ppcmd,
else if (strcmp(cmd, "else") == 0)
{
- /* Get the cmd following the "else" -- there shouldn't be one */
+ /* Get the cmd following the "else" -- there may or may not be one */
*ppcmd = nsh_argument(vtbl, saveptr, memlist);
- if (*ppcmd)
- {
- nsh_output(vtbl, g_fmtarginvalid, "else");
- goto errout;
- }
/* Verify that "else" is valid in this context */