aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2020-07-09 14:01:01 +0100
committerRon Yorston <rmy@pobox.com>2020-07-09 14:01:01 +0100
commit251c93fdeca77a7bed0075bcd74d55ad741f7bbb (patch)
tree848666ebe18dfe691e0e06f057d649458e6dea4b
parent9c0b2f7020d7c30b21a930ef54be632e092e533b (diff)
downloadbusybox-w32-251c93fdeca77a7bed0075bcd74d55ad741f7bbb.tar.gz
busybox-w32-251c93fdeca77a7bed0075bcd74d55ad741f7bbb.tar.bz2
busybox-w32-251c93fdeca77a7bed0075bcd74d55ad741f7bbb.zip
win32: import strndup from gnulib
-rw-r--r--include/mingw.h5
-rw-r--r--win32/Kbuild1
-rw-r--r--win32/strndup.c36
3 files changed, 42 insertions, 0 deletions
diff --git a/include/mingw.h b/include/mingw.h
index c411a8106..c75b06330 100644
--- a/include/mingw.h
+++ b/include/mingw.h
@@ -200,6 +200,11 @@ int unsetenv(const char *env);
200#define mktemp mingw_mktemp 200#define mktemp mingw_mktemp
201 201
202/* 202/*
203 * string.h
204 */
205char *strndup(char const *s, size_t n);
206
207/*
203 * strings.h 208 * strings.h
204 */ 209 */
205int ffs(int i); 210int ffs(int i);
diff --git a/win32/Kbuild b/win32/Kbuild
index f8c8fb5af..f3d0244d2 100644
--- a/win32/Kbuild
+++ b/win32/Kbuild
@@ -20,6 +20,7 @@ lib-$(CONFIG_PLATFORM_MINGW32) += regex.o
20lib-$(CONFIG_PLATFORM_MINGW32) += select.o 20lib-$(CONFIG_PLATFORM_MINGW32) += select.o
21lib-$(CONFIG_FEATURE_PRNG_SHELL) += sh_random.o 21lib-$(CONFIG_FEATURE_PRNG_SHELL) += sh_random.o
22lib-$(CONFIG_PLATFORM_MINGW32) += statfs.o 22lib-$(CONFIG_PLATFORM_MINGW32) += statfs.o
23lib-$(CONFIG_PLATFORM_MINGW32) += strndup.o
23lib-$(CONFIG_PLATFORM_MINGW32) += strptime.o 24lib-$(CONFIG_PLATFORM_MINGW32) += strptime.o
24lib-$(CONFIG_PLATFORM_MINGW32) += system.o 25lib-$(CONFIG_PLATFORM_MINGW32) += system.o
25lib-$(CONFIG_PLATFORM_MINGW32) += termios.o 26lib-$(CONFIG_PLATFORM_MINGW32) += termios.o
diff --git a/win32/strndup.c b/win32/strndup.c
new file mode 100644
index 000000000..4d04609f6
--- /dev/null
+++ b/win32/strndup.c
@@ -0,0 +1,36 @@
1/* A replacement function, for systems that lack strndup.
2
3 Copyright (C) 1996-1998, 2001-2003, 2005-2007, 2009-2020 Free Software
4 Foundation, Inc.
5
6 This program is free software; you can redistribute it and/or modify it
7 under the terms of the GNU General Public License as published by the
8 Free Software Foundation; either version 2, or (at your option) any
9 later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, see <https://www.gnu.org/licenses/>. */
18
19#include "libbb.h"
20
21#include <string.h>
22
23#include <stdlib.h>
24
25char *
26strndup (char const *s, size_t n)
27{
28 size_t len = strnlen (s, n);
29 char *new = malloc (len + 1);
30
31 if (new == NULL)
32 return NULL;
33
34 new[len] = '\0';
35 return memcpy (new, s, len);
36}