at v2.6.29 680 B view raw
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. */ 13char *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} 31EXPORT_SYMBOL(kvasprintf); 32 33char *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} 44EXPORT_SYMBOL(kasprintf);