diff options
author | Administrador@light. <> | 2003-01-27 15:37:25 -0200 |
---|---|---|
committer | Administrador@light. <> | 2003-01-27 15:37:25 -0200 |
commit | 826993bba2c8e0ecb12e480b79e7eb952b790bec (patch) | |
tree | eb4415abb8afbbe8500e432982ee080e69d41c54 /sql/log.cc | |
parent | 30eb9c57550b6baf6f8ad541f2eef6da87ce94e1 (diff) | |
download | mariadb-git-826993bba2c8e0ecb12e480b79e7eb952b790bec.tar.gz |
Added option hostname.err
Diffstat (limited to 'sql/log.cc')
-rw-r--r-- | sql/log.cc | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/sql/log.cc b/sql/log.cc index 58f5298dad0..df39adf1cbe 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1568,3 +1568,49 @@ void sql_perror(const char *message) perror(message); #endif } + +bool flush_error_log() +{ + bool result=0; + if (log_error_file[0] != '\0') /* --log-error="" */ + { + char err_renamed[FN_REFLEN], *end; + end= strmake(err_renamed,log_error_file,FN_REFLEN-4); + strmov(end, "-old"); +#ifdef __WIN__ + char err_temp[FN_REFLEN+4]; + /* + On Windows is necessary a temporary file for to rename + the current error file. + */ + strmov(strmov(err_temp, err_renamed),"-tmp"); + (void) my_delete(err_temp, MYF(0)); + if (freopen(err_temp,"a+",stdout)) + { + freopen(err_temp,"a+",stderr); + (void) my_delete(err_renamed, MYF(0)); + my_rename(log_error_file,err_renamed,MYF(0)); + if (freopen(log_error_file,"a+",stdout)) + freopen(log_error_file,"a+",stderr); + int fd, bytes; + char buf[IO_SIZE]; + if ((fd = my_open(err_temp, O_RDONLY, MYF(0))) >= 0) + { + while ((bytes = (int) my_read(fd, (byte*) buf, IO_SIZE, MYF(0))) > 0) + my_fwrite(stderr, (byte*) buf, (uint) strlen(buf),MYF(0)); + my_close(fd, MYF(0)); + } + (void) my_delete(err_temp, MYF(0)); + } + else + result= 1; +#else + my_rename(log_error_file,err_renamed,MYF(0)); + if (freopen(log_error_file,"a+",stdout)) + freopen(log_error_file,"a+",stderr); + else + result= 1; +#endif + } + return result; +} |