ports/ftp/bsdftpd-ssl/files/patch-ftpd-logwtmp.c
Li-Wen Hsu 5c8564e8a3 - Fix utmpx for FreeBSD 9+
- Seperate logwtmp.c patch from patch-gcc4
- Change MASTER_SITES because the original site has no ns record now
- Undefine DISTNAME
- Bump PORTREVISION

PR:		ports/169096
Submitted by:	Hung-te Liang <lhd@cs.nctu.edu.tw>
Approved by:	Nick Leuta <skynick@mail.sc.ru> (maintainer)
2012-06-26 17:11:21 +00:00

72 lines
1.8 KiB
C

diff -urN bsdftpd-ssl-1.1.0.ORI/ftpd/logwtmp.c ftpd/logwtmp.c
--- bsdftpd-ssl-1.1.0.ORI/ftpd/logwtmp.c 2004-12-20 02:44:42.000000000 +0800
+++ ftpd/logwtmp.c 2012-06-15 15:34:03.000000000 +0800
@@ -48,13 +48,18 @@
#include <arpa/inet.h>
#include <sys/socket.h>
+#include <sys/param.h>
+#if __FreeBSD_version < 900007
#include <fcntl.h>
#include <time.h>
-#if 0 /* Original FreeBSD 5.0 code */
+#if 1 /* Original FreeBSD 5.0 code */
#include <timeconv.h>
#endif
#include <netdb.h>
#include <utmp.h>
+#else
+#include <utmpx.h>
+#endif
#include <unistd.h>
#include <stdio.h>
#include <string.h>
@@ -63,6 +68,7 @@
#include <port_base.h>
+#ifndef _UTMPX_H_
static int fd = -1;
/*
@@ -94,7 +100,7 @@
(void)strncpy(ut.ut_line, line, sizeof(ut.ut_line));
(void)strncpy(ut.ut_name, name, sizeof(ut.ut_name));
(void)strncpy(ut.ut_host, host, sizeof(ut.ut_host));
-#if 0 /* Original FreeBSD 5.0 code */
+#if 1 /* Original FreeBSD 5.0 code */
ut.ut_time = _time_to_time32(time(NULL));
#else /* Portable code from FreeBSD 4.8 */
(void)time(&ut.ut_time);
@@ -104,3 +110,31 @@
(void)ftruncate(fd, buf.st_size);
}
}
+#else /* Original FreeBSD 9.0 code */
+void
+ftpd_logwtmp(char *id, char *user, struct sockaddr *addr)
+{
+ struct utmpx ut;
+
+ memset(&ut, 0, sizeof(ut));
+
+ if (user != NULL) {
+ /* Log in. */
+ ut.ut_type = USER_PROCESS;
+ (void)strncpy(ut.ut_user, user, sizeof(ut.ut_user));
+ if (addr != NULL)
+ realhostname_sa(ut.ut_host, sizeof(ut.ut_host),
+ addr, addr->sa_len);
+ } else {
+ /* Log out. */
+ ut.ut_type = DEAD_PROCESS;
+ }
+
+ ut.ut_pid = getpid();
+ gettimeofday(&ut.ut_tv, NULL);
+ (void)strncpy(ut.ut_id, id, sizeof(ut.ut_id));
+ (void)strncpy(ut.ut_line, "ftpd", sizeof(ut.ut_line));
+
+ pututxline(&ut);
+}
+#endif