mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-02 06:03:50 +00:00
114a831ecb
Includes fix for clang11 -fno-common issue While here, pet linters. PR: 248831 Submitted by: cejkar@fit.vutbr.cz (maintainer) MFH: 2020Q3 (build fix, fno-common)
73 lines
1.9 KiB
C
73 lines
1.9 KiB
C
Rewrite utmpx support.
|
|
|
|
--- src/ftpd.c.orig 2020-07-04 04:02:07 UTC
|
|
+++ src/ftpd.c
|
|
@@ -514,9 +514,6 @@ main(int argc, char *argv[])
|
|
pfilter_open();
|
|
|
|
if (dowtmp) {
|
|
-#ifdef SUPPORT_UTMPX
|
|
- ftpd_initwtmpx();
|
|
-#endif
|
|
#ifdef SUPPORT_UTMP
|
|
ftpd_initwtmp();
|
|
#endif
|
|
@@ -1336,23 +1333,18 @@ login_utmp(const char *line, const char *name, const c
|
|
(void)gettimeofday(&tv, NULL);
|
|
#endif
|
|
#ifdef SUPPORT_UTMPX
|
|
- if (doutmp) {
|
|
+ if (doutmp || dowtmp) {
|
|
(void)memset(&utmpx, 0, sizeof(utmpx));
|
|
utmpx.ut_tv = tv;
|
|
utmpx.ut_pid = getpid();
|
|
- utmpx.ut_id[0] = 'f';
|
|
- utmpx.ut_id[1] = 't';
|
|
- utmpx.ut_id[2] = 'p';
|
|
- utmpx.ut_id[3] = '*';
|
|
+ snprintf(utmpx.ut_id, sizeof(utmpx.ut_id), "%xftp",
|
|
+ utmpx.ut_pid);
|
|
utmpx.ut_type = USER_PROCESS;
|
|
- (void)strncpy(utmpx.ut_name, name, sizeof(utmpx.ut_name));
|
|
+ (void)strncpy(utmpx.ut_user, name, sizeof(utmpx.ut_user));
|
|
(void)strncpy(utmpx.ut_line, line, sizeof(utmpx.ut_line));
|
|
(void)strncpy(utmpx.ut_host, host, sizeof(utmpx.ut_host));
|
|
- (void)memcpy(&utmpx.ut_ss, &haddr->si_su, haddr->su_len);
|
|
- ftpd_loginx(&utmpx);
|
|
+ (void)pututxline(&utmpx);
|
|
}
|
|
- if (dowtmp)
|
|
- ftpd_logwtmpx(line, name, host, haddr, 0, USER_PROCESS);
|
|
#endif
|
|
#ifdef SUPPORT_UTMP
|
|
if (doutmp) {
|
|
@@ -1372,17 +1364,23 @@ static void
|
|
logout_utmp(void)
|
|
{
|
|
#ifdef SUPPORT_UTMPX
|
|
- int okwtmpx = dowtmp;
|
|
+ struct timeval tv;
|
|
+ (void)gettimeofday(&tv, NULL);
|
|
#endif
|
|
#ifdef SUPPORT_UTMP
|
|
int okwtmp = dowtmp;
|
|
#endif
|
|
if (logged_in) {
|
|
#ifdef SUPPORT_UTMPX
|
|
- if (doutmp)
|
|
- okwtmpx &= ftpd_logoutx(ttyline, 0, DEAD_PROCESS);
|
|
- if (okwtmpx)
|
|
- ftpd_logwtmpx(ttyline, "", "", NULL, 0, DEAD_PROCESS);
|
|
+ if (doutmp || dowtmp) {
|
|
+ (void)memset(&utmpx, 0, sizeof(utmpx));
|
|
+ utmpx.ut_tv = tv;
|
|
+ utmpx.ut_pid = getpid();
|
|
+ snprintf(utmpx.ut_id, sizeof(utmpx.ut_id), "%xftp",
|
|
+ utmpx.ut_pid);
|
|
+ utmpx.ut_type = DEAD_PROCESS;
|
|
+ (void)pututxline(&utmpx);
|
|
+ }
|
|
#endif
|
|
#ifdef SUPPORT_UTMP
|
|
if (doutmp)
|