mirror of
https://github.com/sheumann/hush.git
synced 2024-08-20 19:29:02 +00:00
- introduce and use bb_path_wtmp_file for portability (saves 11 Bytes).
- fix last.c to also look at the double-underscore UT_ defines.
This commit is contained in:
parent
b180e5a766
commit
781e42d66c
@ -11,6 +11,8 @@
|
|||||||
#ifndef __LIBBUSYBOX_H__
|
#ifndef __LIBBUSYBOX_H__
|
||||||
#define __LIBBUSYBOX_H__ 1
|
#define __LIBBUSYBOX_H__ 1
|
||||||
|
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
@ -18,14 +20,10 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
|
||||||
#include <features.h>
|
|
||||||
|
|
||||||
#include "platform.h"
|
|
||||||
#include "bb_config.h"
|
#include "bb_config.h"
|
||||||
#ifdef CONFIG_SELINUX
|
#ifdef CONFIG_SELINUX
|
||||||
#include <selinux/selinux.h>
|
#include <selinux/selinux.h>
|
||||||
@ -41,8 +39,11 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Some useful definitions */
|
/* Some useful definitions */
|
||||||
|
#undef FALSE
|
||||||
#define FALSE ((int) 0)
|
#define FALSE ((int) 0)
|
||||||
|
#undef TRUE
|
||||||
#define TRUE ((int) 1)
|
#define TRUE ((int) 1)
|
||||||
|
#undef SKIP
|
||||||
#define SKIP ((int) 2)
|
#define SKIP ((int) 2)
|
||||||
|
|
||||||
/* for mtab.c */
|
/* for mtab.c */
|
||||||
@ -348,6 +349,7 @@ extern const char * const bb_path_gshadow_file;
|
|||||||
extern const char * const bb_path_group_file;
|
extern const char * const bb_path_group_file;
|
||||||
extern const char * const bb_path_securetty_file;
|
extern const char * const bb_path_securetty_file;
|
||||||
extern const char * const bb_path_motd_file;
|
extern const char * const bb_path_motd_file;
|
||||||
|
extern const char * const bb_path_wtmp_file;
|
||||||
extern const char * const bb_dev_null;
|
extern const char * const bb_dev_null;
|
||||||
|
|
||||||
#ifndef BUFSIZ
|
#ifndef BUFSIZ
|
||||||
|
@ -93,6 +93,20 @@ const char * const bb_default_login_shell = LIBBB_DEFAULT_LOGIN_SHELL;
|
|||||||
const char * const bb_dev_null = "/dev/null";
|
const char * const bb_dev_null = "/dev/null";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef L_bb_path_wtmp_file
|
||||||
|
#include <utmp.h>
|
||||||
|
/* This is usually something like "/var/adm/wtmp" or "/var/log/wtmp" */
|
||||||
|
const char * const bb_path_wtmp_file =
|
||||||
|
#if defined _PATH_WTMP
|
||||||
|
_PATH_WTMP;
|
||||||
|
#elif defined WTMP_FILE
|
||||||
|
WTMP_FILE;
|
||||||
|
#else
|
||||||
|
# error unknown path to wtmp file
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef L_bb_common_bufsiz1
|
#ifdef L_bb_common_bufsiz1
|
||||||
char bb_common_bufsiz1[BUFSIZ+1];
|
char bb_common_bufsiz1[BUFSIZ+1];
|
||||||
#endif
|
#endif
|
||||||
|
@ -496,9 +496,9 @@ static void update_utmp(char *line)
|
|||||||
endutent();
|
endutent();
|
||||||
|
|
||||||
#ifdef CONFIG_FEATURE_WTMP
|
#ifdef CONFIG_FEATURE_WTMP
|
||||||
if (access(_PATH_WTMP, R_OK|W_OK) == -1)
|
if (access(bb_path_wtmp_file, R_OK|W_OK) == -1)
|
||||||
close(creat(_PATH_WTMP, 0664));
|
close(creat(bb_path_wtmp_file, 0664));
|
||||||
updwtmp(_PATH_WTMP, &ut);
|
updwtmp(bb_path_wtmp_file, &ut);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -463,7 +463,7 @@ static void checkutmp(int picky)
|
|||||||
static void setutmp(const char *name, const char *line ATTRIBUTE_UNUSED)
|
static void setutmp(const char *name, const char *line ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
time_t t_tmp = (time_t)utent.ut_time;
|
time_t t_tmp = (time_t)utent.ut_time;
|
||||||
|
|
||||||
utent.ut_type = USER_PROCESS;
|
utent.ut_type = USER_PROCESS;
|
||||||
strncpy(utent.ut_user, name, sizeof utent.ut_user);
|
strncpy(utent.ut_user, name, sizeof utent.ut_user);
|
||||||
time(&t_tmp);
|
time(&t_tmp);
|
||||||
@ -472,10 +472,10 @@ static void setutmp(const char *name, const char *line ATTRIBUTE_UNUSED)
|
|||||||
pututline(&utent);
|
pututline(&utent);
|
||||||
endutent();
|
endutent();
|
||||||
#ifdef CONFIG_FEATURE_WTMP
|
#ifdef CONFIG_FEATURE_WTMP
|
||||||
if (access(_PATH_WTMP, R_OK|W_OK) == -1) {
|
if (access(bb_path_wtmp_file, R_OK|W_OK) == -1) {
|
||||||
close(creat(_PATH_WTMP, 0664));
|
close(creat(bb_path_wtmp_file, 0664));
|
||||||
}
|
}
|
||||||
updwtmp(_PATH_WTMP, &utent);
|
updwtmp(bb_path_wtmp_file, &utent);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_FEATURE_UTMP */
|
#endif /* CONFIG_FEATURE_UTMP */
|
||||||
|
@ -26,7 +26,11 @@
|
|||||||
* Do what we can while still keeping this reasonably small.
|
* Do what we can while still keeping this reasonably small.
|
||||||
* Note: We are assuming the ut_id[] size is fixed at 4. */
|
* Note: We are assuming the ut_id[] size is fixed at 4. */
|
||||||
|
|
||||||
#if (UT_LINESIZE != 32) || (UT_NAMESIZE != 32) || (UT_HOSTSIZE != 256)
|
#if defined UT_LINESIZE \
|
||||||
|
&& ((UT_LINESIZE != 32) || (UT_NAMESIZE != 32) || (UT_HOSTSIZE != 256))
|
||||||
|
#error struct utmp member char[] size(s) have changed!
|
||||||
|
#elif defined __UT_LINESIZE \
|
||||||
|
&& ((__UT_LINESIZE != 32) || (__UT_NAMESIZE != 64) || (__UT_HOSTSIZE != 256))
|
||||||
#error struct utmp member char[] size(s) have changed!
|
#error struct utmp member char[] size(s) have changed!
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -39,7 +43,7 @@ int last_main(int argc, char **argv)
|
|||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
bb_show_usage();
|
bb_show_usage();
|
||||||
}
|
}
|
||||||
file = bb_xopen(_PATH_WTMP, O_RDONLY);
|
file = bb_xopen(bb_path_wtmp_file, O_RDONLY);
|
||||||
|
|
||||||
printf("%-10s %-14s %-18s %-12.12s %s\n", "USER", "TTY", "HOST", "LOGIN", "TIME");
|
printf("%-10s %-14s %-18s %-12.12s %s\n", "USER", "TTY", "HOST", "LOGIN", "TIME");
|
||||||
while ((n = safe_read(file, (void*)&ut, sizeof(struct utmp))) != 0) {
|
while ((n = safe_read(file, (void*)&ut, sizeof(struct utmp))) != 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user