diff options
author | monty@work.mysql.com <> | 2001-06-02 00:20:06 +0200 |
---|---|---|
committer | monty@work.mysql.com <> | 2001-06-02 00:20:06 +0200 |
commit | a3e99bcd8446e22fee381e955aeaccbb34ab14d8 (patch) | |
tree | a540423a75bb6e93847b96e243e679e5f62bda3c /mysys | |
parent | ef8d161dead7286f923bfcc3df4c2810784f1c9e (diff) | |
parent | 18c02a05fb7e93c857146b6414015d6418ced568 (diff) | |
download | mariadb-git-a3e99bcd8446e22fee381e955aeaccbb34ab14d8.tar.gz |
merge
Diffstat (limited to 'mysys')
-rw-r--r-- | mysys/my_symlink2.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/mysys/my_symlink2.c b/mysys/my_symlink2.c index 9fcd993ac1f..f1e90abaa9b 100644 --- a/mysys/my_symlink2.c +++ b/mysys/my_symlink2.c @@ -87,13 +87,13 @@ int my_delete_with_symlink(const char *name, myf MyFlags) int my_rename_with_symlink(const char *from, const char *to, myf MyFlags) { -#ifdef HAVE_READLINK +#ifndef HAVE_READLINK return my_rename(from, to, MyFlags); #else char link_name[FN_REFLEN], tmp_name[FN_REFLEN]; int was_symlink= (!my_disable_symlinks && - !my_readlink(link_name, name, MYF(0))); - int result; + !my_readlink(link_name, from, MYF(0))); + int result=0; DBUG_ENTER("my_rename_with_symlink"); if (!was_symlink) @@ -105,7 +105,7 @@ int my_rename_with_symlink(const char *from, const char *to, myf MyFlags) /* Create new symlink */ if (my_symlink(tmp_name, to, MyFlags)) - DBUG_RETURN(-1); + DBUG_RETURN(1); /* Rename symlinked file if the base name didn't change. @@ -115,18 +115,23 @@ int my_rename_with_symlink(const char *from, const char *to, myf MyFlags) if (strcmp(link_name, tmp_name) && my_rename(link_name, tmp_name, MyFlags)) { + int save_errno=my_errno; my_delete(to, MyFlags); /* Remove created symlink */ - DBUG_RETURN(-1); + my_errno=save_errno; + DBUG_RETURN(1); } /* Remove original symlink */ if (my_delete(from, MyFlags)) { + int save_errno=my_errno; /* Remove created link */ my_delete(to, MyFlags); /* Rename file back */ if (strcmp(link_name, tmp_name)) (void) my_rename(tmp_name, link_name, MyFlags); + my_errno=save_errno; + result= 1; } DBUG_RETURN(result); #endif /* HAVE_READLINK */ |