Patch by jonlar in Bug 312 to split the U_W_TMP feature into sep UTMP and WTMP options

This commit is contained in:
Mike Frysinger 2005-07-01 01:04:32 +00:00
parent a87bb60809
commit 8deb686d2e
6 changed files with 35 additions and 27 deletions

View File

@ -597,7 +597,7 @@ config CONFIG_WC
config CONFIG_WHO
bool "who"
default n
select CONFIG_FEATURE_U_W_TMP
select CONFIG_FEATURE_UTMP
help
who is used to show who is logged on.

View File

@ -57,14 +57,21 @@ config CONFIG_GETTY
help
getty lets you log in on a tty, it is normally invoked by init.
config CONFIG_FEATURE_U_W_TMP
bool " Support utmp and wtmp files"
depends on CONFIG_GETTY || CONFIG_LOGIN || CONFIG_SU || CONFIG_WHO || CONFIG_LAST
config CONFIG_FEATURE_UTMP
bool " Support utmp file"
depends on CONFIG_GETTY || CONFIG_LOGIN || CONFIG_SU || CONFIG_WHO
default n
help
The files /var/run/utmp and /var/run/wtmp can be used to track when
user's have logged into and logged out of the system, allowing programs
such as 'who' and 'last' to list who is currently logged in.
The file /var/run/utmp is used to track who is currently logged in.
config CONFIG_FEATURE_WTMP
bool " Support wtmp file"
depends on CONFIG_GETTY || CONFIG_LOGIN || CONFIG_SU || CONFIG_LAST
default n
select CONFIG_FEATURE_UTMP
help
The file /var/run/wtmp is used to track when user's have logged into
and logged out of the system.
config CONFIG_LOGIN
bool "login"

View File

@ -47,7 +47,7 @@
#ifdef LOGIN_PROCESS /* defined in System V utmp.h */
#define SYSV_STYLE /* select System V style getty */
#ifdef CONFIG_FEATURE_U_W_TMP
#ifdef CONFIG_FEATURE_WTMP
extern void updwtmp(const char *filename, const struct utmp *ut);
#endif
#endif /* LOGIN_PROCESS */
@ -231,7 +231,7 @@ static int caps_lock(const char *s);
static int bcode(char *s);
static void error(const char *fmt, ...) __attribute__ ((noreturn));
#ifdef CONFIG_FEATURE_U_W_TMP
#ifdef CONFIG_FEATURE_UTMP
static void update_utmp(char *line);
#endif
@ -289,7 +289,7 @@ int getty_main(int argc, char **argv)
#ifdef SYSV_STYLE
#ifdef CONFIG_FEATURE_U_W_TMP
#ifdef CONFIG_FEATURE_UTMP
update_utmp(options.tty);
#endif
#endif
@ -482,7 +482,7 @@ static void parse_speeds(struct options *op, char *arg)
}
#ifdef SYSV_STYLE
#ifdef CONFIG_FEATURE_U_W_TMP
#ifdef CONFIG_FEATURE_UTMP
/* update_utmp - update our utmp entry */
static void update_utmp(char *line)
@ -533,15 +533,14 @@ static void update_utmp(char *line)
pututline(&ut);
endutent();
{
if (access(_PATH_WTMP, R_OK|W_OK) == -1) {
close(creat(_PATH_WTMP, 0664));
}
updwtmp(_PATH_WTMP, &ut);
}
#ifdef CONFIG_FEATURE_WTMP
if (access(_PATH_WTMP, R_OK|W_OK) == -1)
close(creat(_PATH_WTMP, 0664));
updwtmp(_PATH_WTMP, &ut);
#endif
}
#endif /* CONFIG_FEATURE_U_W_TMP */
#endif /* CONFIG_FEATURE_UTMP */
#endif /* SYSV_STYLE */
/* open_tty - set up tty as standard { input, output, error } */

View File

@ -23,7 +23,7 @@
#include <errno.h>
#endif
#ifdef CONFIG_FEATURE_U_W_TMP
#ifdef CONFIG_FEATURE_UTMP
// import from utmp.c
static void checkutmp(int picky);
static void setutmp(const char *name, const char *line);
@ -121,7 +121,7 @@ extern int login_main(int argc, char **argv)
if ( !isatty ( 0 ) || !isatty ( 1 ) || !isatty ( 2 ))
return EXIT_FAILURE; /* Must be a terminal */
#ifdef CONFIG_FEATURE_U_W_TMP
#ifdef CONFIG_FEATURE_UTMP
checkutmp ( !amroot );
#endif
@ -133,13 +133,13 @@ extern int login_main(int argc, char **argv)
else
safe_strncpy ( tty, "UNKNOWN", sizeof( tty ));
#ifdef CONFIG_FEATURE_U_W_TMP
#ifdef CONFIG_FEATURE_UTMP
if ( amroot )
memset ( utent.ut_host, 0, sizeof utent.ut_host );
#endif
if ( opt_host ) {
#ifdef CONFIG_FEATURE_U_W_TMP
#ifdef CONFIG_FEATURE_UTMP
safe_strncpy ( utent.ut_host, opt_host, sizeof( utent. ut_host ));
#endif
snprintf ( fromhost, sizeof( fromhost ) - 1, " on `%.100s' from `%.200s'", tty, opt_host );
@ -221,7 +221,7 @@ auth_ok:
if ( check_nologin ( pw-> pw_uid == 0 ))
return EXIT_FAILURE;
#ifdef CONFIG_FEATURE_U_W_TMP
#ifdef CONFIG_FEATURE_UTMP
setutmp ( username, tty );
#endif
@ -402,7 +402,7 @@ static void motd (void)
}
#ifdef CONFIG_FEATURE_U_W_TMP
#ifdef CONFIG_FEATURE_UTMP
// vv Taken from tinylogin utmp.c vv
#define NO_UTENT \
@ -480,9 +480,11 @@ static void setutmp(const char *name, const char *line)
setutent();
pututline(&utent);
endutent();
#ifdef CONFIG_FEATURE_WTMP
if (access(_PATH_WTMP, R_OK|W_OK) == -1) {
close(creat(_PATH_WTMP, 0664));
}
updwtmp(_PATH_WTMP, &utent);
#endif
}
#endif /* CONFIG_FEATURE_U_W_TMP */
#endif /* CONFIG_FEATURE_UTMP */

View File

@ -91,7 +91,7 @@ int su_main ( int argc, char **argv )
opt_args = argv + optind;
#if defined( SYSLOG_SUCCESS ) || defined( SYSLOG_FAILURE )
#ifdef CONFIG_FEATURE_U_W_TMP
#ifdef CONFIG_FEATURE_UTMP
/* The utmp entry (via getlogin) is probably the best way to identify
the user, especially if someone su's from a su-shell. */
old_user = getlogin ( );

View File

@ -93,7 +93,7 @@ config CONFIG_EJECT
config CONFIG_LAST
bool "last"
default n
select CONFIG_FEATURE_U_W_TMP
select CONFIG_FEATURE_WTMP
help
'last' displays a list of the last users that logged into the system.