diff --git a/networking/udhcp/debug.h b/networking/udhcp/debug.h
deleted file mode 100644
index a1e1974..0000000
--- a/networking/udhcp/debug.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef _DEBUG_H
-#define _DEBUG_H
-
-#include "libbb_udhcp.h"
-
-#include <stdio.h>
-#ifdef SYSLOG
-#include <syslog.h>
-#endif
-
-
-#ifdef SYSLOG
-# define LOG(level, str, args...) do { printf(str, ## args); \
-				printf("\n"); \
-				syslog(level, str, ## args); } while(0)
-# define OPEN_LOG(name) openlog(name, 0, 0)
-#define CLOSE_LOG() closelog()
-#else
-# define LOG_EMERG	"EMERGENCY!"
-# define LOG_ALERT	"ALERT!"
-# define LOG_CRIT	"critical!"
-# define LOG_WARNING	"warning"
-# define LOG_ERR	"error"
-# define LOG_INFO	"info"
-# define LOG_DEBUG	"debug"
-# define LOG(level, str, args...) do { printf("%s, ", level); \
-				printf(str, ## args); \
-				printf("\n"); } while(0)
-# define OPEN_LOG(name) do {;} while(0)
-#define CLOSE_LOG() do {;} while(0)
-#endif
-
-#ifdef DEBUG
-# undef DEBUG
-# define DEBUG(level, str, args...) LOG(level, str, ## args)
-# define DEBUGGING
-#else
-# define DEBUG(level, str, args...) do {;} while(0)
-#endif
-
-#endif
diff --git a/networking/udhcp/pidfile.c b/networking/udhcp/pidfile.c
deleted file mode 100644
index 246a64a..0000000
--- a/networking/udhcp/pidfile.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* pidfile.c
- *
- * Functions to assist in the writing and removing of pidfiles.
- *
- * Russ Dill <Russ.Dill@asu.edu> Soptember 2001
- *
- * 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.
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <stdio.h>
-
-#include "debug.h"
-
-int pidfile_acquire(char *pidfile)
-{
-	int pid_fd;
-	if (pidfile == NULL) return -1;
-
-	pid_fd = open(pidfile, O_CREAT | O_WRONLY, 0644);
-	if (pid_fd < 0) {
-		LOG(LOG_ERR, "Unable to open pidfile %s: %s\n",
-		    pidfile, strerror(errno));
-	} else {
-		lockf(pid_fd, F_LOCK, 0);
-	}
-	
-	return pid_fd;
-}
-
-
-void pidfile_write_release(int pid_fd)
-{
-	FILE *out;
-
-	if (pid_fd < 0) return;
-
-	if ((out = fdopen(pid_fd, "w")) != NULL) {
-		fprintf(out, "%d\n", getpid());
-		fclose(out);
-	}
-	lockf(pid_fd, F_UNLCK, 0);
-	close(pid_fd);
-}
-
-
-void pidfile_delete(char *pidfile)
-{
-	if (pidfile) unlink(pidfile);
-}
-
-
diff --git a/networking/udhcp/pidfile.h b/networking/udhcp/pidfile.h
deleted file mode 100644
index 0e2b148..0000000
--- a/networking/udhcp/pidfile.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* pidfile.h
- *
- * Functions to assist in the writing and removing of pidfiles.
- *
- * Russ Dill <Russ.Dill@asu.edu> Soptember 2001
- *
- * 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.
- */
-
-
-int pidfile_acquire(char *pidfile);
-void pidfile_write_release(int pid_fd);
-void pidfile_delete(char *pidfile);
-
