Fixup getty, login, etc so the utmp and wtmp are updated, allowing
the 'who' and 'last' applets among other things to work as expected. -Erik
This commit is contained in:
parent
15b588559b
commit
aad29b37a7
@ -538,6 +538,7 @@ config CONFIG_WC
|
|||||||
config CONFIG_WHO
|
config CONFIG_WHO
|
||||||
bool "who"
|
bool "who"
|
||||||
default n
|
default n
|
||||||
|
select CONFIG_FEATURE_U_W_TMP
|
||||||
help
|
help
|
||||||
who is used to show who is logged on.
|
who is used to show who is logged on.
|
||||||
|
|
||||||
|
@ -57,6 +57,15 @@ config CONFIG_GETTY
|
|||||||
help
|
help
|
||||||
getty lets you log in on a tty, it is normally invoked by init.
|
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
|
||||||
|
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.
|
||||||
|
|
||||||
config CONFIG_LOGIN
|
config CONFIG_LOGIN
|
||||||
bool "login"
|
bool "login"
|
||||||
default n
|
default n
|
||||||
|
@ -228,7 +228,7 @@ static void termio_final(struct options *op, struct termio *tp,
|
|||||||
|
|
||||||
struct chardata *cp);
|
struct chardata *cp);
|
||||||
static int caps_lock(const char *s);
|
static int caps_lock(const char *s);
|
||||||
static int bcode(const char *s);
|
static int bcode(char *s);
|
||||||
static void error(const char *fmt, ...) __attribute__ ((noreturn));
|
static void error(const char *fmt, ...) __attribute__ ((noreturn));
|
||||||
|
|
||||||
#ifdef CONFIG_FEATURE_U_W_TMP
|
#ifdef CONFIG_FEATURE_U_W_TMP
|
||||||
@ -503,6 +503,9 @@ static void update_utmp(char *line)
|
|||||||
* utmp file can be opened for update, and if we are able to find our
|
* utmp file can be opened for update, and if we are able to find our
|
||||||
* entry in the utmp file.
|
* entry in the utmp file.
|
||||||
*/
|
*/
|
||||||
|
if (access(_PATH_UTMP, R_OK|W_OK) == -1) {
|
||||||
|
creat(_PATH_UTMP, O_RDWR);
|
||||||
|
}
|
||||||
utmpname(_PATH_UTMP);
|
utmpname(_PATH_UTMP);
|
||||||
setutent();
|
setutent();
|
||||||
while ((utp = getutent())
|
while ((utp = getutent())
|
||||||
@ -531,6 +534,9 @@ static void update_utmp(char *line)
|
|||||||
endutent();
|
endutent();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
if (access(_PATH_WTMP, R_OK|W_OK) == -1) {
|
||||||
|
creat(_PATH_WTMP, O_RDWR);
|
||||||
|
}
|
||||||
updwtmp(_PATH_WTMP, &ut);
|
updwtmp(_PATH_WTMP, &ut);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -953,7 +959,7 @@ static int caps_lock(const char *s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* bcode - convert speed string to speed code; return 0 on failure */
|
/* bcode - convert speed string to speed code; return 0 on failure */
|
||||||
static int bcode(const char *s)
|
static int bcode(char *s)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
unsigned long value;
|
unsigned long value;
|
||||||
|
@ -403,8 +403,6 @@ static void motd ( )
|
|||||||
#ifdef CONFIG_FEATURE_U_W_TMP
|
#ifdef CONFIG_FEATURE_U_W_TMP
|
||||||
// vv Taken from tinylogin utmp.c vv
|
// vv Taken from tinylogin utmp.c vv
|
||||||
|
|
||||||
#define _WTMP_FILE "/var/log/wtmp"
|
|
||||||
|
|
||||||
#define NO_UTENT \
|
#define NO_UTENT \
|
||||||
"No utmp entry. You must exec \"login\" from the lowest level \"sh\""
|
"No utmp entry. You must exec \"login\" from the lowest level \"sh\""
|
||||||
#define NO_TTY \
|
#define NO_TTY \
|
||||||
@ -480,6 +478,9 @@ static void setutmp(const char *name, const char *line)
|
|||||||
setutent();
|
setutent();
|
||||||
pututline(&utent);
|
pututline(&utent);
|
||||||
endutent();
|
endutent();
|
||||||
updwtmp(_WTMP_FILE, &utent);
|
if (access(_PATH_WTMP, R_OK|W_OK) == -1) {
|
||||||
|
creat(_PATH_WTMP, O_RDWR);
|
||||||
|
}
|
||||||
|
updwtmp(_PATH_WTMP, &utent);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_FEATURE_U_W_TMP */
|
#endif /* CONFIG_FEATURE_U_W_TMP */
|
||||||
|
@ -83,6 +83,7 @@ config CONFIG_DEVFSD_VERBOSE
|
|||||||
config CONFIG_LAST
|
config CONFIG_LAST
|
||||||
bool "last"
|
bool "last"
|
||||||
default n
|
default n
|
||||||
|
select CONFIG_FEATURE_U_W_TMP
|
||||||
help
|
help
|
||||||
'last' displays a list of the last users that logged into the system.
|
'last' displays a list of the last users that logged into the system.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user