diff options
author | Alexey Botchkov <holyfoot@mysql.com> | 2008-08-23 07:47:43 +0500 |
---|---|---|
committer | Alexey Botchkov <holyfoot@mysql.com> | 2008-08-23 07:47:43 +0500 |
commit | 491dc13898e37c04f02906554d29e4449515381c (patch) | |
tree | ee21c0f34bb510966b5ed546cb41503309d9220a /sql/sql_parse.cc | |
parent | 099a80d05a03f80a7310769f2b7b13f875ef24f9 (diff) | |
parent | ec524d50a86b6fb75dc3dc5704fbed34568aa35c (diff) | |
download | mariadb-git-491dc13898e37c04f02906554d29e4449515381c.tar.gz |
merging
Diffstat (limited to 'sql/sql_parse.cc')
-rw-r--r-- | sql/sql_parse.cc | 27 |
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 |