* Erik Andersen <andersen@lineo.com>
*/
-#include "busybox.h"
#include <sys/types.h>
#include <fcntl.h>
#include <errno.h>
+#include <utmp.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_io_error
#include "messages.c"
-#include <utmp.h>
extern int dutmp_main(int argc, char **argv)
{
if (argc<2) {
file = fileno(stdin);
} else if (*argv[1] == '-' ) {
- usage(dutmp_usage);
+ show_usage();
} else {
file = open(argv[1], O_RDONLY);
if (file < 0) {
- fatalError(io_error, argv[1], strerror(errno));
+ perror_msg_and_die(io_error, argv[1]);
}
}
-/* Kludge around the fact that the binary format for utmp has changed, and the
- * fact the stupid libc doesn't have a reliable #define to announce that libc5
- * is being used. sigh.
- */
-#if ! defined __GLIBC__
+/* Kludge around the fact that the binary format for utmp has changed. */
+#if __GNU_LIBRARY__ < 5 || defined __UCLIBC__
+ /* Linux libc5 */
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,
(long)ut.ut_addr);
}
#else
+ /* Glibc, uClibc, etc */
while (read(file, (void*)&ut, sizeof(struct utmp))) {
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_addr);
}
#endif
- return(TRUE);
+ return EXIT_SUCCESS;
}