author | tron |
Sun, 24 Jul 2005 14:12:37 +0000 | |
changeset 2186 | 461a2aff3486 |
parent 2177 | 73d67828ea5e |
child 2195 | 8960c86bf103 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
3 |
#include "stdafx.h" |
1891
92a3b0aa0946
(svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents:
1829
diff
changeset
|
4 |
#include "openttd.h" |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
5 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
6 |
#ifdef ENABLE_NETWORK |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
7 |
|
2159
3b634157c3b2
(svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents:
1959
diff
changeset
|
8 |
#include "variables.h" |
781
9717ff353c17
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
9 |
|
9717ff353c17
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
10 |
#ifdef __OS2__ |
9717ff353c17
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
11 |
# include <sys/types.h> |
9717ff353c17
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
12 |
# include <unistd.h> |
9717ff353c17
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
13 |
#endif |
9717ff353c17
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
14 |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
15 |
#ifdef UNIX |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
16 |
# include <sys/types.h> |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
17 |
# include <unistd.h> |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
18 |
#endif |
2177
73d67828ea5e
(svn r2691) Separate dedicated video driver and fix bemidi declarations
tron
parents:
2163
diff
changeset
|
19 |
|
770
89dab23f04ca
(svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents:
736
diff
changeset
|
20 |
#ifdef __MORPHOS__ |
1290
862926d56497
(svn r1794) Make the dedicated server compile again under MorphOS (tokai)
tron
parents:
1114
diff
changeset
|
21 |
/* Voids the fork, option will be disabled for MorphOS build anyway, because |
862926d56497
(svn r1794) Make the dedicated server compile again under MorphOS (tokai)
tron
parents:
1114
diff
changeset
|
22 |
* MorphOS doesn't support forking (could only implemented with lots of code |
862926d56497
(svn r1794) Make the dedicated server compile again under MorphOS (tokai)
tron
parents:
1114
diff
changeset
|
23 |
* changes here). */ |
862926d56497
(svn r1794) Make the dedicated server compile again under MorphOS (tokai)
tron
parents:
1114
diff
changeset
|
24 |
int fork(void) { return -1; } |
862926d56497
(svn r1794) Make the dedicated server compile again under MorphOS (tokai)
tron
parents:
1114
diff
changeset
|
25 |
int dup2(int oldd, int newd) { return -1; } |
770
89dab23f04ca
(svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents:
736
diff
changeset
|
26 |
#endif |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
27 |
|
702
e8f37893243e
(svn r1152) -Add: [Network] Added signal handling (GeniusDex)
truelight
parents:
626
diff
changeset
|
28 |
#ifdef UNIX |
704
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
29 |
/* We want to fork our dedicated server */ |
774
258c11431acb
(svn r1240) -Fix: OpenTTD once again compiles if ENABLE_NETWORK is disabled.
darkvater
parents:
770
diff
changeset
|
30 |
void DedicatedFork(void) |
704
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
31 |
{ |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
32 |
/* Fork the program */ |
1406
2d5baabe4046
(svn r1910) Move two variables out of variables.h which are only used locally
tron
parents:
1301
diff
changeset
|
33 |
pid_t pid = fork(); |
2d5baabe4046
(svn r1910) Move two variables out of variables.h which are only used locally
tron
parents:
1301
diff
changeset
|
34 |
switch (pid) { |
704
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
35 |
case -1: |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
36 |
perror("Unable to fork"); |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
37 |
exit(1); |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
38 |
case 0: |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
39 |
// We're the child |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
40 |
|
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
41 |
/* Open the log-file to log all stuff too */ |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
42 |
_log_file_fd = fopen(_log_file, "a"); |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
43 |
if (!_log_file_fd) { |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
44 |
perror("Unable to open logfile"); |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
45 |
exit(1); |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
46 |
} |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
47 |
/* Redirect stdout and stderr to log-file */ |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
48 |
if (dup2(fileno(_log_file_fd), fileno(stdout)) == -1) { |
1626 | 49 |
perror("Rerouting stdout"); |
704
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
50 |
exit(1); |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
51 |
} |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
52 |
if (dup2(fileno(_log_file_fd), fileno(stderr)) == -1) { |
1626 | 53 |
perror("Rerouting stderr"); |
704
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
54 |
exit(1); |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
55 |
} |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
56 |
break; |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
57 |
default: |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
58 |
// We're the parent |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
59 |
printf("Loading dedicated server...\n"); |
1406
2d5baabe4046
(svn r1910) Move two variables out of variables.h which are only used locally
tron
parents:
1301
diff
changeset
|
60 |
printf(" - Forked to background with pid %d\n", pid); |
704
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
61 |
exit(0); |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
62 |
} |
a526dc96fbfc
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
63 |
} |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
64 |
#endif |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
65 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
66 |
#else |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
67 |
|
774
258c11431acb
(svn r1240) -Fix: OpenTTD once again compiles if ENABLE_NETWORK is disabled.
darkvater
parents:
770
diff
changeset
|
68 |
void DedicatedFork(void) {} |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
69 |
|
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
70 |
#endif /* ENABLE_NETWORK */ |