#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <sys/klog.h>
#include <string.h>

// From Android sys/klog.h
#ifndef KLOG_READ_ALL
#define KLOG_READ_ALL   3
#endif
#ifndef KLOG_READ_CLEAR
#define KLOG_READ_CLEAR 4
#endif
#ifndef KLOG_SIZE_BUFFER
#define KLOG_SIZE_BUFFER 10
#endif

int dmesg_main(int argc, char **argv)
{
    char *buffer;
    char *p;
    ssize_t ret;
    int n, op, bufsize;

    bufsize = klogctl(KLOG_SIZE_BUFFER, NULL, 0);
    if (bufsize <= 0) {
        perror("klogctl size_buffer");
        return EXIT_FAILURE;
    }
    buffer = malloc(bufsize);
    if (!buffer) {
        perror("malloc");
        return EXIT_FAILURE;
    }
    buffer[0] = 0;

    if((argc == 2) && (!strcmp(argv[1],"-c"))) {
        op = KLOG_READ_CLEAR;
    } else {
        op = KLOG_READ_ALL;
    }

    n = klogctl(op, buffer, bufsize);
    if (n < 0) {
        perror("klogctl");
        return EXIT_FAILURE;
    }
    buffer[n] = '\0';

    p = buffer;
    while ((ret = write(STDOUT_FILENO, p, n))) {
        if (ret == -1) {
	    if (errno == EINTR)
                continue;
	    perror("write");
	    return EXIT_FAILURE;
	}
	p += ret;
	n -= ret;
    }
    free(buffer);
    return 0;
}
