Re: [PATCH] Make xstrndup common
- From
Alex Riesen <raa.lkml@gmail.com>
- Date
- May 3, 2007, 09:06 UTC
- Message-ID
- <81b0412b0705030206u3a6b8a46qfd98ccf597d3c96e@mail.gmail.com>
- In-Reply-To
- <Pine.LNX.4.64.0705022248040.28708@iabervon.org>
On 5/3/07, Daniel Barkalow <barkalow@iabervon.org> wrote:
Show 11 quoted lines
> +static inline char *xstrndup(const char *str, int len)
> +{
> + char *ret;
> + int i;
> + for (i = 0; i < len && str[i]; i++)
> + ;
> + ret = xmalloc(i + 1);
> + strncpy(ret, str, i);
> + ret[i] = '\0';
> + return ret;
> +}I'd suggest using platform-optimized memchr:
static inline char *xstrndup(const char *s, int len)
{
char *p = memchr(s, 0, len);
int n = p ? p - s: len;
p = xmalloc(n + 1);
memcpy(p, s, n);
p[n] = '\0';
return p;
}