From 1f305dc0fdb8415c9c1321e49cc194089e58c456 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Thu, 9 Mar 2006 22:21:20 +0000 Subject: [PATCH] Portability patch from rfelker. The bb_asprintf.c thing needs an eventual follow up in platform.h to set the #ifdef, but the workaround works for everybody, so... --- editors/sed.c | 2 +- include/inet_common.h | 2 +- include/libbb.h | 1 + libbb/bb_asprintf.c | 10 ++++++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/editors/sed.c b/editors/sed.c index 93d3f89d1..44e86e245 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -434,7 +434,7 @@ static char *parse_cmd_args(sed_cmd_t *sed_cmd, char *cmdstr) while(isspace(*cmdstr)) cmdstr++; length = strcspn(cmdstr, semicolon_whitespace); if (length) { - sed_cmd->string = strndup(cmdstr, length); + sed_cmd->string = bb_xstrndup(cmdstr, length); cmdstr += length; } } diff --git a/include/inet_common.h b/include/inet_common.h index afea5deaa..f330aa90f 100644 --- a/include/inet_common.h +++ b/include/inet_common.h @@ -11,7 +11,7 @@ #include #include #include -#include +#include extern const char bb_INET_default[]; /* = "default" */ diff --git a/include/libbb.h b/include/libbb.h index bc3fa5990..0490ee35f 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -20,6 +20,7 @@ #include #include +#include #include diff --git a/libbb/bb_asprintf.c b/libbb/bb_asprintf.c index 8658a5408..191417a2d 100644 --- a/libbb/bb_asprintf.c +++ b/libbb/bb_asprintf.c @@ -13,9 +13,19 @@ char *bb_xasprintf(const char *format, ...) int r; char *string_ptr; +#ifdef HAVE_GNU_EXTENSIONS va_start(p, format); r = vasprintf(&string_ptr, format, p); va_end(p); +#else + va_start(p, format); + r = vsnprintf(NULL, 0, format, p); + va_end(p); + string_ptr = xmalloc(r+1); + va_start(p, format); + r = vsnprintf(string_ptr, r+1, format, p); + va_end(p); +#endif if (r < 0) { bb_perror_msg_and_die("bb_xasprintf"); -- 2.25.1