X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=xmalloc.c;h=c2ca4a66e932a32d99716d851914b13ca05da6f0;hb=1f424173b39a13ac19bae5afe90c21b071ad0ab2;hp=481f818091f0254a0278b956f3d613c8b13325ed;hpb=cffef417bb9e0a231968c5fbadca8e5141a65083;p=~andy%2Ffetchmail diff --git a/xmalloc.c b/xmalloc.c index 481f8180..c2ca4a66 100644 --- a/xmalloc.c +++ b/xmalloc.c @@ -1,12 +1,12 @@ /* * xmalloc.c -- allocate space or die * + * Copyright 1998 by Eric S. Raymond. * For license terms, see the file COPYING in this directory. - * - * i18n by Arnaldo Carvalho de Melo 7-Nov-1998 */ #include "config.h" +#include #include #include #include @@ -23,24 +23,30 @@ #endif XMALLOCTYPE * -xmalloc (int n) +xmalloc (size_t n) { XMALLOCTYPE *p; p = (XMALLOCTYPE *) malloc(n); if (p == (XMALLOCTYPE *) 0) - error(PS_UNDEFINED, errno, _("malloc failed")); + { + report(stderr, GT_("malloc failed\n")); + abort(); + } return(p); } XMALLOCTYPE * -xrealloc (XMALLOCTYPE *p, int n) +xrealloc (XMALLOCTYPE *p, size_t n) { if (p == 0) return xmalloc (n); p = (XMALLOCTYPE *) realloc(p, n); if (p == (XMALLOCTYPE *) 0) - error(PS_UNDEFINED, errno, _("realloc failed")); + { + report(stderr, GT_("realloc failed\n")); + abort(); + } return p; } @@ -52,4 +58,27 @@ char *xstrdup(const char *s) return p; } +#if !defined(HAVE_STRDUP) +char *strdup(const char *s) +{ + char *p; + p = (char *) malloc(strlen(s)+1); + if (p) + strcpy(p,s); + return p; +} +#endif /* !HAVE_STRDUP */ + +char *xstrndup(const char *s, size_t len) +{ + char *p; + size_t l = strlen(s); + + if (len < l) l = len; + p = (char *)xmalloc(l + 1); + memcpy(p, s, l); + p[l] = '\0'; + return p; +} + /* xmalloc.c ends here */