From 8ae7d9e6f638d7dd933cb55adc517bf0848179ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96man?= Date: Tue, 16 Feb 2010 19:53:53 +0000 Subject: [PATCH] Dont use strndup(). It's too GNUish --- src/htsstr.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/htsstr.c b/src/htsstr.c index 9d4ce347..dbcf9923 100644 --- a/src/htsstr.c +++ b/src/htsstr.c @@ -17,8 +17,6 @@ * along with this program. If not, see . */ -#define _GNU_SOURCE /* strndup */ - #include #include #include @@ -28,6 +26,14 @@ static void htsstr_argsplit_add(char ***argv, int *argc, char *s); static int htsstr_format0(const char *str, char *out, char **map); +static char * +mystrndup(const char *src, size_t len) +{ + char *r = malloc(len + 1); + r[len] = 0; + return memcpy(r, src, len); +} + char * htsstr_unescape(char *str) { @@ -79,7 +85,7 @@ htsstr_argsplit(const char *str) { for(s = str; *s; s++) { if(start && stop) { htsstr_argsplit_add(&argv, &argc, - htsstr_unescape(strndup(start, stop - start))); + htsstr_unescape(mystrndup(start, stop - start))); start = stop = NULL; } @@ -125,7 +131,7 @@ htsstr_argsplit(const char *str) { if(!stop) stop = str + strlen(str); htsstr_argsplit_add(&argv, &argc, - htsstr_unescape(strndup(start, stop - start))); + htsstr_unescape(mystrndup(start, stop - start))); } htsstr_argsplit_add(&argv, &argc, NULL);