- Don't touch utmp if USE_UTMPX defined
diff --git a/ChangeLog b/ChangeLog
index a4e0d73..9f7f21c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 20000520
  - Xauth fix from Markus Friedl <markus.friedl@informatik.uni-erlangen.de>
+ - Don't touch utmp if USE_UTMPX defined
 
 20000518
  - Include Andre Lucas' fixprogs script. Forgot to "cvs add" it yesterday
diff --git a/acconfig.h b/acconfig.h
index 9a2c1af..b3e11fe 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -50,6 +50,7 @@
 #undef HAVE_SYSLEN_IN_UTMPX
 #undef HAVE_PID_IN_UTMP
 #undef HAVE_TYPE_IN_UTMP
+#undef HAVE_TYPE_IN_UTMPX
 #undef HAVE_TV_IN_UTMP
 #undef HAVE_ID_IN_UTMP
 
diff --git a/bsd-login.c b/bsd-login.c
index 6a80928..de49214 100644
--- a/bsd-login.c
+++ b/bsd-login.c
@@ -73,7 +73,7 @@
 	int t = 0;
 	struct utmp * u;
 
-#ifdef HAVE_TYPE_IN_UTMP
+#if defined(HAVE_TYPE_IN_UTMP) || defined(HAVE_TYPE_IN_UTMPX)
 	setutent();
 
 	while((u = getutent()) != NULL) {
@@ -123,16 +123,26 @@
 	 */
 	tty = find_tty_slot(utp);
 
+#ifdef USE_UTMPX
+	fd = open(_PATH_UTMPX, O_RDWR|O_CREAT, 0644);
+	if (fd == -1) {
+		log("Couldn't open %s: %s", _PATH_UTMPX, strerror(errno));
+#else /* USE_UTMPX */
 	fd = open(_PATH_UTMP, O_RDWR|O_CREAT, 0644);
 	if (fd == -1) {
 		log("Couldn't open %s: %s", _PATH_UTMP, strerror(errno));
+#endif /* USE_UTMPX */
 	} else {
 		/* If no tty was found... */
 		if (tty == -1) {
 			/* ... append it to utmp on login */
-#ifdef HAVE_TYPE_IN_UTMP
+#if defined(HAVE_TYPE_IN_UTMP) || defined(HAVE_TYPE_IN_UTMPX)
 			if (utp->ut_type == USER_PROCESS) {
+#ifdef USE_UTMPX
+				if ((fd = open(_PATH_UTMPX, O_WRONLY|O_APPEND, 0)) >= 0) {
+#else /* USE_UTMPX */
 				if ((fd = open(_PATH_UTMP, O_WRONLY|O_APPEND, 0)) >= 0) {
+#endif /* USE_UTMPX */
 					(void)write(fd, utp, sizeof(struct utmp));
 					(void)close(fd);
 				}
diff --git a/configure.in b/configure.in
index ba36417..4374904 100644
--- a/configure.in
+++ b/configure.in
@@ -494,6 +494,7 @@
 OSSH_CHECK_HEADER_FOR_FIELD(syslen, utmpx.h, HAVE_SYSLEN_IN_UTMPX)
 OSSH_CHECK_HEADER_FOR_FIELD(ut_pid, utmp.h, HAVE_PID_IN_UTMP)
 OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmp.h, HAVE_TYPE_IN_UTMP)
+OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmpx.h, HAVE_TYPE_IN_UTMPX)
 OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmp.h, HAVE_TV_IN_UTMP)
 OSSH_CHECK_HEADER_FOR_FIELD(ut_id, utmp.h, HAVE_ID_IN_UTMP)
 OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmp.h, HAVE_ADDR_IN_UTMP)