/* * arch/alpha/lib/srm_printk.c */ #include <linux/kernel.h> #include <asm/console.h> long srm_printk(const char *fmt, ...) { static char buf[1024]; va_list args; long len, num_lf; char *src, *dst; va_start(args, fmt); len = vsprintf(buf, fmt, args); va_end(args); /* count number of linefeeds in string: */ num_lf = 0; for (src = buf; *src; ++src) { if (*src == '\n') { ++num_lf; } } if (num_lf) { /* expand each linefeed into carriage-return/linefeed: */ for (dst = src + num_lf; src >= buf; ) { if (*src == '\n') { *dst-- = '\r'; } *dst-- = *src--; } } srm_puts(buf, num_lf+len); return len; }