Code Search for Developers
 
 
  

dmesg.c from openap at Krugle


Show dmesg.c syntax highlighted

/* vi: set sw=4 ts=4: */
/* dmesg.c -- Print out the contents of the kernel ring buffer
 * Created: Sat Oct  9 16:19:47 1993
 * Revised: Thu Oct 28 21:52:17 1993 by faith@cs.unc.edu
 * Copyright 1993 Theodore Ts'o (tytso@athena.mit.edu)
 * This program comes with ABSOLUTELY NO WARRANTY.
 * Modifications by Rick Sladkey (jrs@world.std.com)
 * Larger buffersize 3 June 1998 by Nicolai Langfeldt, based on a patch
 * by Peeter Joot.  This was also suggested by John Hudson.
 * 1999-02-22 Arkadiusz Mi¶kiewicz <misiek@misiek.eu.org>
 * - added Native Language Support
 *
 * from util-linux -- adapted for busybox by 
 * Erik Andersen <andersee@debian.org>. I ripped out Native Language 
 * Support, replaced getopt, added some gotos for redundant stuff.
 */

#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>

#if __GNU_LIBRARY__ < 5
# ifdef __alpha__
#   define klogctl syslog
# endif
#else
# include <sys/klog.h>
#endif

#include "busybox.h"

int dmesg_main(int argc, char **argv)
{
	char *buf;
	int c;
	int bufsize = 8196;
	int i;
	int n;
	int level = 0;
	int lastc;
	int cmd = 3;

	while ((c = getopt(argc, argv, "cn:s:")) != EOF) {
		switch (c) {
		case 'c':
			cmd = 4;
			break;
		case 'n':
			cmd = 8;
			if (optarg == NULL)
				show_usage();
			level = atoi(optarg);
			break;
		case 's':
			if (optarg == NULL)
				show_usage();
			bufsize = atoi(optarg);
			break;
		default:
			show_usage();
		}
	}			

	if (optind < argc) {
		show_usage();
	}

	if (cmd == 8) {
		if (klogctl(cmd, NULL, level) < 0)
			perror_msg_and_die("klogctl");
		return EXIT_SUCCESS;
	}

	if (bufsize < 4096)
		bufsize = 4096;
	buf = (char *) xmalloc(bufsize);
	if ((n = klogctl(cmd, buf, bufsize)) < 0)
		perror_msg_and_die("klogctl");

	lastc = '\n';
	for (i = 0; i < n; i++) {
		if (lastc == '\n' && buf[i] == '<') {
			i++;
			while (buf[i] >= '0' && buf[i] <= '9')
				i++;
			if (buf[i] == '>')
				i++;
		}
		lastc = buf[i];
		putchar(lastc);
	}
	if (lastc != '\n')
		putchar('\n');
	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