*
*/
+char *
+strndup(const char *str, size_t n)
+{
+ size_t slen = strlen(str);
+ char *ret;
+
+ if (slen > n) slen = n;
+ ret = malloc (slen + 1);
+ if (!ret) return NULL;
+
+ if (slen > 0) memcpy(ret, str, slen);
+ ret[slen] = '\0';
+ return ret;
+}
+
int ffs(int i)
{
int size;
* bit related functions
*
*/
+/**
+ * @brief Duplicate a string
+ *
+ * @param str String to be duplicated
+ * @param n size of new duplicated string
+ * @return The strndup() function returns a pointer to the duplicated string, or NULL if insufficient memory was available.
+ *
+ * This function returns a pointer to a new string which is a duplicate of the string str,
+ * but only copies at most n bytes. If str is longer than n, only n bytes are copied,
+ * and a terminating null byte ('\0') is added.
+ *
+ * Conformity: BSD
+ *
+ * Supported OS: Windows XP.
+ */
+EAPI char *strndup(const char *str, size_t n);
/**
* @brief Return the position of the first (least significant) bit set in a word