
On Wednesday 04 April 2012 03:12:27 Simon Glass wrote:
On Sun, Apr 1, 2012 at 12:48 PM, Mike Frysinger wrote:
On Saturday 31 March 2012 03:30:55 Simon Glass wrote:
--- a/common/cmd_pxe.c +++ b/common/cmd_pxe.c
+int run_command_list(const char *cmd, int len, int flag) +{
int need_buff = 1;
char *buff = (char *)cmd; /* cast away const */
int rcode = 0;
if (len == -1) {
len = strlen(cmd);
+#ifdef CONFIG_SYS_HUSH_PARSER
/* hush will never change our string */
need_buff = 0;
+#else
/* the built-in parser will change our string if it sees
\n */ + need_buff = strchr(cmd, '\n') != NULL; +#endif
}
we have memchr(), so you should be able to split the len==-1 and the need_buff logic into two sep steps
Are you saying that we should do this check if len is not -1 also?
I am only doing it when len is not specified, since if a length is provided we must allocate. This is used by the source command, which does not necessary have a nul-terminated string.
looks to me like it should be: int need_buff;
if (len == -1) len = strlen(cmd); #ifdef CONFIG_SYS_HUSH_PARSER need_buff = 0; #else need_buff = memchr(cmd, '\n', len) != NULL; #endif if (need_buff) { ... }
also, should you handle the case where '\n' is the very last char ? or not bother ?
Do you mean not allocate in that case? I don't think it is a common situation is it?
i don't know how commands get passed down (as i've never poked that area before) which is why i'm asking -mike