Since we need to do this for portability, (some systems don't have a
strndup function), we might as well do it unconditionally. There's
almost no disadvantage to doing so, and this has the advantages of not
requiring a configure-time check nor having two different
implementations, one of which would often be less tested.
-----------
Fix configure script to test each compiler warning we want to use.
-Implement strndup locally (or call talloc_strndup instead).
-
Implement getline locally, (look at gnulib).
Completion
* Author: Carl Worth <cworth@cworth.org>
*/
-#define _GNU_SOURCE /* For strndup */
#include "notmuch-private.h"
#include <stdio.h>
{
char *ret;
- ret = strndup (s, n);
+ if (strlen (s) <= n)
+ n = strlen (s);
+
+ ret = malloc (n + 1);
if (ret == NULL) {
fprintf (stderr, "Out of memory.\n");
exit (1);
}
+ memcpy (ret, s, n);
+ ret[n] = '\0';
return ret;
}