diff options
Diffstat (limited to 'miscutils')
-rw-r--r-- | miscutils/dutmp.c | 35 | ||||
-rw-r--r-- | miscutils/mt.c | 2 |
2 files changed, 17 insertions, 20 deletions
diff --git a/miscutils/dutmp.c b/miscutils/dutmp.c index fab1a7b99..f264fd75b 100644 --- a/miscutils/dutmp.c +++ b/miscutils/dutmp.c @@ -8,22 +8,20 @@ * versions of 'who', 'last', etc. IP Addr is output in hex, * little endian on x86. * - * made against libc6 + * Modified to support all sort of libcs by + * Erik Andersen <andersen@lineo.com> */ #include "internal.h" -#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + #include <errno.h> #define BB_DECLARE_EXTERN #define bb_need_io_error #include "messages.c" - -#if defined(__GLIBC__) #include <utmp.h> -#else -#include <utmp-wrap.h> -#define utmp new_utmp -#endif static const char dutmp_usage[] = "dutmp [FILE]\n" @@ -36,27 +34,26 @@ static const char dutmp_usage[] = "dutmp [FILE]\n" extern int dutmp_main(int argc, char **argv) { - FILE *f; + int file; struct utmp ut; if (argc<2) { - f = stdin; + file = fileno(stdin); } else if (*argv[1] == '-' ) { usage(dutmp_usage); } else { - f = fopen(argv[1], "r"); - if (f == NULL) { + file = open(argv[1], O_RDONLY); + if (file < 0) { fatalError(io_error, argv[1], strerror(errno)); } } - while (fread(&ut, sizeof(struct utmp), 1, f)) { - printf("%d|%d|%s|%s|%s|%s|%d|%d|%ld|%ld|%ld|%x\n", - ut.ut_type, ut.ut_pid, ut.ut_line, - ut.ut_id, ut.ut_user, ut.ut_host, - ut.ut_exit.e_termination, ut.ut_exit.e_exit, - ut.ut_session, ut.ut_tv.tv_sec, ut.ut_tv.tv_usec, - ut.ut_addr_v6[0]); + while (read(file, (void*)&ut, sizeof(struct utmp))) { + printf("%d|%d|%s|%s|%s|%s|%s|%lx\n", + ut.ut_type, ut.ut_pid, ut.ut_line, + ut.ut_id, ut.ut_user, ut.ut_host, + ctime(&(ut.ut_time)), + (long)ut.ut_addr); } exit(TRUE); diff --git a/miscutils/mt.c b/miscutils/mt.c index 28922f8d9..44f23884c 100644 --- a/miscutils/mt.c +++ b/miscutils/mt.c @@ -61,7 +61,7 @@ extern int mt_main(int argc, char **argv) struct mtop op; int fd; - if ((argc != 2 && argc != 3) || **(argv + 1) == '-') { + if ((argc != 2 && argc != 3) && **(argv + 1) != '-') { usage(mt_usage); } |