dropin.c/h contain a set of drop-in replacements for non-standard C
authorIvo Timmermans <ivo@lychnis.net>
Tue, 28 Nov 2000 23:23:41 +0000 (23:23 +0000)
committerIvo Timmermans <ivo@lychnis.net>
Tue, 28 Nov 2000 23:23:41 +0000 (23:23 +0000)
library functions (read: GNU extensions).

lib/Makefile.am
lib/daemon.c [deleted file]
lib/daemon.h [deleted file]
lib/dropin.c [new file with mode: 0644]
lib/dropin.h [new file with mode: 0644]

index 7ac630a03c885e200659b09584742f1b30fcc704..355493cd6a6668f24add2e4a81377f89b1dc0150 100644 (file)
@@ -1,15 +1,15 @@
 ## Process this file with automake to produce Makefile.in
-# $Id: Makefile.am,v 1.2.4.4 2000/11/24 23:12:58 guus Exp $
+# $Id: Makefile.am,v 1.2.4.5 2000/11/28 23:23:41 zarq Exp $
 
 noinst_LIBRARIES = libvpn.a
 
 INCLUDES = -I. -I$(top_builddir) -I$(top_srcdir)/intl
 
-libvpn_a_SOURCES = xmalloc.c pidfile.c utils.c getopt.c getopt1.c list.c rbl.c daemon.c
+libvpn_a_SOURCES = xmalloc.c pidfile.c utils.c getopt.c getopt1.c list.c rbl.c dropin.c
 
 libvpn_a_LIBADD = @LIBOBJS@ @ALLOCA@
 libvpn_a_DEPENDENCIES = $(libvpn_a_LIBADD)
 
-noinst_HEADERS = xalloc.h pidfile.h utils.h getopt.h list.h rbl.h daemon.h
+noinst_HEADERS = xalloc.h pidfile.h utils.h getopt.h list.h rbl.h dropin.h
 
 EXTRA_DIST = README
diff --git a/lib/daemon.c b/lib/daemon.c
deleted file mode 100644 (file)
index f12599f..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-    daemon.c -- replacement daemon() for platforms that do not have it
-    Copyright (C) 2000 Ivo Timmermans <itimmermans@bigfoot.com>,
-                  2000 Guus Sliepen <guus@sliepen.warande.net>
-
-    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.
-
-    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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-    $Id: daemon.c,v 1.1.2.1 2000/11/24 23:30:50 guus Exp $
-*/
-
-#include "config.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdio.h>
-
-#include <system.h>
-
-#ifndef HAVE_DAEMON
-int daemon(int nochdir, int noclose)
-{
-  pid_t pid;
-  int fd;
-  
-  pid = fork();
-  
-  /* Check if forking failed */
-    
-  if(pid < 0)
-    {
-      perror("fork");
-      exit(-1);
-    }
-
-  /* If we are the parent, terminate */
-  
-  if(pid)
-    exit(0);
-
-  /* Detach by becoming the new process group leader */
-  
-  if(setsid() < 0)
-    {
-      perror("setsid");
-      return -1;
-    }
-  
-  /* Change working directory to the root (to avoid keeping mount points busy) */
-  
-  if(!nochdir)
-    {
-      chdir("/");
-    }
-    
-  /* Redirect stdin/out/err to /dev/null */
-
-  if(!noclose)
-    {
-      fd = open("/dev/null", O_RDWR);
-
-      if(fd < 0)
-        {
-          perror("opening /dev/null");
-          return -1;
-        }
-        else
-        {
-          dup2(fd, 0);
-          dup2(fd, 1);
-          dup2(fd, 2);
-        }
-    }
-}
-#endif
diff --git a/lib/daemon.h b/lib/daemon.h
deleted file mode 100644 (file)
index ce23b76..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-    daemon.h -- header file for daemon.c
-    Copyright (C) 2000 Ivo Timmermans <itimmermans@bigfoot.com>,
-                  2000 Guus Sliepen <guus@sliepen.warande.net>
-
-    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.
-
-    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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-    $Id: daemon.h,v 1.1.2.1 2000/11/24 23:30:50 guus Exp $
-*/
-
-#ifndef __DAEMON_H__
-#define __DAEMON_H__
-
-#ifndef HAVE_DAEMON
-extern int daemon(int, int);
-#endif
-
-#endif /* __DAEMON_H__ */
diff --git a/lib/dropin.c b/lib/dropin.c
new file mode 100644 (file)
index 0000000..faa2314
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+    dropin.c -- a set of drop-in replacements for libc functions
+    Copyright (C) 2000 Ivo Timmermans <itimmermans@bigfoot.com>,
+                  2000 Guus Sliepen <guus@sliepen.warande.net>
+
+    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.
+
+    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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    $Id: dropin.c,v 1.1.2.1 2000/11/28 23:23:41 zarq Exp $
+*/
+
+#include "config.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdio.h>
+
+#include <system.h>
+
+#ifndef HAVE_DAEMON
+int daemon(int nochdir, int noclose)
+{
+  pid_t pid;
+  int fd;
+  
+  pid = fork();
+  
+  /* Check if forking failed */
+    
+  if(pid < 0)
+    {
+      perror("fork");
+      exit(-1);
+    }
+
+  /* If we are the parent, terminate */
+  
+  if(pid)
+    exit(0);
+
+  /* Detach by becoming the new process group leader */
+  
+  if(setsid() < 0)
+    {
+      perror("setsid");
+      return -1;
+    }
+  
+  /* Change working directory to the root (to avoid keeping mount points busy) */
+  
+  if(!nochdir)
+    {
+      chdir("/");
+    }
+    
+  /* Redirect stdin/out/err to /dev/null */
+
+  if(!noclose)
+    {
+      fd = open("/dev/null", O_RDWR);
+
+      if(fd < 0)
+        {
+          perror("opening /dev/null");
+          return -1;
+        }
+        else
+        {
+          dup2(fd, 0);
+          dup2(fd, 1);
+          dup2(fd, 2);
+        }
+    }
+}
+#endif
+
+
+
+
+
+#ifndef HAVE_GET_CURRENT_DIR_NAME
+
+char *get_current_dir_name(void)
+{
+  return ".";
+}
+
+#endif
diff --git a/lib/dropin.h b/lib/dropin.h
new file mode 100644 (file)
index 0000000..a104b38
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+    daemon.h -- header file for daemon.c
+    Copyright (C) 2000 Ivo Timmermans <itimmermans@bigfoot.com>,
+                  2000 Guus Sliepen <guus@sliepen.warande.net>
+
+    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.
+
+    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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    $Id: dropin.h,v 1.1.2.1 2000/11/28 23:23:41 zarq Exp $
+*/
+
+#ifndef __DROPIN_H__
+#define __DROPIN_H__
+
+#ifndef HAVE_DAEMON
+extern int daemon(int, int);
+#endif
+
+#ifndef HAVE_GET_CURRENT_DIR_NAME
+extern char* get_current_dir_name(void);
+#endif
+
+#endif /* __DROPIN_H__ */