|
@@ -11,6 +11,7 @@
|
|
|
*/
|
|
|
#include <rtthread.h>
|
|
|
#include <string.h>
|
|
|
+#include <errno.h>
|
|
|
|
|
|
#ifdef RT_USING_FINSH
|
|
|
|
|
@@ -483,7 +484,7 @@ found_program:
|
|
|
|
|
|
int msh_exec(char *cmd, rt_size_t length)
|
|
|
{
|
|
|
- int cmd_ret;
|
|
|
+ int cmd_ret = 0;
|
|
|
|
|
|
/* strim the beginning of command */
|
|
|
while ((length > 0) && (*cmd == ' ' || *cmd == '\t'))
|
|
@@ -521,7 +522,8 @@ int msh_exec(char *cmd, rt_size_t length)
|
|
|
#ifdef RT_USING_SMART
|
|
|
/* exec from msh_exec , debug = 0*/
|
|
|
/* _msh_exec_lwp return is pid , <= 0 means failed */
|
|
|
- if (_msh_exec_lwp(0, cmd, length) > 0)
|
|
|
+ cmd_ret = _msh_exec_lwp(0, cmd, length);
|
|
|
+ if (cmd_ret > 0)
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
@@ -538,7 +540,16 @@ int msh_exec(char *cmd, rt_size_t length)
|
|
|
}
|
|
|
*tcmd = '\0';
|
|
|
}
|
|
|
- rt_kprintf("%s: command not found.\n", cmd);
|
|
|
+#ifdef RT_USING_SMART
|
|
|
+ if (cmd_ret == -EACCES)
|
|
|
+ {
|
|
|
+ rt_kprintf("%s: Permission denied.\n", cmd);
|
|
|
+ }
|
|
|
+ else
|
|
|
+#endif
|
|
|
+ {
|
|
|
+ rt_kprintf("%s: command not found.\n", cmd);
|
|
|
+ }
|
|
|
return -1;
|
|
|
}
|
|
|
|