diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-02-19 06:14:24 +0000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-02-19 06:14:24 +0000 |
commit | 6fafeb146e9efd59140ea58cebd7dd38ae9a6379 (patch) | |
tree | 7db89ba6a28932514b105d620bba4884ec332ec3 /libdde_linux26/contrib/lib/kasprintf.c | |
parent | 38c2c2458e3f4ecb329ff35621806252aac209b9 (diff) | |
parent | 8df772b3c665e663f6f9d2a70f9c691590bd3f91 (diff) |
Merge branch 'dde' into 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); |