1#include <stdlib.h>
2#include <string.h>
3
4char* strndup(const char* s, size_t n) {
5    size_t l = strnlen(s, n);
6    char* d = malloc(l + 1);
7    if (!d)
8        return NULL;
9    memcpy(d, s, l);
10    d[l] = 0;
11    return d;
12}
13