Blame view

lib/kasprintf.c 704 Bytes
96e3e18ee   Sam Ravnborg   lib: move kasprin...
1
2
3
4
5
6
7
8
  /*
   *  linux/lib/kasprintf.c
   *
   *  Copyright (C) 1991, 1992  Linus Torvalds
   */
  
  #include <stdarg.h>
  #include <linux/module.h>
5a0e3ad6a   Tejun Heo   include cleanup: ...
9
  #include <linux/slab.h>
96e3e18ee   Sam Ravnborg   lib: move kasprin...
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  #include <linux/types.h>
  #include <linux/string.h>
  
  /* Simplified asprintf. */
  char *kvasprintf(gfp_t gfp, const char *fmt, va_list ap)
  {
  	unsigned int len;
  	char *p;
  	va_list aq;
  
  	va_copy(aq, ap);
  	len = vsnprintf(NULL, 0, fmt, aq);
  	va_end(aq);
  
  	p = kmalloc(len+1, gfp);
  	if (!p)
  		return NULL;
  
  	vsnprintf(p, len+1, fmt, ap);
  
  	return p;
  }
  EXPORT_SYMBOL(kvasprintf);
  
  char *kasprintf(gfp_t gfp, const char *fmt, ...)
  {
  	va_list ap;
  	char *p;
  
  	va_start(ap, fmt);
  	p = kvasprintf(gfp, fmt, ap);
  	va_end(ap);
  
  	return p;
  }
  EXPORT_SYMBOL(kasprintf);