gettimeofday munmap strtoul ftruncate gethostbyname \
localtime_r memset mkdir rmdir setenv socket \
strchr strdup strerror strndup strrchr strtoull tzset \
+ strnlen \
])
# Check for MinGW32.
#include <babeltrace/babeltrace-internal.h>
#include <babeltrace/ctf/types.h>
#include <babeltrace/compat/limits.h> /* C99 limits */
-#include <string.h>
+#include <babeltrace/compat/string.h>
int ctf_string_read(struct bt_stream_pos *ppos, struct bt_definition *definition)
{
if (max_len_bits < 0)
return -EFAULT;
/* Add \0, counting in bytes. */
- len = strnlen(srcaddr, (size_t) max_len_bits / CHAR_BIT) + 1;
+ len = bt_strnlen(srcaddr, (size_t) max_len_bits / CHAR_BIT) + 1;
/* Truncated string, unexpected. Trace probably corrupted. */
if (srcaddr[len - 1] != '\0')
return -EFAULT;
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
-#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <babeltrace/endian.h>
#include <babeltrace/compat/memstream.h>
#include <babeltrace/compat/send.h>
+#include <babeltrace/compat/string.h>
#include "lttng-live.h"
#include "lttng-viewer-abi.h"
return;
relay_session = g_new0(struct lttng_live_relay_session, 1);
- relay_session->hostname = strndup(hostname, MAXNAMLEN);
- relay_session->name = strndup(session_name, MAXNAMLEN);
+ relay_session->hostname = bt_strndup(hostname, MAXNAMLEN);
+ relay_session->name = bt_strndup(session_name, MAXNAMLEN);
relay_session->clients = clients;
relay_session->streams = streams;
relay_session->timer = timer;
*/
#include <string.h>
+#include <stdlib.h>
#if !defined(__linux__) || ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !defined(_GNU_SOURCE))
#endif
+#ifdef HAVE_STRNLEN
+static inline
+size_t bt_strnlen(const char *str, size_t max)
+{
+ return strnlen(str, max);
+}
+#else
+static inline
+size_t bt_strnlen(const char *str, size_t max)
+{
+ size_t ret;
+ const char *end;
+
+ end = memchr(str, 0, max);
+
+ if (end) {
+ ret = (size_t) (end - str);
+ } else {
+ ret = max;
+ }
+
+ return ret;
+}
+#endif /* HAVE_STRNLEN */
+
+#ifdef HAVE_STRNDUP
+static inline
+char *bt_strndup(const char *s, size_t n)
+{
+ return strndup(s, n);
+}
+#else
+static inline
+char *bt_strndup(const char *s, size_t n)
+{
+ char *ret;
+ size_t navail;
+
+ if (!s) {
+ ret = NULL;
+ goto end;
+ }
+
+ /* min() */
+ navail = strlen(s) + 1;
+ if ((n + 1) < navail) {
+ navail = n + 1;
+ }
+
+ ret = malloc(navail);
+ if (!ret) {
+ goto end;
+ }
+
+ memcpy(ret, s, navail);
+ ret[navail - 1] = '\0';
+end:
+ return ret;
+}
+#endif /* HAVE_STRNDUP */
+
#endif /* _BABELTRACE_COMPAT_STRING_H */