This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git
The following commit(s) were added to refs/heads/master by this push:
new ec63217b4 nshlib: disable nsh error print if NSH_DISABLE_ERROR_PRINT
enabled
ec63217b4 is described below
commit ec63217b48f313264990d3038895cea700aa2924
Author: chao an <[email protected]>
AuthorDate: Thu Jun 8 19:37:31 2023 +0800
nshlib: disable nsh error print if NSH_DISABLE_ERROR_PRINT enabled
text data bss dec hex filename
398953 27088 4128 430169 69059 nuttx /* before */
389241 27072 4128 420441 66a59 nuttx /* after */
-9712 -16
Signed-off-by: chao an <[email protected]>
---
nshlib/Kconfig | 4 ++++
nshlib/nsh_alias.c | 21 ++++++++++-----------
nshlib/nsh_console.c | 6 ++++++
nshlib/nsh_console.h | 11 +++++++++++
nshlib/nsh_dbgcmds.c | 3 +--
nshlib/nsh_ddcmd.c | 8 ++------
nshlib/nsh_fscmds.c | 6 ++----
nshlib/nsh_parse.c | 4 ++++
8 files changed, 40 insertions(+), 23 deletions(-)
diff --git a/nshlib/Kconfig b/nshlib/Kconfig
index 8adde6c78..793c9daf3 100644
--- a/nshlib/Kconfig
+++ b/nshlib/Kconfig
@@ -377,6 +377,10 @@ config NSH_DISABLE_HELP
bool "Disable help"
default DEFAULT_SMALL
+config NSH_DISABLE_ERROR_PRINT
+ bool "Disable NSH Error Printing"
+ default DEFAULT_SMALL
+
config NSH_DISABLE_HEXDUMP
bool "Disable hexdump"
default DEFAULT_SMALL
diff --git a/nshlib/nsh_alias.c b/nshlib/nsh_alias.c
index 3a819dd02..b6ef0c753 100644
--- a/nshlib/nsh_alias.c
+++ b/nshlib/nsh_alias.c
@@ -47,9 +47,13 @@
#define alias_head(list) (FAR struct nsh_alias_s *)sq_peek(list)
#define alias_remfirst(list) (FAR struct nsh_alias_s *)sq_remfirst(list)
-/****************************************************************************
- * Private Types
- ****************************************************************************/
+/* Alias message format */
+
+#define g_savefail_format "alias %s='%s' failed\n"
+
+/* Common for both alias / unalias */
+
+#define g_noalias_format "%s: %s not found\n"
/****************************************************************************
* Private Data
@@ -58,11 +62,6 @@
/* Alias message format */
static const char g_aliasfmt[] = "alias %s='%s'\n";
-static const char g_savefailfmt[] = "alias %s='%s' failed\n";
-
-/* Common for both alias / unalias */
-
-static const char g_noaliasfmt[] = "%s: %s not found\n";
/****************************************************************************
* Private Functions
@@ -348,7 +347,7 @@ int cmd_alias(FAR struct nsh_vtbl_s *vtbl, int argc, FAR
char **argv)
ret = alias_save(vtbl, *arg, value);
if (ret < 0)
{
- nsh_error(vtbl, g_savefailfmt, *arg, value);
+ nsh_error(vtbl, g_savefail_format, *arg, value);
}
}
else if ((alias = alias_find(vtbl, *arg)) != NULL)
@@ -361,7 +360,7 @@ int cmd_alias(FAR struct nsh_vtbl_s *vtbl, int argc, FAR
char **argv)
{
/* Nothing found */
- nsh_error(vtbl, g_noaliasfmt, "alias", *arg);
+ nsh_error(vtbl, g_noalias_format, "alias", *arg);
ret = -ENOENT;
}
}
@@ -429,7 +428,7 @@ int cmd_unalias(FAR struct nsh_vtbl_s *vtbl, int argc, FAR
char **argv)
{
/* Nothing found */
- nsh_error(vtbl, g_noaliasfmt, "unalias", *arg);
+ nsh_error(vtbl, g_noalias_format, "unalias", *arg);
ret = -ENOENT;
}
}
diff --git a/nshlib/nsh_console.c b/nshlib/nsh_console.c
index 7d29749b1..2fd1c9c12 100644
--- a/nshlib/nsh_console.c
+++ b/nshlib/nsh_console.c
@@ -63,8 +63,10 @@ static int nsh_consoleioctl(FAR struct nsh_vtbl_s *vtbl,
int cmd, unsigned long arg);
static int nsh_consoleoutput(FAR struct nsh_vtbl_s *vtbl,
FAR const char *fmt, ...) printf_like(2, 3);
+#ifndef CONFIG_NSH_DISABLE_ERROR_PRINT
static int nsh_erroroutput(FAR struct nsh_vtbl_s *vtbl,
FAR const char *fmt, ...) printf_like(2, 3);
+#endif
static FAR char *nsh_consolelinebuffer(FAR struct nsh_vtbl_s *vtbl);
static void nsh_consoleredirect(FAR struct nsh_vtbl_s *vtbl, int fd,
FAR uint8_t *save);
@@ -176,6 +178,7 @@ static int nsh_consoleoutput(FAR struct nsh_vtbl_s *vtbl,
*
****************************************************************************/
+#ifndef CONFIG_NSH_DISABLE_ERROR_PRINT
static int nsh_erroroutput(FAR struct nsh_vtbl_s *vtbl,
FAR const char *fmt, ...)
{
@@ -189,6 +192,7 @@ static int nsh_erroroutput(FAR struct nsh_vtbl_s *vtbl,
return ret;
}
+#endif
/****************************************************************************
* Name: nsh_consolelinebuffer
@@ -368,7 +372,9 @@ FAR struct console_stdio_s *nsh_newconsole(bool isctty)
pstate->cn_vtbl.write = nsh_consolewrite;
pstate->cn_vtbl.ioctl = nsh_consoleioctl;
pstate->cn_vtbl.output = nsh_consoleoutput;
+#ifndef CONFIG_NSH_DISABLE_ERROR_PRINT
pstate->cn_vtbl.error = nsh_erroroutput;
+#endif
pstate->cn_vtbl.linebuffer = nsh_consolelinebuffer;
pstate->cn_vtbl.exit = nsh_consoleexit;
pstate->cn_vtbl.isctty = isctty;
diff --git a/nshlib/nsh_console.h b/nshlib/nsh_console.h
index bb376e01d..a9a382045 100644
--- a/nshlib/nsh_console.h
+++ b/nshlib/nsh_console.h
@@ -58,6 +58,15 @@
# define nsh_output vtbl->output
#endif
+#ifdef CONFIG_NSH_DISABLE_ERROR_PRINT
+# undef nsh_error
+# ifdef CONFIG_CPP_HAVE_VARARGS
+# define nsh_error(v, ...) (void)(v)
+# else
+# define nsh_error (void)(vtbl)
+# endif
+#endif
+
/* Size of info to be saved in call to nsh_redirect
* See struct serialsave_s in nsh_console.c
*/
@@ -106,8 +115,10 @@ struct nsh_vtbl_s
ssize_t (*write)(FAR struct nsh_vtbl_s *vtbl, FAR const void *buffer,
size_t nbytes);
int (*ioctl)(FAR struct nsh_vtbl_s *vtbl, int cmd, unsigned long arg);
+#ifndef CONFIG_NSH_DISABLE_ERROR_PRINT
int (*error)(FAR struct nsh_vtbl_s *vtbl, FAR const char *fmt, ...)
printf_like(2, 3);
+#endif
int (*output)(FAR struct nsh_vtbl_s *vtbl, FAR const char *fmt, ...)
printf_like(2, 3);
FAR char *(*linebuffer)(FAR struct nsh_vtbl_s *vtbl);
diff --git a/nshlib/nsh_dbgcmds.c b/nshlib/nsh_dbgcmds.c
index df6709a88..ada21293b 100644
--- a/nshlib/nsh_dbgcmds.c
+++ b/nshlib/nsh_dbgcmds.c
@@ -419,9 +419,8 @@ int cmd_hexdump(FAR struct nsh_vtbl_s *vtbl, int argc, FAR
char **argv)
if (nbytesread < 0)
{
- int errval = errno;
nsh_error(vtbl, g_fmtcmdfailed, "hexdump", "read",
- NSH_ERRNO_OF(errval));
+ NSH_ERRNO_OF(errno));
ret = ERROR;
break;
}
diff --git a/nshlib/nsh_ddcmd.c b/nshlib/nsh_ddcmd.c
index 1d25b2ad7..7b005d3d2 100644
--- a/nshlib/nsh_ddcmd.c
+++ b/nshlib/nsh_ddcmd.c
@@ -60,6 +60,8 @@
#undef CAN_PIPE_FROM_STD
+#define g_dd "dd"
+
/****************************************************************************
* Private Types
****************************************************************************/
@@ -79,12 +81,6 @@ struct dd_s
FAR uint8_t *buffer; /* Buffer of data to write to the output file */
};
-/****************************************************************************
- * Private Data
- ****************************************************************************/
-
-static const char g_dd[] = "dd";
-
/****************************************************************************
* Private Functions
****************************************************************************/
diff --git a/nshlib/nsh_fscmds.c b/nshlib/nsh_fscmds.c
index 0c84cd5b4..10c4fbca2 100644
--- a/nshlib/nsh_fscmds.c
+++ b/nshlib/nsh_fscmds.c
@@ -2002,7 +2002,6 @@ int cmd_cmp(FAR struct nsh_vtbl_s *vtbl, int argc, FAR
char **argv)
FAR char *path1 = NULL;
FAR char *path2 = NULL;
- off_t total_read = 0;
int fd1 = -1;
int fd2 = -1;
int ret = ERROR;
@@ -2065,14 +2064,13 @@ int cmd_cmp(FAR struct nsh_vtbl_s *vtbl, int argc, FAR
char **argv)
goto errout_with_fd2;
}
- total_read += nbytesread1 > nbytesread2 ? nbytesread2 : nbytesread1;
-
/* Compare the file data */
if (nbytesread1 != nbytesread2 ||
memcmp(buf1, buf2, nbytesread1) != 0)
{
- nsh_error(vtbl, "files differ: byte %" PRIuOFF "\n", total_read);
+ nsh_error(vtbl, "files differ: byte %zd\n",
+ nbytesread1 > nbytesread2 ? nbytesread2 : nbytesread1);
goto errout_with_fd2;
}
diff --git a/nshlib/nsh_parse.c b/nshlib/nsh_parse.c
index 4f1a3b015..fb57ed3e3 100644
--- a/nshlib/nsh_parse.c
+++ b/nshlib/nsh_parse.c
@@ -1796,12 +1796,14 @@ static FAR char *nsh_argument(FAR struct nsh_vtbl_s
*vtbl,
{
/* No terminator found, get out */
+#ifndef CONFIG_NSH_DISABLE_ERROR_PRINT
char qterm[2];
qterm[0] = *pend;
qterm[1] = '\0';
nsh_error(vtbl, g_fmtnomatching, qterm, qterm);
+#endif
return NULL;
}
@@ -2867,12 +2869,14 @@ int nsh_parse(FAR struct nsh_vtbl_s *vtbl, FAR char
*cmdline)
{
/* No closing quotation mark! */
+#ifndef CONFIG_NSH_DISABLE_ERROR_PRINT
char qterm[2];
qterm[0] = *ptr;
qterm[1] = '\0';
nsh_error(vtbl, g_fmtnomatching, qterm, qterm);
+#endif
return ERROR;
}