diff options
author | Ron Yorston <rmy@pobox.com> | 2020-07-09 14:01:01 +0100 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2020-07-09 14:01:01 +0100 |
commit | 251c93fdeca77a7bed0075bcd74d55ad741f7bbb (patch) | |
tree | 848666ebe18dfe691e0e06f057d649458e6dea4b | |
parent | 9c0b2f7020d7c30b21a930ef54be632e092e533b (diff) | |
download | busybox-w32-251c93fdeca77a7bed0075bcd74d55ad741f7bbb.tar.gz busybox-w32-251c93fdeca77a7bed0075bcd74d55ad741f7bbb.tar.bz2 busybox-w32-251c93fdeca77a7bed0075bcd74d55ad741f7bbb.zip |
win32: import strndup from gnulib
-rw-r--r-- | include/mingw.h | 5 | ||||
-rw-r--r-- | win32/Kbuild | 1 | ||||
-rw-r--r-- | win32/strndup.c | 36 |
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 | */ | ||
205 | char *strndup(char const *s, size_t n); | ||
206 | |||
207 | /* | ||
203 | * strings.h | 208 | * strings.h |
204 | */ | 209 | */ |
205 | int ffs(int i); | 210 | int 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 | |||
20 | lib-$(CONFIG_PLATFORM_MINGW32) += select.o | 20 | lib-$(CONFIG_PLATFORM_MINGW32) += select.o |
21 | lib-$(CONFIG_FEATURE_PRNG_SHELL) += sh_random.o | 21 | lib-$(CONFIG_FEATURE_PRNG_SHELL) += sh_random.o |
22 | lib-$(CONFIG_PLATFORM_MINGW32) += statfs.o | 22 | lib-$(CONFIG_PLATFORM_MINGW32) += statfs.o |
23 | lib-$(CONFIG_PLATFORM_MINGW32) += strndup.o | ||
23 | lib-$(CONFIG_PLATFORM_MINGW32) += strptime.o | 24 | lib-$(CONFIG_PLATFORM_MINGW32) += strptime.o |
24 | lib-$(CONFIG_PLATFORM_MINGW32) += system.o | 25 | lib-$(CONFIG_PLATFORM_MINGW32) += system.o |
25 | lib-$(CONFIG_PLATFORM_MINGW32) += termios.o | 26 | lib-$(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 | |||
25 | char * | ||
26 | strndup (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 | } | ||