move strndup to libi3

This commit is contained in:
Michael Stapelberg
2011-10-23 18:02:01 +01:00
parent 78fea8e1fb
commit 9eda7fb6fb
6 changed files with 49 additions and 83 deletions

37
libi3/strndup.c Normal file
View File

@ -0,0 +1,37 @@
/*
* vim:ts=4:sw=4:expandtab
*
* i3 - an improved dynamic tiling window manager
*
* © 2009-2011 Michael Stapelberg and contributors
*
* See file LICENSE for license information.
*
*/
#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