diff options
Diffstat (limited to 'ftp/bsdftpd-ssl/files/patch-ftpd-logwtmp.c')
-rw-r--r-- | ftp/bsdftpd-ssl/files/patch-ftpd-logwtmp.c | 72 |
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 |