libxfs: provide a kernel-compatible kasprintf
The kernel-like kasprintf will be used by the new metadir code, as well
as the rmap data structures in xfs_repair.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
[djwong: tweak commit message]
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
diff --git a/include/kmem.h b/include/kmem.h
index 386b4a6..8dfb2fb 100644
--- a/include/kmem.h
+++ b/include/kmem.h
@@ -65,4 +65,7 @@
free((void *)ptr);
}
+__attribute__((format(printf,2,3)))
+char *kasprintf(gfp_t gfp, const char *fmt, ...);
+
#endif
diff --git a/libxfs/kmem.c b/libxfs/kmem.c
index a2a3935..2e29351 100644
--- a/libxfs/kmem.c
+++ b/libxfs/kmem.c
@@ -104,3 +104,16 @@
}
return ptr;
}
+
+char *kasprintf(gfp_t gfp, const char *fmt, ...)
+{
+ va_list ap;
+ char *p;
+
+ va_start(ap, fmt);
+ if (vasprintf(&p, fmt, ap) < 0)
+ p = NULL;
+ va_end(ap);
+
+ return p;
+}