diff -Naur libutempter-1.1.6.orig/utempter.c libutempter-1.1.6/utempter.c
--- libutempter-1.1.6.orig/utempter.c	2010-11-04 13:14:53.000000000 -0400
+++ libutempter-1.1.6/utempter.c	2014-06-20 16:37:09.762403323 -0400
@@ -34,13 +34,7 @@
 #include <sys/stat.h>
 #include <utmp.h>
 
-#ifdef __GLIBC__
 # include <pty.h>
-#elif defined(__FreeBSD__)
-# include <libutil.h>
-#else
-# error Unsupported platform
-#endif /* __GLIBC__ || __FreeBSD__ */
 
 #define	DEV_PREFIX	"/dev/"
 #define	DEV_PREFIX_LEN	(sizeof(DEV_PREFIX)-1)
@@ -106,17 +100,12 @@
 
 static int
 write_uwtmp_record(const char *user, const char *term, const char *host,
-#ifdef __GLIBC__
 		   pid_t pid,
-#endif
 		   int add)
 {
 	struct utmp ut;
 	struct timeval tv;
-
-#ifdef __GLIBC__
 	size_t offset;
-#endif
 
 	memset(&ut, 0, sizeof(ut));
 
@@ -128,8 +117,6 @@
 	if (host)
 		strncpy(ut.ut_host, host, sizeof(ut.ut_host));
 
-#ifdef __GLIBC__
-
 	offset = (strlen(term) <= sizeof(ut.ut_id)) ? 0 :
 			strlen(term) - sizeof(ut.ut_id);
 	strncpy(ut.ut_id, term + offset, sizeof(ut.ut_id));
@@ -156,27 +143,6 @@
 
 	(void) updwtmp(_PATH_WTMP, &ut);
 
-#elif defined(__FreeBSD__)
-
-	ut.ut_time = tv.tv_sec;
-
-	if (add)
-	{
-		login(&ut);
-	} else
-	{
-		if (logout(term) != 1)
-		{
-#ifdef	UTEMPTER_DEBUG
-			fprintf(stderr, "utempter: logout: %s\n",
-				strerror(errno));
-#endif
-			exit(EXIT_FAILURE);
-		}
-	}
-
-#endif /* __GLIBC__ || __FreeBSD__ */
-
 #ifdef	UTEMPTER_DEBUG
 	fprintf(stderr,
 		"utempter: DEBUG: utmp/wtmp record %s for terminal '%s'\n",
@@ -255,8 +221,6 @@
 	validate_device(device);
 
 	return write_uwtmp_record(pw->pw_name, device + DEV_PREFIX_LEN, host,
-#ifdef __GLIBC__
 				  pid,
-#endif
 				  add);
 }
