summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/my_sys.h1
-rw-r--r--mysys/mf_format.c8
-rw-r--r--sql/mysqld.cc7
3 files changed, 14 insertions, 2 deletions
diff --git a/include/my_sys.h b/include/my_sys.h
index 7f8b8a80a1c..acce118c7b8 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -100,6 +100,7 @@ extern int NEAR my_errno; /* Last error in mysys */
#define MY_RETURN_REAL_PATH 32 /* return full path for file */
#define MY_SAFE_PATH 64 /* Return NULL if too long path */
#define MY_RELATIVE_PATH 128 /* name is relative to 'dir' */
+#define MY_QUOTE_SPACES 256 /* quote when the path has spaces */
/* My seek flags */
#define MY_SEEK_SET 0
diff --git a/mysys/mf_format.c b/mysys/mf_format.c
index ab1904da162..36d3908d310 100644
--- a/mysys/mf_format.c
+++ b/mysys/mf_format.c
@@ -111,6 +111,14 @@ my_string fn_format(my_string to, const char *name, const char *dir,
strmov(buff,to);
(void) my_readlink(to, buff, MYF(0));
}
+ if ( flag & MY_QUOTE_SPACES)
+ if ( strchr(to, ' '))
+ {
+ char tmp_buff[FN_REFLEN];
+ tmp_buff[0]='"';
+ strxmov(tmp_buff+1,to,"\"",NullS);
+ strmov(to,tmp_buff);
+ }
DBUG_RETURN (to);
} /* fn_format */
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 9b8d12e845d..cbd8ebd350b 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -2559,7 +2559,8 @@ int main(int argc, char **argv)
{
char file_path[FN_REFLEN];
my_path(file_path, argv[0], ""); /* Find name in path */
- fn_format(file_path,argv[0],file_path,"",1+4+16); /* Force full path */
+ fn_format(file_path,argv[0],file_path,"",MY_REPLACE_DIR+
+ MY_UNPACK_FILENAME+MY_RESOLVE_SYMLINKS+MY_QUOTE_SPACES);
if (argc == 2)
{
@@ -2605,8 +2606,10 @@ int main(int argc, char **argv)
mysqld --install-manual mysqldopt --defaults-file=c:\miguel\my.ini
*/
uint length=strlen(file_path);
+ char tmp_path[FN_REFLEN];
+ fn_format(tmp_path,argv[3],tmp_path,"",MY_QUOTE_SPACES);
*strxnmov(file_path + length, sizeof(file_path)-length-2, " ",
- argv[3], " ", argv[2], NullS)= '\0';
+ tmp_path, " ", argv[2], NullS)= '\0';
if (!default_service_handling(argv, argv[2], argv[2], file_path))
return 0;
}