Linux-2.6.12-rc2
[linux-2.6.git] / arch / alpha / lib / srm_printk.c
1 /*
2  *      arch/alpha/lib/srm_printk.c
3  */
4
5 #include <linux/kernel.h>
6 #include <asm/console.h>
7
8 long
9 srm_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 }