Changeset - r21018:7703a9e06941
[Not reviewed]
master
0 2 0
rubidium - 11 years ago 2013-11-25 09:20:35
rubidium@openttd.org
(svn r26098) -Fix: close the log file when OpenTTD was forked and finally closed
2 files changed with 13 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/dedicated.cpp
Show inline comments
 
@@ -13,7 +13,8 @@
 

	
 
#ifdef ENABLE_NETWORK
 

	
 
char *_log_file; ///< File to reroute output of a forked OpenTTD to
 
char *_log_file = NULL; ///< File to reroute output of a forked OpenTTD to
 
FILE *_log_fd   = NULL; ///< File to reroute output of a forked OpenTTD to
 

	
 
#if defined(UNIX) && !defined(__MORPHOS__)
 

	
 
@@ -39,20 +40,18 @@ void DedicatedFork()
 
			exit(1);
 

	
 
		case 0: { // We're the child
 
			FILE *f;
 

	
 
			/* Open the log-file to log all stuff too */
 
			f = fopen(_log_file, "a");
 
			if (f == NULL) {
 
			_log_fd = fopen(_log_file, "a");
 
			if (_log_fd == NULL) {
 
				perror("Unable to open logfile");
 
				exit(1);
 
			}
 
			/* Redirect stdout and stderr to log-file */
 
			if (dup2(fileno(f), fileno(stdout)) == -1) {
 
			if (dup2(fileno(_log_fd), fileno(stdout)) == -1) {
 
				perror("Rerouting stdout");
 
				exit(1);
 
			}
 
			if (dup2(fileno(f), fileno(stderr)) == -1) {
 
			if (dup2(fileno(_log_fd), fileno(stderr)) == -1) {
 
				perror("Rerouting stderr");
 
				exit(1);
 
			}
src/openttd.cpp
Show inline comments
 
@@ -907,6 +907,13 @@ exit_normal:
 
	free(_ini_videodriver);
 
	free(_ini_blitter);
 

	
 
#ifdef ENABLE_NETWORK
 
	extern FILE *_log_fd;
 
	if (_log_fd != NULL) {
 
		fclose(_log_fd);
 
	}
 
#endif /* ENABLE_NETWORK */
 

	
 
	return ret;
 
}
 

	
0 comments (0 inline, 0 general)