PageRenderTime 29ms CodeModel.GetById 16ms app.highlight 7ms RepoModel.GetById 2ms app.codeStats 0ms

/arch/alpha/lib/srm_printk.c

https://bitbucket.org/evzijst/gittest
C | 41 lines | 29 code | 7 blank | 5 comment | 7 complexity | f3383ba5f3aa6b0dea885274cec1e40f MD5 | raw file
 1/*
 2 *	arch/alpha/lib/srm_printk.c
 3 */
 4
 5#include <linux/kernel.h>
 6#include <asm/console.h>
 7
 8long
 9srm_printk(const char *fmt, ...)
10{
11	static char buf[1024];
12	va_list args;
13	long len, num_lf;
14	char *src, *dst;
15
16	va_start(args, fmt);
17	len = vsprintf(buf, fmt, args);
18	va_end(args);
19
20	/* count number of linefeeds in string: */
21
22	num_lf = 0;
23	for (src = buf; *src; ++src) {
24		if (*src == '\n') {
25			++num_lf;
26		}
27	}
28
29	if (num_lf) {
30		/* expand each linefeed into carriage-return/linefeed: */
31		for (dst = src + num_lf; src >= buf; ) {
32			if (*src == '\n') {
33				*dst-- = '\r';
34			}
35			*dst-- = *src--;
36		}
37	}
38
39	srm_puts(buf, num_lf+len);	
40        return len;
41}