summaryrefslogtreecommitdiff
path: root/sql/sql_parse.cc
diff options
context:
space:
mode:
authorAlexey Botchkov <holyfoot@mysql.com>2008-08-23 07:47:43 +0500
committerAlexey Botchkov <holyfoot@mysql.com>2008-08-23 07:47:43 +0500
commit491dc13898e37c04f02906554d29e4449515381c (patch)
treeee21c0f34bb510966b5ed546cb41503309d9220a /sql/sql_parse.cc
parent099a80d05a03f80a7310769f2b7b13f875ef24f9 (diff)
parentec524d50a86b6fb75dc3dc5704fbed34568aa35c (diff)
downloadmariadb-git-491dc13898e37c04f02906554d29e4449515381c.tar.gz
merging
Diffstat (limited to 'sql/sql_parse.cc')
-rw-r--r--sql/sql_parse.cc27
1 files changed, 17 insertions, 10 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index dfa8233a37f..5365d5a44d8 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -7413,11 +7413,12 @@ bool check_string_char_length(LEX_STRING *str, const char *err_msg,
0 ok
1 error
*/
+C_MODE_START
-bool test_if_data_home_dir(const char *dir)
+int test_if_data_home_dir(const char *dir)
{
- char path[FN_REFLEN], conv_path[FN_REFLEN];
- uint dir_len, home_dir_len= strlen(mysql_unpacked_real_data_home);
+ char path[FN_REFLEN];
+ uint dir_len;
DBUG_ENTER("test_if_data_home_dir");
if (!dir)
@@ -7425,24 +7426,30 @@ bool test_if_data_home_dir(const char *dir)
(void) fn_format(path, dir, "", "",
(MY_RETURN_REAL_PATH|MY_RESOLVE_SYMLINKS));
- dir_len= unpack_dirname(conv_path, dir);
-
- if (home_dir_len < dir_len)
+ dir_len= strlen(path);
+ if (mysql_unpacked_real_data_home_len<= dir_len)
{
+ if (dir_len > mysql_unpacked_real_data_home_len &&
+ path[mysql_unpacked_real_data_home_len] != FN_LIBCHAR)
+ DBUG_RETURN(0);
+
if (lower_case_file_system)
{
- if (!my_strnncoll(character_set_filesystem,
- (const uchar*) conv_path, home_dir_len,
+ if (!my_strnncoll(default_charset_info, (const uchar*) path,
+ mysql_unpacked_real_data_home_len,
(const uchar*) mysql_unpacked_real_data_home,
- home_dir_len))
+ mysql_unpacked_real_data_home_len))
DBUG_RETURN(1);
}
- else if (!memcmp(conv_path, mysql_unpacked_real_data_home, home_dir_len))
+ else if (!memcmp(path, mysql_unpacked_real_data_home,
+ mysql_unpacked_real_data_home_len))
DBUG_RETURN(1);
}
DBUG_RETURN(0);
}
+C_MODE_END
+
extern int MYSQLparse(void *thd); // from sql_yacc.cc