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