diff options
-rw-r--r-- | server-tools/instance-manager/instance_options.cc | 10 | ||||
-rw-r--r-- | server-tools/instance-manager/parse_output.cc | 17 |
2 files changed, 21 insertions, 6 deletions
diff --git a/server-tools/instance-manager/instance_options.cc b/server-tools/instance-manager/instance_options.cc index 25609f489af..850530b35fc 100644 --- a/server-tools/instance-manager/instance_options.cc +++ b/server-tools/instance-manager/instance_options.cc @@ -47,14 +47,12 @@ static inline int create_mysqld_command(Buffer *buf, if (buf->get_size()) /* malloc succeeded */ { #ifdef __WIN__ - buf->append(position, "\"", 1); - position++; + buf->append(position++, "\"", 1); #endif buf->append(position, mysqld_path_str, mysqld_path_len); position+= mysqld_path_len; #ifdef __WIN__ - buf->append(position, "\"", 1); - position++; + buf->append(position++, "\"", 1); #endif /* here the '\0' character is copied from the option string */ buf->append(position, option, option_len); @@ -340,6 +338,10 @@ int Instance_options::complete_initialization(const char *default_path, if (!mysqld_path && !(mysqld_path= strdup_root(&alloc, default_path))) goto err; + // it's safe to cast this to char* since this is a buffer we are allocating + char* end= convert_dirname((char*)mysqld_path, mysqld_path, NullS); + end[-1] = 0; + mysqld_path_len= strlen(mysqld_path); if (mysqld_port) diff --git a/server-tools/instance-manager/parse_output.cc b/server-tools/instance-manager/parse_output.cc index b5af3cb83a7..96b0b0fbbc6 100644 --- a/server-tools/instance-manager/parse_output.cc +++ b/server-tools/instance-manager/parse_output.cc @@ -24,6 +24,20 @@ #include "portability.h" +void trim_space(const char **text, uint *word_len) +{ + const char* start = *text; + while (*start != 0 && *start == ' ') + start++; + *text = start; + + int len= strlen(start); + const char* end= start + len - 1; + while (end > start && (*end == ' ' || *end == '\r' || *end == '\n')) + end--; + *word_len= (end - start)+1; +} + /* Parse output of the given command @@ -85,14 +99,13 @@ int parse_output_and_get_value(const char *command, const char *word, Get the word, which might contain non-alphanumeric characters. (Usually these are '/', '-' and '.' in the path expressions and filenames) */ - get_word((const char **) &linep, &found_word_len, NONSPACE); if (!strncmp(word, linep, wordlen)) { /* If we have found the word, return the next one (this is usually an option value) or the whole line (if flag) */ - linep+= found_word_len; /* swallow the previous one */ + linep+= wordlen; /* swallow the previous one */ if (flag & GET_VALUE) { get_word((const char **) &linep, &found_word_len, NONSPACE); |