Shenzhou board is first to use ONLY Kconfig for configuration

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5114 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2012-09-08 13:56:21 +00:00
parent 3f958a3e8c
commit 5d59ee57b5
4 changed files with 52 additions and 28 deletions

View File

@ -310,3 +310,7 @@
files into memory before transferring them. files into memory before transferring them.
* apps/netutils/webserver: Add ability to map a URL to CGI function. * apps/netutils/webserver: Add ability to map a URL to CGI function.
Contributed by Kate. Contributed by Kate.
* apps/nshlib/nsh_mntcmds.c: The changes of 6.21 introduced holes in the
error handling: Now the number of arguments to mount can be 0 or 4.
Additional parameter checking is required to prevent mysterious errors
(submiteed by Kate).

View File

@ -195,9 +195,9 @@ int cmd_df(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
defined(CONFIG_FS_READABLE) && !defined(CONFIG_NSH_DISABLE_MOUNT) defined(CONFIG_FS_READABLE) && !defined(CONFIG_NSH_DISABLE_MOUNT)
int cmd_mount(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) int cmd_mount(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
{ {
char *source; FAR char *source;
char *target; FAR char *target;
char *filesystem = 0; FAR char *filesystem = NULL;
bool badarg = false; bool badarg = false;
int ret; int ret;
@ -208,7 +208,11 @@ int cmd_mount(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
return mount_show(vtbl, argv[0]); return mount_show(vtbl, argv[0]);
} }
/* Get the mount options */ /* Get the mount options. NOTE: getopt() is not thread safe nor re-entrant.
* To keep its state proper for the next usage, it is necessary to parse to
* the end of the line even if an error occurs. If an error occurs, this
* logic just sets 'badarg' and continues.
*/
int option; int option;
while ((option = getopt(argc, argv, ":t:")) != ERROR) while ((option = getopt(argc, argv, ":t:")) != ERROR)
@ -232,14 +236,18 @@ int cmd_mount(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
} }
} }
/* If a bad argument was encountered, then return without processing the command */ /* If a bad argument was encountered, then return without processing the
* command.
*/
if (badarg) if (badarg)
{ {
return ERROR; return ERROR;
} }
/* There are two required arguments after the options */ /* There are two required arguments after the options: the source and target
* paths.
*/
if (optind + 2 < argc) if (optind + 2 < argc)
{ {
@ -252,6 +260,16 @@ int cmd_mount(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
return ERROR; return ERROR;
} }
/* While the above parsing for the -t argument looks nice, the -t argument
* not really optional.
*/
if (!filesystem)
{
nsh_output(vtbl, g_fmtargrequired, argv[0]);
return ERROR;
}
/* The source and target paths might be relative to the current /* The source and target paths might be relative to the current
* working directory. * working directory.
*/ */

View File

@ -19,21 +19,4 @@ config READLINE_ECHO
already has local echo support or you need to suppress the back-channel already has local echo support or you need to suppress the back-channel
responses for any other reason. responses for any other reason.
choice
prompt "Newline Options"
default EOL_IS_EITHER_CRLF
config EOL_IS_CR
bool "EOL is CR"
config EOL_IS_LF
bool "EOL is LF"
config EOL_IS_BOTH_CRLF
bool "EOL is CR and LF"
config EOL_IS_EITHER_CRLF
bool "EOL is CR or LF"
endchoice
endif endif

View File

@ -63,13 +63,32 @@
#define CONFIG_READLINE_ECHO 1 #define CONFIG_READLINE_ECHO 1
/* Some environments may return CR as end-of-line, others LF, and others /* Some environments may return CR as end-of-line, others LF, and others
* both. The logic here assumes either but not both. * both. If not specified, the logic here assumes either (but not both) as
* the default.
*/ */
#undef CONFIG_EOL_IS_CR #if defined(CONFIG_EOL_IS_CR)
#undef CONFIG_EOL_IS_LF # undef CONFIG_EOL_IS_LF
#undef CONFIG_EOL_IS_BOTH_CRLF # undef CONFIG_EOL_IS_BOTH_CRLF
#define CONFIG_EOL_IS_EITHER_CRLF 1 # undef CONFIG_EOL_IS_EITHER_CRLF
#elif defined(CONFIG_EOL_IS_LF)
# undef CONFIG_EOL_IS_CR
# undef CONFIG_EOL_IS_BOTH_CRLF
# undef CONFIG_EOL_IS_EITHER_CRLF
#elif defined(CONFIG_EOL_IS_BOTH_CRLF)
# undef CONFIG_EOL_IS_CR
# undef CONFIG_EOL_IS_LF
# undef CONFIG_EOL_IS_EITHER_CRLF
#elif defined(CONFIG_EOL_IS_EITHER_CRLF)
# undef CONFIG_EOL_IS_CR
# undef CONFIG_EOL_IS_LF
# undef CONFIG_EOL_IS_BOTH_CRLF
#else
# undef CONFIG_EOL_IS_CR
# undef CONFIG_EOL_IS_LF
# undef CONFIG_EOL_IS_BOTH_CRLF
# define CONFIG_EOL_IS_EITHER_CRLF 1
#endif
/**************************************************************************** /****************************************************************************
* Private Type Declarations * Private Type Declarations