aboutsummaryrefslogtreecommitdiff
path: root/ftp/bsdftpd-ssl/files/patch-ftpd-logwtmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'ftp/bsdftpd-ssl/files/patch-ftpd-logwtmp.c')
-rw-r--r--ftp/bsdftpd-ssl/files/patch-ftpd-logwtmp.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/ftp/bsdftpd-ssl/files/patch-ftpd-logwtmp.c b/ftp/bsdftpd-ssl/files/patch-ftpd-logwtmp.c
new file mode 100644
index 000000000000..1347aa3b665a
--- /dev/null
+++ b/ftp/bsdftpd-ssl/files/patch-ftpd-logwtmp.c
@@ -0,0 +1,72 @@
+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