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}
42