summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/xfuncs.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/lib/xfuncs.c b/lib/xfuncs.c
index f0219c43a5..152081c662 100644
--- a/lib/xfuncs.c
+++ b/lib/xfuncs.c
@@ -22,6 +22,7 @@
#include <common.h>
#include <malloc.h>
#include <module.h>
+#include <wchar.h>
void *xmalloc(size_t size)
{
@@ -103,3 +104,57 @@ void *xmemdup(const void *orig, size_t size)
return buf;
}
EXPORT_SYMBOL(xmemdup);
+
+char *xvasprintf(const char *fmt, va_list ap)
+{
+ char *p;
+
+ p = vasprintf(fmt, ap);
+ if (!p)
+ panic("ERROR: out of memory\n");
+ return p;
+}
+EXPORT_SYMBOL(xvasprintf);
+
+char *xasprintf(const char *fmt, ...)
+{
+ va_list ap;
+ char *p;
+
+ va_start(ap, fmt);
+ p = xvasprintf(fmt, ap);
+ va_end(ap);
+
+ return p;
+}
+EXPORT_SYMBOL(xasprintf);
+
+wchar_t *xstrdup_wchar(const wchar_t *s)
+{
+ wchar_t *p = strdup_wchar(s);
+
+ if (!p)
+ panic("ERROR: out of memory\n");
+ return p;
+}
+EXPORT_SYMBOL(xstrdup_wchar);
+
+wchar_t *xstrdup_char_to_wchar(const char *s)
+{
+ wchar_t *p = strdup_char_to_wchar(s);
+
+ if (!p)
+ panic("ERROR: out of memory\n");
+ return p;
+}
+EXPORT_SYMBOL(xstrdup_char_to_wchar);
+
+char *xstrdup_wchar_to_char(const wchar_t *s)
+{
+ char *p = strdup_wchar_to_char(s);
+
+ if (!p)
+ panic("ERROR: out of memory\n");
+ return p;
+}
+EXPORT_SYMBOL(xstrdup_wchar_to_char);