diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2011-02-23 03:17:29 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2011-02-23 03:17:29 +0000 |
commit | 940ad0838da7d5bc2622606a0b42225683494f11 (patch) | |
tree | c7046e60163ac337f5c146a125130985e08857f0 /nuttx/examples/nsh/nsh_netcmds.c | |
parent | 086efc834d511d771a996f895c73d35ca020b1d6 (diff) | |
download | px4-nuttx-940ad0838da7d5bc2622606a0b42225683494f11.tar.gz px4-nuttx-940ad0838da7d5bc2622606a0b42225683494f11.tar.bz2 px4-nuttx-940ad0838da7d5bc2622606a0b42225683494f11.zip |
Back out last change; correct fix is in NSH
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3311 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/examples/nsh/nsh_netcmds.c')
-rw-r--r-- | nuttx/examples/nsh/nsh_netcmds.c | 69 |
1 files changed, 52 insertions, 17 deletions
diff --git a/nuttx/examples/nsh/nsh_netcmds.c b/nuttx/examples/nsh/nsh_netcmds.c index e77fd7604..77caeea82 100644 --- a/nuttx/examples/nsh/nsh_netcmds.c +++ b/nuttx/examples/nsh/nsh_netcmds.c @@ -1,7 +1,7 @@ /**************************************************************************** * examples/nsh/nsh_netcmds.c * - * Copyright (C) 2007-2010 Gregory Nutt. All rights reserved. + * Copyright (C) 2007-2011 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <spudmonkey@racsa.co.cr> * * Redistribution and use in source and binary forms, with or without @@ -281,6 +281,7 @@ int tftpc_parseargs(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv, struct tftpc_args_s *args) { FAR const char *fmt = g_fmtarginvalid; + bool badarg = false; int option; /* Get the ping options */ @@ -306,21 +307,30 @@ int tftpc_parseargs(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv, if (!uiplib_ipaddrconv(optarg, (FAR unsigned char*)&args->ipaddr)) { nsh_output(vtbl, g_fmtarginvalid, argv[0]); - goto errout; + badarg = true; } break; case ':': - fmt = g_fmtargrequired; - goto errout; + nsh_output(vtbl, g_fmtargrequired, argv[0]); + badarg = true; + break; case '?': default: - fmt = g_fmtarginvalid; - goto errout; + nsh_output(vtbl, g_fmtarginvalid, argv[0]); + badarg = true; + break; } } + /* If a bad argument was encountered, then return without processing the command */ + + if (badarg) + { + return ERROR; + } + /* There should be exactly on parameter left on the command-line */ if (optind == argc-1) @@ -478,6 +488,7 @@ int cmd_ping(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) uint32_t next; uint32_t dsec = 10; uint16_t id; + bool badarg = false; int count = 10; int option; int seqno; @@ -496,8 +507,8 @@ int cmd_ping(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) count = atoi(optarg); if (count < 1 || count > 10000) { - fmt = g_fmtargrange; - goto errout; + nsh_output(vtbl, g_fmtargrange, argv[0]); + badarg = true; } break; @@ -505,21 +516,35 @@ int cmd_ping(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) tmp = atoi(optarg); if (tmp < 1 || tmp >= 4294) { - fmt = g_fmtargrange; - goto errout; + nsh_output(vtbl, g_fmtargrange, argv[0]); + badarg = true; + } + else + { + dsec = 10 * tmp; } - dsec = 10 * tmp; break; case ':': - fmt = g_fmtargrequired; + nsh_output(vtbl, g_fmtargrequired, argv[0]); + badarg = true; + break; case '?': default: - goto errout; + nsh_output(vtbl, g_fmtarginvalid, argv[0]); + badarg = true; + break; } } + /* If a bad argument was encountered, then return without processing the command */ + + if (badarg) + { + return ERROR; + } + /* There should be exactly on parameter left on the command-line */ if (optind == argc-1) @@ -666,6 +691,7 @@ int cmd_wget(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) char *fullpath = NULL; char *url; const char *fmt; + bool badarg = false; int option; int fd = -1; int ret; @@ -681,16 +707,25 @@ int cmd_wget(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) break; case ':': - fmt = g_fmtargrequired; - goto errout; + nsh_output(vtbl, g_fmtargrequired, argv[0]); + badarg = true; + break; case '?': default: - fmt = g_fmtarginvalid; - goto errout; + nsh_output(vtbl, g_fmtarginvalid, argv[0]); + badarg = true; + break; } } + /* If a bad argument was encountered, then return without processing the command */ + + if (badarg) + { + return ERROR; + } + /* There should be exactly on parameter left on the command-line */ if (optind == argc-1) |