1#include "libc.h"
2#include <errno.h>
3#include <string.h>
4
5int strerror_r(int err, char* buf, size_t buflen) {
6    char* msg = strerror(err);
7    size_t l = strlen(msg);
8    if (l >= buflen) {
9        if (buflen) {
10            memcpy(buf, msg, buflen - 1);
11            buf[buflen - 1] = 0;
12        }
13        return ERANGE;
14    }
15    memcpy(buf, msg, l + 1);
16    return 0;
17}
18
19weak_alias(strerror_r, __xpg_strerror_r);
20