author | rubidium |
Tue, 06 Mar 2007 18:03:06 +0000 | |
changeset 6226 | e2e9607ea3cc |
parent 6125 | a6fff965707c |
child 6232 | 2c26bcc97fca |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
6125
a6fff965707c
(svn r8862) -Cleanup: doxygen changes, again. Mostly @files missing tags and a few comments style.
belugas
parents:
5584
diff
changeset
|
3 |
/** @file dedicated.cpp */ |
a6fff965707c
(svn r8862) -Cleanup: doxygen changes, again. Mostly @files missing tags and a few comments style.
belugas
parents:
5584
diff
changeset
|
4 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
5 |
#include "stdafx.h" |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
6 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
7 |
#ifdef ENABLE_NETWORK |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
8 |
|
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
|
9 |
#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
|
10 |
|
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
|
11 |
#include "openttd.h" |
2159
f6284cf5fab0
(svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents:
1959
diff
changeset
|
12 |
#include "variables.h" |
781
4c9177888196
(svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents:
774
diff
changeset
|
13 |
|
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
|
14 |
#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
|
15 |
#include <unistd.h> |
2177
b0f207d47f8e
(svn r2691) Separate dedicated video driver and fix bemidi declarations
tron
parents:
2163
diff
changeset
|
16 |
|
774
bb9ec520a1b1
(svn r1240) -Fix: OpenTTD once again compiles if ENABLE_NETWORK is disabled.
darkvater
parents:
770
diff
changeset
|
17 |
void DedicatedFork(void) |
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
18 |
{ |
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
19 |
/* Fork the program */ |
1406
f5da270a654f
(svn r1910) Move two variables out of variables.h which are only used locally
tron
parents:
1301
diff
changeset
|
20 |
pid_t pid = fork(); |
f5da270a654f
(svn r1910) Move two variables out of variables.h which are only used locally
tron
parents:
1301
diff
changeset
|
21 |
switch (pid) { |
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
22 |
case -1: |
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
23 |
perror("Unable to fork"); |
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
24 |
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
|
25 |
|
4b7408a29936
(svn r2818) Don't tell the world about a local variable which is only used once
tron
parents:
2195
diff
changeset
|
26 |
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
|
27 |
FILE* f; |
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
28 |
|
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
29 |
/* 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
|
30 |
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
|
31 |
if (f == NULL) { |
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
32 |
perror("Unable to open logfile"); |
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
33 |
exit(1); |
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
34 |
} |
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
35 |
/* 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
|
36 |
if (dup2(fileno(f), fileno(stdout)) == -1) { |
1626 | 37 |
perror("Rerouting stdout"); |
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
38 |
exit(1); |
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
39 |
} |
2294
4b7408a29936
(svn r2818) Don't tell the world about a local variable which is only used once
tron
parents:
2195
diff
changeset
|
40 |
if (dup2(fileno(f), fileno(stderr)) == -1) { |
1626 | 41 |
perror("Rerouting stderr"); |
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
42 |
exit(1); |
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
43 |
} |
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
44 |
break; |
2294
4b7408a29936
(svn r2818) Don't tell the world about a local variable which is only used once
tron
parents:
2195
diff
changeset
|
45 |
} |
4b7408a29936
(svn r2818) Don't tell the world about a local variable which is only used once
tron
parents:
2195
diff
changeset
|
46 |
|
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
47 |
default: |
6125
a6fff965707c
(svn r8862) -Cleanup: doxygen changes, again. Mostly @files missing tags and a few comments style.
belugas
parents:
5584
diff
changeset
|
48 |
/* We're the parent */ |
704
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
49 |
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
|
50 |
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
|
51 |
exit(0); |
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
52 |
} |
e843dd369938
(svn r1154) -Add: [Network] Forked dedicated server (start openttd with -Df) (GeniusDex)
truelight
parents:
702
diff
changeset
|
53 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
54 |
#endif |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
55 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
56 |
#else |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
57 |
|
774
bb9ec520a1b1
(svn r1240) -Fix: OpenTTD once again compiles if ENABLE_NETWORK is disabled.
darkvater
parents:
770
diff
changeset
|
58 |
void DedicatedFork(void) {} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
59 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff
changeset
|
60 |
#endif /* ENABLE_NETWORK */ |