Lines 124-129
int my_rename_with_symlink(const char *f
Link Here
|
124 |
int was_symlink= (!my_disable_symlinks && |
124 |
int was_symlink= (!my_disable_symlinks && |
125 |
!my_readlink(link_name, from, MYF(0))); |
125 |
!my_readlink(link_name, from, MYF(0))); |
126 |
int result=0; |
126 |
int result=0; |
|
|
127 |
int name_is_different; |
127 |
DBUG_ENTER("my_rename_with_symlink"); |
128 |
DBUG_ENTER("my_rename_with_symlink"); |
128 |
|
129 |
|
129 |
if (!was_symlink) |
130 |
if (!was_symlink) |
Lines 132-137
int my_rename_with_symlink(const char *f
Link Here
|
132 |
/* Change filename that symlink pointed to */ |
133 |
/* Change filename that symlink pointed to */ |
133 |
strmov(tmp_name, to); |
134 |
strmov(tmp_name, to); |
134 |
fn_same(tmp_name,link_name,1); /* Copy dir */ |
135 |
fn_same(tmp_name,link_name,1); /* Copy dir */ |
|
|
136 |
name_is_different= strcmp(link_name, tmp_name); |
137 |
if (name_is_different && !access(tmp_name, F_OK)) |
138 |
{ |
139 |
my_errno= EEXIST; |
140 |
if (MyFlags & MY_WME) |
141 |
my_error(EE_CANTCREATEFILE, MYF(0), tmp_name, EEXIST); |
142 |
DBUG_RETURN(1); |
143 |
} |
135 |
|
144 |
|
136 |
/* Create new symlink */ |
145 |
/* Create new symlink */ |
137 |
if (my_symlink(tmp_name, to, MyFlags)) |
146 |
if (my_symlink(tmp_name, to, MyFlags)) |
Lines 143-149
int my_rename_with_symlink(const char *f
Link Here
|
143 |
the same basename and different directories. |
152 |
the same basename and different directories. |
144 |
*/ |
153 |
*/ |
145 |
|
154 |
|
146 |
if (strcmp(link_name, tmp_name) && my_rename(link_name, tmp_name, MyFlags)) |
155 |
if (name_is_different && my_rename(link_name, tmp_name, MyFlags)) |
147 |
{ |
156 |
{ |
148 |
int save_errno=my_errno; |
157 |
int save_errno=my_errno; |
149 |
my_delete(to, MyFlags); /* Remove created symlink */ |
158 |
my_delete(to, MyFlags); /* Remove created symlink */ |