ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/daemon.c
Revision: 1.3
Committed: Sun Aug 13 17:16:04 2006 UTC (17 years, 9 months ago) by elmex
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +0 -0 lines
State: FILE REMOVED
Log Message:
Made server compile with C++.
Removed cfanim plugin and crossedit.
C++ here we come.

File Contents

# User Rev Content
1 root 1.1 /*
2     * static char *rcsid_daemon_c =
3 root 1.2 * "$Id$";
4 root 1.1 */
5    
6     /*
7     CrossFire, A Multiplayer game for X-windows
8    
9     Copyright (C) 2002 Mark Wedel & Crossfire Development Team
10     Copyright (C) 1992 Frank Tore Johansen
11    
12     This program is free software; you can redistribute it and/or modify
13     it under the terms of the GNU General Public License as published by
14     the Free Software Foundation; either version 2 of the License, or
15     (at your option) any later version.
16    
17     This program is distributed in the hope that it will be useful,
18     but WITHOUT ANY WARRANTY; without even the implied warranty of
19     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20     GNU General Public License for more details.
21    
22     You should have received a copy of the GNU General Public License
23     along with this program; if not, write to the Free Software
24     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25    
26     The author can be reached via e-mail to crossfire-devel@real-time.com
27     */
28    
29     /*
30     * BecomeDaemon.c
31     * shamelessly swiped from xdm source code.
32     * Appropriate copyrights kept, and hereby follow
33     * ERic mehlhaff, 3/11/92
34     *
35     * xdm - display manager daemon
36     *
37     * $XConsortium: daemon.c,v 1.5 89/01/20 10:43:49 jim Exp $
38     *
39     * Copyright 1988 Massachusetts Institute of Technology
40     *
41     * Permission to use, copy, modify, and distribute this software and its
42     * documentation for any purpose and without fee is hereby granted, provided
43     * that the above copyright notice appear in all copies and that both that
44     * copyright notice and this permission notice appear in supporting
45     * documentation, and that the name of M.I.T. not be used in advertising or
46     * publicity pertaining to distribution of the software without specific,
47     * written prior permission. M.I.T. makes no representations about the
48     * suitability of this software for any purpose. It is provided "as is"
49     * without express or implied warranty.
50     *
51     * Author: Keith Packard, MIT X Consortium
52     */
53    
54    
55     #include <global.h>
56     #ifndef __CEXTRACT__
57     #include <sproto.h>
58     #endif
59     #include <sys/ioctl.h>
60     #ifdef hpux
61     #include <sys/ptyio.h>
62     #endif
63    
64     #include <errno.h>
65     #include <stdio.h>
66     #include <sys/file.h>
67    
68     FILE *BecomeDaemon (char *filename)
69     {
70     FILE *logfile;
71     register int i;
72     int forkresult;
73    
74     if((logfile=fopen(filename,"a"))==NULL){
75     fprintf(stderr, "Couldn't create logfile %s: %s\n", filename, strerror_local(errno));
76     exit(0);
77     }
78     fputs("\n========================\n",logfile);
79     fputs("Begin New Server Session\n",logfile);
80     fputs("========================\n\n",logfile);
81     fflush(logfile);
82     /*
83     * fork so that the process goes into the background automatically. Also
84     * has a nice side effect of having the child process get inherited by
85     * init (pid 1).
86     */
87    
88     if ( (forkresult = fork ()) ){ /* if parent */
89     if(forkresult < 0 ){
90     perror("Fork error!");
91     }
92     exit (0); /* then no more work to do */
93     }
94    
95     /*
96     * Close standard file descriptors and get rid of controlling tty
97     */
98    
99     close (0);
100     close (1);
101     close (2);
102    
103     /*
104     * Set up the standard file descriptors.
105     */
106     (void) open ("/", O_RDONLY); /* root inode already in core */
107     (void) dup2 (0, 1);
108     (void) dup2 (0, 2);
109    
110     setsid();
111     return(logfile);
112     }