1 /* 2 * arch/alpha/lib/srm_printk.c 3 */ 4 5 #include <linux/kernel.h> 6 #include <asm/console.h> 7 8 long srm_printk(const char * fmt,...)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