Linux 2.6.13-rc4
[linux-2.6/next.git] / arch / alpha / lib / srm_printk.c
blob31b53c49435ec20811b01bd8774e1939e0788c92
1 /*
2 * arch/alpha/lib/srm_printk.c
3 */
5 #include <linux/kernel.h>
6 #include <asm/console.h>
8 long
9 srm_printk(const char *fmt, ...)
11 static char buf[1024];
12 va_list args;
13 long len, num_lf;
14 char *src, *dst;
16 va_start(args, fmt);
17 len = vsprintf(buf, fmt, args);
18 va_end(args);
20 /* count number of linefeeds in string: */
22 num_lf = 0;
23 for (src = buf; *src; ++src) {
24 if (*src == '\n') {
25 ++num_lf;
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';
35 *dst-- = *src--;
39 srm_puts(buf, num_lf+len);
40 return len;