Blame view

lib/kasprintf.c 680 Bytes
96e3e18ee   Sam Ravnborg   lib: move kasprin...
1
2
3
4
5
6
7
8
9
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
  /*
   *  linux/lib/kasprintf.c
   *
   *  Copyright (C) 1991, 1992  Linus Torvalds
   */
  
  #include <stdarg.h>
  #include <linux/module.h>
  #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);