summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server-tools/instance-manager/instance_options.cc10
-rw-r--r--server-tools/instance-manager/parse_output.cc17
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);