diff options
| author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-02-19 06:16:15 +0000 |
|---|---|---|
| committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-02-19 06:16:15 +0000 |
| commit | 34e3b522eca7e8741cecb7c2241091f181d1bd1f (patch) | |
| tree | 3b64ac3aa4603539b8f8f384bc39998e29948900 /libdde_linux26/contrib/lib/kasprintf.c | |
| parent | d4e6a14eb3fad1b43a21214db139db441025baf5 (diff) | |
| parent | 6fafeb146e9efd59140ea58cebd7dd38ae9a6379 (diff) | |
Merge branch 'upstream-merged'
Diffstat (limited to 'libdde_linux26/contrib/lib/kasprintf.c')
| -rw-r--r-- | libdde_linux26/contrib/lib/kasprintf.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libdde_linux26/contrib/lib/kasprintf.c b/libdde_linux26/contrib/lib/kasprintf.c new file mode 100644 index 00000000..c5ff1fd1 --- /dev/null +++ b/libdde_linux26/contrib/lib/kasprintf.c @@ -0,0 +1,44 @@ +/* + * 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); |
