summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorunknown <cmiller@zippy.cornsilk.net>2006-08-14 10:02:28 -0400
committerunknown <cmiller@zippy.cornsilk.net>2006-08-14 10:02:28 -0400
commitbb2bc56f28293d55917879e9e9a1edea62107803 (patch)
treef27a8f7454d8cc8f0fbb9c0547650e2fee33845c /client
parentc0af010f29d7cabec603b8bc10f9cb955226f2ca (diff)
parent943543ba09e37502278454a70877fe467352e261 (diff)
downloadmariadb-git-bb2bc56f28293d55917879e9e9a1edea62107803.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into zippy.cornsilk.net:/home/cmiller/work/mysql/m50-maint-b21224
Diffstat (limited to 'client')
-rw-r--r--client/mysql_upgrade.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c
index 3288b627554..053eb86b051 100644
--- a/client/mysql_upgrade.c
+++ b/client/mysql_upgrade.c
@@ -149,17 +149,29 @@ static int create_defaults_file(const char *path, const char *our_defaults_path)
File our_defaults_file, defaults_file;
char buffer[512];
char *buffer_end;
+ int failed_to_open_count= 0;
int error;
/* check if the defaults file is needed at all */
if (!opt_password)
return 0;
- defaults_file= my_open(path, O_BINARY | O_CREAT | O_WRONLY,
+retry_open:
+ defaults_file= my_open(path, O_BINARY | O_CREAT | O_WRONLY | O_EXCL,
MYF(MY_FAE | MY_WME));
if (defaults_file < 0)
- return 1;
+ {
+ if (failed_to_open_count == 0)
+ {
+ remove(path);
+ failed_to_open_count+= 1;
+ goto retry_open;
+ }
+ else
+ return 1;
+ }
+
upgrade_defaults_created= 1;
if (our_defaults_path)
{