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