From 499f65fb98a8258f8704b52efb3a99da0c82f785 Mon Sep 17 00:00:00 2001 From: Erik Andersen Date: Tue, 16 May 2000 20:07:38 +0000 Subject: Some updates for better portability. -Erik --- miscutils/dutmp.c | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) (limited to 'miscutils/dutmp.c') 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 */ #include "internal.h" -#include +#include +#include +#include + #include #define BB_DECLARE_EXTERN #define bb_need_io_error #include "messages.c" - -#if defined(__GLIBC__) #include -#else -#include -#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); -- cgit v1.2.3