Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
srm_printk.c
Go to the documentation of this file.
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 }