From eb6770c71a17ba371b3f345a7e1cd1e31c021190 Mon Sep 17 00:00:00 2001 From: okan Date: Wed, 28 Nov 2012 14:32:44 +0000 Subject: add xasprintf() for upcoming changes. --- calmwm.h | 5 ++++- xmalloc.c | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/calmwm.h b/calmwm.h index a8f1d9f..555db70 100644 --- a/calmwm.h +++ b/calmwm.h @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: calmwm.h,v 1.160 2012/11/28 14:14:44 okan Exp $ + * $OpenBSD: calmwm.h,v 1.161 2012/11/28 14:32:44 okan Exp $ */ #ifndef _CALMWM_H_ @@ -492,6 +492,9 @@ void u_spawn(char *); void *xcalloc(size_t, size_t); void *xmalloc(size_t); char *xstrdup(const char *); +int xasprintf(char **, const char *, ...) + __attribute__((__format__ (printf, 2, 3))) + __attribute__((__nonnull__ (2))); /* Externs */ extern Display *X_Dpy; diff --git a/xmalloc.c b/xmalloc.c index 8e9d22a..c278e72 100644 --- a/xmalloc.c +++ b/xmalloc.c @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: xmalloc.c,v 1.10 2012/11/16 14:15:48 okan Exp $ + * $OpenBSD: xmalloc.c,v 1.11 2012/11/28 14:32:44 okan Exp $ */ #include @@ -69,3 +69,19 @@ xstrdup(const char *str) return (p); } + +int +xasprintf(char **ret, const char *fmt, ...) +{ + va_list ap; + int i; + + va_start(ap, fmt); + i = vasprintf(ret, fmt, ap); + va_end(ap); + + if (i < 0 || *ret == NULL) + err(1, "asprintf"); + + return (i); +} -- cgit v1.2.3-2-gb3c3