author | rubidium |
Thu, 01 Feb 2007 15:49:12 +0000 | |
changeset 5893 | 7e431a4abebb |
parent 5584 | 1111b4d36e35 |
child 6125 | a6fff965707c |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
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 | 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 | 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 */ |