Blame view

lib/kasprintf.c 717 Bytes
96e3e18ee   Sam Ravnborg   lib: move kasprin...
1
2
3
4
5
6
7
  /*
   *  linux/lib/kasprintf.c
   *
   *  Copyright (C) 1991, 1992  Linus Torvalds
   */
  
  #include <stdarg.h>
8bc3bcc93   Paul Gortmaker   lib: reduce the u...
8
  #include <linux/export.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
  #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);
3e1aa66bd   Ezequiel Garcia   lib/kasprintf.c: ...
23
  	p = kmalloc_track_caller(len+1, gfp);
96e3e18ee   Sam Ravnborg   lib: move kasprin...
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
  	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);