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 | } | ||
