Code Search for Developers
 
 
  

dutmp.c from openap at Krugle


Show dutmp.c syntax highlighted

/* vi: set sw=4 ts=4: */
/*
 * public domain -- Dave 'Kill a Cop' Cinege <dcinege@psychosis.com>
 * 
 * dutmp
 * Takes utmp formated file on stdin and dumps it's contents 
 * out in colon delimited fields. Easy to 'cut' for shell based 
 * versions of 'who', 'last', etc. IP Addr is output in hex, 
 * little endian on x86.
 * 
 * Modified to support all sorts of libcs by 
 * Erik Andersen <andersen@lineo.com>
 */

#include <sys/types.h>
#include <fcntl.h>

#include <errno.h>
#include <utmp.h>
#include <stdlib.h>
#include <unistd.h>
#include "busybox.h"

extern int dutmp_main(int argc, char **argv)
{

	int file;
	struct utmp ut;

	if (argc<2) {
		file = fileno(stdin);
	} else if (*argv[1] == '-' ) {
		show_usage();
	} else  {
		file = open(argv[1], O_RDONLY);
		if (file < 0) {
			perror_msg_and_die(io_error, argv[1]);
		}
	}

/* 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,
				ut.ut_id, ut.ut_user, ut.ut_host,
				ctime(&(ut.ut_time)), 
				(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_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);
	}
#endif
	return EXIT_SUCCESS;
}




See more files for this project here

openap

OpenAP is the complete distribution of open-source software that is required to produce a fully 802.11b compliant wireless access point. OpenAP is also a platform on which developers and hobbyists may realize their ideas. Since the build environment and s

Project homepage: http://savannah.nongnu.org/projects/openap
Programming language(s): Assembly,C
License: gpl2

  bootfloppy/
  debian/
  docs/
  facility/
  kernel-patches/
  libbb/
  pwd_grp/
  scripts/
  tests/
  .indent.pro
  AUTHORS
  Changelog
  Config.h
  INSTALL
  LICENSE
  Makefile
  README
  TODO
  adjtimex.c
  applets.c
  applets.h
  ar.c
  ash.c
  basename.c
  busybox.c
  busybox.h
  busybox.mkll
  busybox.sh
  busybox.spec
  cat.c
  chgrp.c
  chmod.c
  chown.c
  chroot.c
  chvt.c
  clear.c
  cmdedit.c
  cmdedit.h
  cmp.c
  cp.c
  cpio.c
  cut.c
  date.c
  dc.c
  dd.c
  deallocvt.c
  df.c
  dirname.c
  dmesg.c
  dos2unix.c
  dpkg.c
  dpkg_deb.c
  du.c
  dumpkmap.c
  dutmp.c
  echo.c
  env.c
  expr.c
  fbset.c
  fdflush.c
  find.c
  free.c
  freeramdisk.c
  fsck_minix.c
  getopt.c
  grep.c
  gunzip.c
  gzip.c
  halt.c
  head.c
  hostid.c
  hostname.c
  hush.c
  id.c
  ifconfig.c
  init.c
  insmod.c
  install.sh
  kill.c
  klogd.c
  lash.c
  length.c
  ln.c
  loadacm.c
  loadfont.c
  loadkmap.c
  logger.c
  logname.c
  logread.c
  ls.c
  lsmod.c
  makedevs.c
  md5sum.c
  mk_loop_h.sh
  mkdir.c
  mkfifo.c
  mkfs_minix.c
  mknod.c
  mkswap.c
  mktemp.c
  modprobe.c
  more.c
  mount.c
  msh.c
  mt.c
  mv.c