diff options
author | ntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2007-12-29 13:51:48 +0000 |
---|---|---|
committer | ntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2007-12-29 13:51:48 +0000 |
commit | 6c9b804d6187edda4f46f8458deec0b17ec76bb9 (patch) | |
tree | bb557b729b05e00b4839b199e58e066cdfa4c4b5 /src/helper | |
parent | 2ec5bd2864e55654258070381ce58c126e9fbe7b (diff) | |
download | openocd_libswd-6c9b804d6187edda4f46f8458deec0b17ec76bb9.tar.gz openocd_libswd-6c9b804d6187edda4f46f8458deec0b17ec76bb9.tar.bz2 openocd_libswd-6c9b804d6187edda4f46f8458deec0b17ec76bb9.tar.xz openocd_libswd-6c9b804d6187edda4f46f8458deec0b17ec76bb9.zip |
- minimum autoconf 2.59 is now required and verified - due to issues with AS_HELP_STRING
- native win32 now handles WSAECONNRESET - no longer exits openocd
- qCRC packet now works correctly under cygwin (gdb compare-sections command)
- removed __USE_GNU define from gdbserver.c
- gdb qSupported packet is now handled, with this we are able to tell gdb packet size, memory map of target
- added new target script gdb_program_config - called before gdb flash programming
- new gdb server command gdb_memory_map (enable|disable> - default is disable
- new gdb server command gdb_flash_program (enable|disable> - default is disable
- gdb flash programming supported - vFlash packets
- image_elf_read_section now does not clear any remaining data, this was causing the gdb checksum to fail with certain files
- reformat of usbprog.c
- memory leak in command_print fixed
- updated texi doc to include new commands
- added gdb programming section to docs
git-svn-id: svn://svn.berlios.de/openocd/trunk@246 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/helper')
-rw-r--r-- | src/helper/command.c | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/src/helper/command.c b/src/helper/command.c index 44ead7cb..adaad109 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -200,25 +200,24 @@ 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; - 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; - } + 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 */ if (!*p) break; @@ -226,9 +225,9 @@ 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++; - + while (isspace(*p)) + p++; + inquote = 0; word_start = 0; } @@ -267,14 +266,23 @@ void command_print(command_context_t *context, char *format, ...) { /* increase buffer until it fits the whole string */ if (!(p = realloc(buffer, size += 4096))) + { + /* gotta free up */ + if (buffer) + free(buffer); return; + } buffer = p; } /* vsnprintf failed */ if (n < 0) + { + if (buffer) + free(buffer); return; + } p = buffer; |