dedicated.c
author Darkvater
Mon, 31 Jul 2006 22:40:55 +0000
changeset 4204 3aa39be759f2
parent 2294 4b7408a29936
permissions -rw-r--r--
(svn r5688) - Forward-port the release-changes from the 0.4 branch back to trunk. This ensures an updated changelog, known-bugs, etc.
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2177
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2177
diff changeset
     2
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     3
#include "stdafx.h"
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     4
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     5
#ifdef ENABLE_NETWORK
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     6
2195
ed135f2dc5f8 (svn r2710) Simplify dedicated server code a bit and don't compile it at all, if network support ist disabled
tron
parents: 2186
diff changeset
     7
#if defined(UNIX) && !defined(__MORPHOS__)
ed135f2dc5f8 (svn r2710) Simplify dedicated server code a bit and don't compile it at all, if network support ist disabled
tron
parents: 2186
diff changeset
     8
ed135f2dc5f8 (svn r2710) Simplify dedicated server code a bit and don't compile it at all, if network support ist disabled
tron
parents: 2186
diff changeset
     9
#include "openttd.h"
2159
f6284cf5fab0 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 1959
diff changeset
    10
#include "variables.h"
781
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    11
2195
ed135f2dc5f8 (svn r2710) Simplify dedicated server code a bit and don't compile it at all, if network support ist disabled
tron
parents: 2186
diff changeset
    12
#include <sys/types.h>
ed135f2dc5f8 (svn r2710) Simplify dedicated server code a bit and don't compile it at all, if network support ist disabled
tron
parents: 2186
diff changeset
    13
#include <unistd.h>
2177
b0f207d47f8e (svn r2691) Separate dedicated video driver and fix bemidi declarations
tron
parents: 2163
diff changeset
    14
774
bb9ec520a1b1 (svn r1240) -Fix: OpenTTD once again compiles if ENABLE_NETWORK is disabled.
darkvater
parents: 770
diff changeset
    15
void DedicatedFork(void)
704
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    16
{
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    17
	/* Fork the program */
1406
f5da270a654f (svn r1910) Move two variables out of variables.h which are only used locally
tron
parents: 1301
diff changeset
    18
	pid_t pid = fork();
f5da270a654f (svn r1910) Move two variables out of variables.h which are only used locally
tron
parents: 1301
diff changeset
    19
	switch (pid) {
704
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    20
		case -1:
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    21
			perror("Unable to fork");
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    22
			exit(1);
2294
4b7408a29936 (svn r2818) Don't tell the world about a local variable which is only used once
tron
parents: 2195
diff changeset
    23
4b7408a29936 (svn r2818) Don't tell the world about a local variable which is only used once
tron
parents: 2195
diff changeset
    24
		case 0: { // We're the child
4b7408a29936 (svn r2818) Don't tell the world about a local variable which is only used once
tron
parents: 2195
diff changeset
    25
			FILE* f;
704
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    26
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    27
			/* Open the log-file to log all stuff too */
2294
4b7408a29936 (svn r2818) Don't tell the world about a local variable which is only used once
tron
parents: 2195
diff changeset
    28
			f = fopen(_log_file, "a");
4b7408a29936 (svn r2818) Don't tell the world about a local variable which is only used once
tron
parents: 2195
diff changeset
    29
			if (f == NULL) {
704
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    30
				perror("Unable to open logfile");
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    31
				exit(1);
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    32
			}
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    33
			/* Redirect stdout and stderr to log-file */
2294
4b7408a29936 (svn r2818) Don't tell the world about a local variable which is only used once
tron
parents: 2195
diff changeset
    34
			if (dup2(fileno(f), fileno(stdout)) == -1) {
1626
b0cda32b478a (svn r2130) Various spelling fixes in messages.
pasky
parents: 1614
diff changeset
    35
				perror("Rerouting stdout");
704
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    36
				exit(1);
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    37
			}
2294
4b7408a29936 (svn r2818) Don't tell the world about a local variable which is only used once
tron
parents: 2195
diff changeset
    38
			if (dup2(fileno(f), fileno(stderr)) == -1) {
1626
b0cda32b478a (svn r2130) Various spelling fixes in messages.
pasky
parents: 1614
diff changeset
    39
				perror("Rerouting stderr");
704
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    40
				exit(1);
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    41
			}
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    42
			break;
2294
4b7408a29936 (svn r2818) Don't tell the world about a local variable which is only used once
tron
parents: 2195
diff changeset
    43
		}
4b7408a29936 (svn r2818) Don't tell the world about a local variable which is only used once
tron
parents: 2195
diff changeset
    44
704
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    45
		default:
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    46
			// We're the parent
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    47
			printf("Loading dedicated server...\n");
1406
f5da270a654f (svn r1910) Move two variables out of variables.h which are only used locally
tron
parents: 1301
diff changeset
    48
			printf("  - Forked to background with pid %d\n", pid);
704
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    49
			exit(0);
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    50
	}
e843dd369938 (svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents: 702
diff changeset
    51
}
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    52
#endif
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    53
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    54
#else
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    55
774
bb9ec520a1b1 (svn r1240) -Fix: OpenTTD once again compiles if ENABLE_NETWORK is disabled.
darkvater
parents: 770
diff changeset
    56
void DedicatedFork(void) {}
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    57
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    58
#endif /* ENABLE_NETWORK */