linux/arch/alpha/lib/srm_printk.c
<<
>>
Prefs
   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