* "./${db}/${table}" ==> "${db}.mrn" * "./${db}/" ==> "${db}.mrn" * "/tmp/mysql-test/var/tmp/mysqld.1/#sql27c5_1_0" ==> * "/tmp/mysql-test/var/tmp/mysqld.1/#sql27c5_1_0.mrn" */
| 49 | * "/tmp/mysql-test/var/tmp/mysqld.1/#sql27c5_1_0.mrn" |
| 50 | */ |
| 51 | const char *PathMapper::db_path() { |
| 52 | if (db_path_[0] != '\0') { |
| 53 | return db_path_; |
| 54 | } |
| 55 | |
| 56 | if (original_mysql_path_[0] == FN_CURLIB && |
| 57 | original_mysql_path_[1] == FN_LIBCHAR) { |
| 58 | if (path_prefix_) { |
| 59 | strcpy(db_path_, path_prefix_); |
| 60 | } |
| 61 | |
| 62 | int i = 2, j = strlen(db_path_), len; |
| 63 | len = strlen(original_mysql_path_); |
| 64 | while (original_mysql_path_[i] != FN_LIBCHAR && i < len) { |
| 65 | db_path_[j++] = original_mysql_path_[i++]; |
| 66 | } |
| 67 | db_path_[j] = '\0'; |
| 68 | } else if (mysql_data_home_path_) { |
| 69 | int len = strlen(original_mysql_path_); |
| 70 | int mysql_data_home_len = strlen(mysql_data_home_path_); |
| 71 | if (len > mysql_data_home_len && |
| 72 | !strncmp(original_mysql_path_, |
| 73 | mysql_data_home_path_, |
| 74 | mysql_data_home_len)) { |
| 75 | int i = mysql_data_home_len, j; |
| 76 | if (path_prefix_ && path_prefix_[0] == FN_LIBCHAR) { |
| 77 | strcpy(db_path_, path_prefix_); |
| 78 | j = strlen(db_path_); |
| 79 | } else { |
| 80 | memcpy(db_path_, mysql_data_home_path_, mysql_data_home_len); |
| 81 | if (path_prefix_) { |
| 82 | if (path_prefix_[0] == FN_CURLIB && |
| 83 | path_prefix_[1] == FN_LIBCHAR) { |
| 84 | strcpy(&db_path_[mysql_data_home_len], &path_prefix_[2]); |
| 85 | } else { |
| 86 | strcpy(&db_path_[mysql_data_home_len], path_prefix_); |
| 87 | } |
| 88 | j = strlen(db_path_); |
| 89 | } else { |
| 90 | j = mysql_data_home_len; |
| 91 | } |
| 92 | } |
| 93 | |
| 94 | while (original_mysql_path_[i] != FN_LIBCHAR && i < len) { |
| 95 | db_path_[j++] = original_mysql_path_[i++]; |
| 96 | } |
| 97 | if (i == len) { |
| 98 | memcpy(db_path_, original_mysql_path_, len); |
| 99 | } else { |
| 100 | db_path_[j] = '\0'; |
| 101 | } |
| 102 | } else { |
| 103 | strcpy(db_path_, original_mysql_path_); |
| 104 | } |
| 105 | } else { |
| 106 | strcpy(db_path_, original_mysql_path_); |
| 107 | } |
| 108 | strcat(db_path_, MRN_DB_FILE_SUFFIX); |
no outgoing calls