| /* |
| * 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); |