X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=xmalloc.c;h=6107564d93eb51731e966c89eec8c396e7fed3b8;hb=98cfcef26048bba06975e68a1aad05a8bac0d65d;hp=a762d0a2408b03d6c8ab459a869526255aacb0eb;hpb=6419d6f7beb6af32facab158fcfb4f2dc973ccf0;p=~andy%2Ffetchmail diff --git a/xmalloc.c b/xmalloc.c index a762d0a2..6107564d 100644 --- a/xmalloc.c +++ b/xmalloc.c @@ -10,42 +10,32 @@ #include #include #include -#if defined(STDC_HEADERS) #include -#endif #include "fetchmail.h" -#include "i18n.h" +#include "gettext.h" -#if defined(HAVE_VOIDPOINTER) -#define XMALLOCTYPE void -#else -#define XMALLOCTYPE char -#endif - -XMALLOCTYPE * -xmalloc (size_t n) +void *xmalloc (size_t n) { - XMALLOCTYPE *p; + void *p; - p = (XMALLOCTYPE *) malloc(n); - if (p == (XMALLOCTYPE *) 0) + p = (void *) malloc(n); + if (p == (void *) 0) { report(stderr, GT_("malloc failed\n")); - exit(PS_UNDEFINED); + abort(); } return(p); } -XMALLOCTYPE * -xrealloc (XMALLOCTYPE *p, size_t n) +void *xrealloc (void *p, size_t n) { if (p == 0) return xmalloc (n); - p = (XMALLOCTYPE *) realloc(p, n); - if (p == (XMALLOCTYPE *) 0) + p = (void *) realloc(p, n); + if (p == (void *) 0) { report(stderr, GT_("realloc failed\n")); - exit(PS_UNDEFINED); + abort(); } return p; } @@ -58,15 +48,17 @@ char *xstrdup(const char *s) return p; } -#if !defined(HAVE_STRDUP) -char *strdup(const char *s) +char *xstrndup(const char *s, size_t len) { char *p; - p = (char *) malloc(strlen(s)+1); - if (p) - strcpy(p,s); + size_t l = strlen(s); + + if (len < l) l = len; + p = (char *)xmalloc(l + 1); + memcpy(p, s, l); + p[l] = '\0'; return p; } -#endif /* !HAVE_STRDUP */ + /* xmalloc.c ends here */