1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

fix some issues with IM and long pathnames (with spaces)

This commit is contained in:
reggie@fedora.(none)
2005-10-31 13:31:06 -05:00
parent 1137a376a7
commit 53089ec4e4
2 changed files with 21 additions and 6 deletions

View File

@ -47,14 +47,12 @@ static inline int create_mysqld_command(Buffer *buf,
if (buf->get_size()) /* malloc succeeded */ if (buf->get_size()) /* malloc succeeded */
{ {
#ifdef __WIN__ #ifdef __WIN__
buf->append(position, "\"", 1); buf->append(position++, "\"", 1);
position++;
#endif #endif
buf->append(position, mysqld_path_str, mysqld_path_len); buf->append(position, mysqld_path_str, mysqld_path_len);
position+= mysqld_path_len; position+= mysqld_path_len;
#ifdef __WIN__ #ifdef __WIN__
buf->append(position, "\"", 1); buf->append(position++, "\"", 1);
position++;
#endif #endif
/* here the '\0' character is copied from the option string */ /* here the '\0' character is copied from the option string */
buf->append(position, option, option_len); 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))) if (!mysqld_path && !(mysqld_path= strdup_root(&alloc, default_path)))
goto err; 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); mysqld_path_len= strlen(mysqld_path);
if (mysqld_port) if (mysqld_port)

View File

@ -24,6 +24,20 @@
#include "portability.h" #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 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 Get the word, which might contain non-alphanumeric characters. (Usually
these are '/', '-' and '.' in the path expressions and filenames) these are '/', '-' and '.' in the path expressions and filenames)
*/ */
get_word((const char **) &linep, &found_word_len, NONSPACE);
if (!strncmp(word, linep, wordlen)) if (!strncmp(word, linep, wordlen))
{ {
/* /*
If we have found the word, return the next one (this is usually If we have found the word, return the next one (this is usually
an option value) or the whole line (if flag) 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) if (flag & GET_VALUE)
{ {
get_word((const char **) &linep, &found_word_len, NONSPACE); get_word((const char **) &linep, &found_word_len, NONSPACE);