i3/libi3/strndup.c

35 lines
640 B
C
Raw Normal View History

2011-10-23 13:02:01 -04:00
/*
* vim:ts=4:sw=4:expandtab
*
* i3 - an improved dynamic tiling window manager
* © 2009 Michael Stapelberg and contributors (see also: LICENSE)
2011-10-23 13:02:01 -04:00
*
*/
#include <sys/types.h>
#include <string.h>
#include "libi3.h"
#if defined(__APPLE__)
/*
* Taken from FreeBSD
* Returns a pointer to a new string which is a duplicate of the
* string, but only copies at most n characters.
*
*/
char *strndup(const char *str, size_t n) {
size_t len;
char *copy;
for (len = 0; len < n && str[len]; len++)
continue;
copy = smalloc(len + 1);
memcpy(copy, str, len);
copy[len] = '\0';
return (copy);
}
#endif