diff --git a/utils/utils.c b/utils/utils.c index b38292fc36ccea35e2d11cc4ddc4cb9f458b4620..f6da457c98a78496434e71c965f52e32d76ec249 100644 --- a/utils/utils.c +++ b/utils/utils.c @@ -429,6 +429,22 @@ xcalloc( size_t n, size_t size ) return ret; } +int +xasprintf( char **dest, const char *format, ...) +{ + int ret; + va_list ap; + + va_start( ap, format ); + ret = vasprintf( dest, format, ap ); + va_end( ap ); + + if( ret < 0 ) + oom(); + + return ret; +} + /* * _capsule_set_error_literal: * @code_dest: (out) (optional): used to return an errno value diff --git a/utils/utils.h b/utils/utils.h index 7db98bac15744617a1eb130f62d1b9cf3d9389ec..1947cb0f3c6fc50ed9bf57aa2505e2e9364ea828 100644 --- a/utils/utils.h +++ b/utils/utils.h @@ -88,6 +88,7 @@ void oom( void ) __attribute__((noreturn)); char *xstrdup( const char *s ); void *xrealloc( void *ptr, size_t size ) __attribute__((alloc_size(2))); void *xcalloc( size_t n, size_t size ) __attribute__((alloc_size(1, 2), malloc)); +int xasprintf( char **s, const char *format, ...) __attribute__((format(printf, 2, 3))); /* * _capsule_steal_pointer: