diff options
author | unknown <petr@mysql.com> | 2005-02-13 15:13:33 +0300 |
---|---|---|
committer | unknown <petr@mysql.com> | 2005-02-13 15:13:33 +0300 |
commit | 5bd607785a1f72b826831ab45c99d75b69846531 (patch) | |
tree | 0416b3a77d516d448dfd5239dadc5bf9e7583bcc /server-tools | |
parent | dce2554f9130920ab18e4e31432df7d6ca165ee0 (diff) | |
download | mariadb-git-5bd607785a1f72b826831ab45c99d75b69846531.tar.gz |
various fixes
server-tools/instance-manager/buffer.cc:
use my_realloc instead of realloc
server-tools/instance-manager/buffer.h:
use my_malloc instead of malloc
server-tools/instance-manager/commands.cc:
No need to send a buffer if there were some error while writing to it
server-tools/instance-manager/instance_options.cc:
cleanup
server-tools/instance-manager/manager.cc:
check sigwait return value
server-tools/instance-manager/parse_output.cc:
fixed a bug, found with valgrind
Diffstat (limited to 'server-tools')
-rw-r--r-- | server-tools/instance-manager/buffer.cc | 8 | ||||
-rw-r--r-- | server-tools/instance-manager/buffer.h | 3 | ||||
-rw-r--r-- | server-tools/instance-manager/commands.cc | 16 | ||||
-rw-r--r-- | server-tools/instance-manager/instance_options.cc | 6 | ||||
-rw-r--r-- | server-tools/instance-manager/manager.cc | 9 | ||||
-rw-r--r-- | server-tools/instance-manager/parse_output.cc | 17 |
6 files changed, 38 insertions, 21 deletions
diff --git a/server-tools/instance-manager/buffer.cc b/server-tools/instance-manager/buffer.cc index 3a2a818e478..aaed161838d 100644 --- a/server-tools/instance-manager/buffer.cc +++ b/server-tools/instance-manager/buffer.cc @@ -81,10 +81,10 @@ int Buffer::reserve(uint position, uint len_arg) if (position + len_arg>= buffer_size) { - buffer= (char *) realloc(buffer, - min(MAX_BUFFER_SIZE, - max((uint) (buffer_size*1.5), - position + len_arg))); + buffer= (char *) my_realloc(buffer, + min(MAX_BUFFER_SIZE, + max((uint) (buffer_size*1.5), + position + len_arg)), MYF(0)); if (buffer == NULL) goto err; buffer_size= (uint) (buffer_size*1.5); diff --git a/server-tools/instance-manager/buffer.h b/server-tools/instance-manager/buffer.h index 260a9ef92f8..85dd210cac2 100644 --- a/server-tools/instance-manager/buffer.h +++ b/server-tools/instance-manager/buffer.h @@ -17,6 +17,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include <my_global.h> +#include <my_sys.h> #ifdef __GNUC__ #pragma interface @@ -45,7 +46,7 @@ public: /* As append() will invokes realloc() anyway, it's ok if malloc returns 0 */ - if (!(buffer= (char*) malloc(buffer_size))) + if (!(buffer= (char*) my_malloc(buffer_size, MYF(0)))) buffer_size= 0; } diff --git a/server-tools/instance-manager/commands.cc b/server-tools/instance-manager/commands.cc index 3f38f21b008..4667e76bfd6 100644 --- a/server-tools/instance-manager/commands.cc +++ b/server-tools/instance-manager/commands.cc @@ -184,8 +184,8 @@ int Show_instance_status::do_command(struct st_net *net, } - if (my_net_write(net, send_buff.buffer, (uint) position) || - send_buff.is_error()) + if (send_buff.is_error() || + my_net_write(net, send_buff.buffer, (uint) position)) goto err; } @@ -271,8 +271,8 @@ int Show_instance_options::do_command(struct st_net *net, store_to_string(&send_buff, (char *) instance->options.mysqld_path, &position); - if (my_net_write(net, send_buff.buffer, (uint) position) || - send_buff.is_error()) + if (send_buff.is_error() || + my_net_write(net, send_buff.buffer, (uint) position)) goto err; } @@ -281,8 +281,8 @@ int Show_instance_options::do_command(struct st_net *net, position= 0; store_to_string(&send_buff, (char *) "nonguarded", &position); store_to_string(&send_buff, "", &position); - if (my_net_write(net, send_buff.buffer, (uint) position) || - send_buff.is_error()) + if (send_buff.is_error() || + my_net_write(net, send_buff.buffer, (uint) position)) goto err; } @@ -299,8 +299,8 @@ int Show_instance_options::do_command(struct st_net *net, store_to_string(&send_buff, option_value + 1, &position); /* join name and the value into the same option again */ *option_value= '='; - if (my_net_write(net, send_buff.buffer, (uint) position) || - send_buff.is_error()) + if (send_buff.is_error() || + my_net_write(net, send_buff.buffer, (uint) position)) goto err; } } diff --git a/server-tools/instance-manager/instance_options.cc b/server-tools/instance-manager/instance_options.cc index ab97c86316b..7c41a556cc4 100644 --- a/server-tools/instance-manager/instance_options.cc +++ b/server-tools/instance-manager/instance_options.cc @@ -80,9 +80,7 @@ void Instance_options::get_pid_filename(char *result) char datadir[MAX_PATH_LEN]; if (mysqld_datadir == NULL) - { get_default_option(datadir, sizeof(datadir), "--datadir"); - } else strxnmov(datadir, MAX_PATH_LEN - 1, strchr(mysqld_datadir, '=') + 1, "/", NullS); @@ -106,8 +104,8 @@ pid_t Instance_options::get_pid() FILE *pid_file_stream; /* get the pid */ - if (pid_file_stream= my_fopen(pid_file_with_path, - O_RDONLY | O_BINARY, MYF(0))) + if ((pid_file_stream= my_fopen(pid_file_with_path, + O_RDONLY | O_BINARY, MYF(0))) != NULL) { pid_t pid; diff --git a/server-tools/instance-manager/manager.cc b/server-tools/instance-manager/manager.cc index af8dac47dca..87ad938615f 100644 --- a/server-tools/instance-manager/manager.cc +++ b/server-tools/instance-manager/manager.cc @@ -171,7 +171,14 @@ void manager(const Options &options) while (!shutdown_complete) { - sigwait(&mask, &signo); + int status= 0; + + if (status= my_sigwait(&mask, &signo)) + { + log_error("sigwait() failed"); + goto err; + } + switch (signo) { case THR_SERVER_ALARM: diff --git a/server-tools/instance-manager/parse_output.cc b/server-tools/instance-manager/parse_output.cc index 4276062caf2..317970d2047 100644 --- a/server-tools/instance-manager/parse_output.cc +++ b/server-tools/instance-manager/parse_output.cc @@ -36,6 +36,10 @@ DESCRIPTION Parse output of the "command". Find the "word" and return the next one + + RETURN + 0 - ok + 1 - error occured */ int parse_output_and_get_value(const char *command, const char *word, @@ -49,7 +53,8 @@ int parse_output_and_get_value(const char *command, const char *word, wordlen= strlen(word); - output= popen(command, "r"); + if ((output= popen(command, "r")) == NULL) + goto err; /* We want fully buffered stream. We also want system to @@ -69,15 +74,18 @@ int parse_output_and_get_value(const char *command, const char *word, these are '/', '-' and '.' in the path expressions and filenames) */ get_word((const char **) &linep, &lineword_len, NONSPACE); - if (!strncmp(word, linep, wordlen) && *result != '\0') + if (!strncmp(word, linep, wordlen)) { /* If we have found the word, return the next one. This is usually an option value. */ + linep+= lineword_len; /* swallow the previous one */ get_word((const char **) &linep, &lineword_len, NONSPACE); - DBUG_ASSERT(result_len > lineword_len); + if (result_len <= lineword_len) + goto err; strncpy(result, linep, lineword_len); + result[lineword_len]= '\0'; goto pclose; } } @@ -87,4 +95,7 @@ pclose: return 1; return 0; + +err: + return 1; } |