summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
Diffstat (limited to 'mysys')
-rw-r--r--mysys/mf_format.c9
-rw-r--r--mysys/my_delete.c1
-rw-r--r--mysys/my_symlink2.c21
3 files changed, 23 insertions, 8 deletions
diff --git a/mysys/mf_format.c b/mysys/mf_format.c
index ebe6bfbe1e6..f90e646289f 100644
--- a/mysys/mf_format.c
+++ b/mysys/mf_format.c
@@ -96,14 +96,13 @@ my_string fn_format(my_string to, const char *name, const char *dsk,
#endif
(void) strmov(pos,ext); /* Don't convert extension */
}
- if (flag & 16)
+ if (flag & 32)
+ (void) my_realpath(to, to, MYF(flag & 32 ? 0 : MY_RESOLVE_LINK));
+ else if (flag & 16)
{
strmov(buff,to);
- my_readlink(to, buff, MYF(flag & 32 ? 0 : MY_RESOLVE_LINK));
+ (void) my_readlink(to, buff, MYF(0));
}
- else if (flag & 32)
- my_realpath(to, to, MYF(flag & 32 ? 0 : MY_RESOLVE_LINK));
-
DBUG_RETURN (to);
} /* fn_format */
diff --git a/mysys/my_delete.c b/mysys/my_delete.c
index 77d5f311418..dc1e292a893 100644
--- a/mysys/my_delete.c
+++ b/mysys/my_delete.c
@@ -16,7 +16,6 @@
MA 02111-1307, USA */
#include "mysys_priv.h"
-
#include "mysys_err.h"
int my_delete(const char *name, myf MyFlags)
diff --git a/mysys/my_symlink2.c b/mysys/my_symlink2.c
index f1e90abaa9b..e77815df12a 100644
--- a/mysys/my_symlink2.c
+++ b/mysys/my_symlink2.c
@@ -23,6 +23,7 @@
*/
#include "mysys_priv.h"
+#include "mysys_err.h"
#include <m_string.h>
File my_create_with_symlink(const char *linkname, const char *filename,
@@ -30,11 +31,27 @@ File my_create_with_symlink(const char *linkname, const char *filename,
{
File file;
int tmp_errno;
+ /* Test if we should create a link */
+ int create_link=(linkname && strcmp(linkname,filename));
DBUG_ENTER("my_create_with_symlink");
+
+ if (!(MyFlags & MY_DELETE_OLD))
+ {
+ if (!access(filename,F_OK))
+ {
+ my_error(EE_CANTCREATEFILE, MYF(0), filename, EEXIST);
+ DBUG_RETURN(-1);
+ }
+ if (create_link && !access(linkname,F_OK))
+ {
+ my_error(EE_CANTCREATEFILE, MYF(0), linkname, EEXIST);
+ DBUG_RETURN(-1);
+ }
+ }
+
if ((file=my_create(filename, createflags, access_flags, MyFlags)) >= 0)
{
- /* Test if we should create a link */
- if (linkname && strcmp(linkname,filename))
+ if (create_link)
{
/* Delete old link/file */
if (MyFlags & MY_DELETE_OLD)