summaryrefslogtreecommitdiffstats
path: root/rtemsbsd/rtems
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-09-11 10:18:30 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-09-11 10:25:04 +0200
commitd1c8a7fbf527efe688097f348c84bd50a2e4efad (patch)
tree9519d6206c2c2f653904e807ec4a71060938dc2a /rtemsbsd/rtems
parentmedia01: Reduce record item count (diff)
downloadrtems-libbsd-d1c8a7fbf527efe688097f348c84bd50a2e4efad.tar.bz2
Add wrapper for strndup()
Diffstat (limited to 'rtemsbsd/rtems')
-rw-r--r--rtemsbsd/rtems/rtems-kernel-program.c1
-rw-r--r--rtemsbsd/rtems/rtems-program.c28
2 files changed, 22 insertions, 7 deletions
diff --git a/rtemsbsd/rtems/rtems-kernel-program.c b/rtemsbsd/rtems/rtems-kernel-program.c
index affbc1af..763878de 100644
--- a/rtemsbsd/rtems/rtems-kernel-program.c
+++ b/rtemsbsd/rtems/rtems-kernel-program.c
@@ -47,6 +47,7 @@
#undef printf
#define RTEMS_BSD_PROGRAM_NO_STRDUP_WRAP
+#define RTEMS_BSD_PROGRAM_NO_STRNDUP_WRAP
#include <machine/rtems-bsd-program.h>
struct rtems_bsd_program_control *
diff --git a/rtemsbsd/rtems/rtems-program.c b/rtemsbsd/rtems/rtems-program.c
index ba8d5c57..204ed248 100644
--- a/rtemsbsd/rtems/rtems-program.c
+++ b/rtemsbsd/rtems/rtems-program.c
@@ -546,18 +546,32 @@ rtems_bsd_program_reallocf(void *ptr, size_t size)
}
char *
-rtems_bsd_program_strdup(const char *s1)
+rtems_bsd_program_strdup(const char *s)
{
- size_t size = strlen(s1) + 1; /* add one for null termination */
- char *item;
+ size_t size;
+ void *s2;
- item = rtems_bsd_program_alloc(size, NULL);
+ size = strlen(s) + 1;
+ s2 = rtems_bsd_program_alloc(size, NULL);
+ if (s2 == NULL) {
+ return (NULL);
+ }
+
+ return (memcpy(s2, s, size));
+}
+
+char *
+rtems_bsd_program_strndup(const char *s, size_t size)
+{
+ void *s2;
- if (item != NULL) {
- memcpy(item, s1, size);
+ size = strnlen(s, size) + 1;
+ s2 = rtems_bsd_program_alloc(size, NULL);
+ if (s2 == NULL) {
+ return (NULL);
}
- return item;
+ return (memcpy(s2, s, size));
}
int