diff options
author | drath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2007-01-22 14:47:00 +0000 |
---|---|---|
committer | drath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2007-01-22 14:47:00 +0000 |
commit | 4fc97d3f2726efa147cfdb0c456eace51550e1e3 (patch) | |
tree | f6bbfc0aa3ceebdf723c23f84b3e764548c1add4 /src/helper | |
parent | adaed4c1c776f0830387eb86c3d81f00f240be6e (diff) | |
download | openocd+libswd-4fc97d3f2726efa147cfdb0c456eace51550e1e3.tar.gz openocd+libswd-4fc97d3f2726efa147cfdb0c456eace51550e1e3.tar.bz2 openocd+libswd-4fc97d3f2726efa147cfdb0c456eace51550e1e3.tar.xz openocd+libswd-4fc97d3f2726efa147cfdb0c456eace51550e1e3.zip |
- fix incorrect parsing of whitespace in command.c (thanks to Magnus Lundin)
- fix infinite recursion in target_init_handler (thanks to jw and Magnus Lundin)
- fix CFI flash handlign with buswidth < 32bit (thanks to Daniele Orio for reporting this)
- add support for reading JTAG device id (currently only as debug output on startup)
- cleaned up handling of EmbeddedICE registers. Supported functionality and register size now determined by EmbeddedICE version number.
- small cleanups/fixes
git-svn-id: svn://svn.berlios.de/openocd/trunk@124 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/helper')
-rw-r--r-- | src/helper/command.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/helper/command.c b/src/helper/command.c index ca08535a..dbf3f2aa 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -200,12 +200,23 @@ int parse_line(char *line, char *words[], int max_words) /* we're inside a word or quote, and reached its end*/ if (word_start) { - int len = p - word_start; - - /* copy the word */ - memcpy(words[nwords] = malloc(len + 1), word_start, len); - /* add terminating NUL */ - words[nwords++][len] = 0; + int len; + char *word_end=p; + /* This will handle extra whitespace within quotes */ + while (isspace(*word_start)&&(word_start<word_end)) + word_start++; + while (isspace(*(word_end-1))&&(word_start<word_end)) + word_end--; + + len = word_end - word_start; + + if (len>0) + { + /* copy the word */ + memcpy(words[nwords] = malloc(len + 1), word_start, len); + /* add terminating NUL */ + words[nwords++][len] = 0; + } } /* we're done parsing the line */ @@ -215,6 +226,8 @@ int parse_line(char *line, char *words[], int max_words) /* skip over trailing quote or whitespace*/ if (inquote || isspace(*p)) p++; + while (isspace(*p)) + p++; inquote = 0; word_start = 0; |