mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-17 04:26:23 +08:00
Add wrapper for strndup()
This commit is contained in:
@@ -107,7 +107,10 @@ void *
|
||||
rtems_bsd_program_reallocf(void *ptr, size_t size);
|
||||
|
||||
char *
|
||||
rtems_bsd_program_strdup(const char *s1);
|
||||
rtems_bsd_program_strdup(const char *s);
|
||||
|
||||
char *
|
||||
rtems_bsd_program_strndup(const char *s, size_t size);
|
||||
|
||||
int
|
||||
rtems_bsd_program_vasprintf(char **strp, const char *fmt, va_list ap);
|
||||
@@ -177,7 +180,11 @@ rtems_bsd_program_free(void *ptr);
|
||||
#endif
|
||||
|
||||
#ifndef RTEMS_BSD_PROGRAM_NO_STRDUP_WRAP
|
||||
#define strdup(s1) rtems_bsd_program_strdup(s1)
|
||||
#define strdup(s) rtems_bsd_program_strdup(s)
|
||||
#endif
|
||||
|
||||
#ifndef RTEMS_BSD_PROGRAM_NO_STRNDUP_WRAP
|
||||
#define strndup(s, size) rtems_bsd_program_strndup(s, size)
|
||||
#endif
|
||||
|
||||
#ifndef RTEMS_BSD_PROGRAM_NO_VASPRINTF_WRAP
|
||||
|
@@ -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 *
|
||||
|
@@ -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);
|
||||
|
||||
if (item != NULL) {
|
||||
memcpy(item, s1, size);
|
||||
size = strlen(s) + 1;
|
||||
s2 = rtems_bsd_program_alloc(size, NULL);
|
||||
if (s2 == NULL) {
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
return item;
|
||||
return (memcpy(s2, s, size));
|
||||
}
|
||||
|
||||
char *
|
||||
rtems_bsd_program_strndup(const char *s, size_t size)
|
||||
{
|
||||
void *s2;
|
||||
|
||||
size = strnlen(s, size) + 1;
|
||||
s2 = rtems_bsd_program_alloc(size, NULL);
|
||||
if (s2 == NULL) {
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
return (memcpy(s2, s, size));
|
||||
}
|
||||
|
||||
int
|
||||
|
Reference in New Issue
Block a user