X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=bacula%2Fsrc%2Flib%2Fdaemon.c;h=3a25812c1ecdfeff1d240a890f8793cc93f9332c;hb=f5e7d95ce741ea5c296d605b2f411805a65462d6;hp=35b42f2da1a0b3a61823d7da6f114f23d1e4a1eb;hpb=7fdb55a60c8b48b589898d98a9e832e0c894b57e;p=bacula%2Fbacula diff --git a/bacula/src/lib/daemon.c b/bacula/src/lib/daemon.c index 35b42f2da1..3a25812c1e 100644 --- a/bacula/src/lib/daemon.c +++ b/bacula/src/lib/daemon.c @@ -1,61 +1,72 @@ /* - * daemon.c by Kern Sibbald - * - * Version $Id$ - * - * this code is inspired by the Prentice Hall book - * "Unix Network Programming" by W. Richard Stevens - * and later updated from his book "Advanced Programming - * in the UNIX Environment" - * - * Initialize a daemon process completely detaching us from - * any terminal processes. - * - */ + Bacula® - The Network Backup Solution -/* - Copyright (C) 2000-2004 Kern Sibbald and John Walker + Copyright (C) 2000-2011 Free Software Foundation Europe e.V. - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version three of the GNU Affero General Public + License as published by the Free Software Foundation and included + in the file LICENSE. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public - License along with this program; if not, write to the Free - Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. + You should have received a copy of the GNU Affero General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + Bacula® is a registered trademark of Kern Sibbald. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ +/* + * daemon.c by Kern Sibbald 2000 + * + * This code is inspired by the Prentice Hall book + * "Unix Network Programming" by W. Richard Stevens + * and later updated from his book "Advanced Programming + * in the UNIX Environment" + * + * Initialize a daemon process completely detaching us from + * any terminal processes. + * */ #include "bacula.h" extern int debug_level; -void +void daemon_start() { -#if !defined(HAVE_CYGWIN) && !defined(HAVE_WIN32) +#if !defined(HAVE_WIN32) int i; pid_t cpid; mode_t oldmask; - int low_fd = 0; +#ifdef DEVELOPER + int low_fd = 2; +#else + int low_fd = -1; +#endif /* * Become a daemon. */ - Dmsg0(200, "Enter daemon_start\n"); - if ( (cpid = fork() ) < 0) - Emsg1(M_ABORT, 0, "Cannot fork to become daemon: %s\n", strerror(errno)); - else if (cpid > 0) - exit(0); /* parent exits */ + Dmsg0(900, "Enter daemon_start\n"); + if ( (cpid = fork() ) < 0) { + berrno be; + Emsg1(M_ABORT, 0, _("Cannot fork to become daemon: ERR=%s\n"), be.bstrerror()); + } else if (cpid > 0) { + exit(0); /* parent exits */ + } /* Child continues */ - + setsid(); /* In the PRODUCTION system, we close ALL @@ -75,7 +86,7 @@ daemon_start() chdir("/"); #endif - /* + /* * Avoid creating files 666 but don't override any * more restrictive mask set by the user. */ @@ -97,10 +108,10 @@ daemon_start() close(fd); } else { for(i=1; fd + i <= 2; i++) { - dup2(fd, fd+i); + dup2(fd, fd+i); } } -#endif /* HAVE_CYGWIN */ - Dmsg0(200, "Exit daemon_start\n"); +#endif /* HAVE_WIN32 */ + Dmsg0(900, "Exit daemon_start\n"); }