X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=xmalloc.c;h=6107564d93eb51731e966c89eec8c396e7fed3b8;hb=4b493b7cf285fa8ee2c572987e2e59ec3a743c0b;hp=3679b508a6ff6209fa1e77fce796309bfbc95a92;hpb=701af5a98743f6e49f435d66385ba10f95457b27;p=~andy%2Ffetchmail diff --git a/xmalloc.c b/xmalloc.c index 3679b508..6107564d 100644 --- a/xmalloc.c +++ b/xmalloc.c @@ -1,37 +1,64 @@ /* + * xmalloc.c -- allocate space or die + * + * Copyright 1998 by Eric S. Raymond. * For license terms, see the file COPYING in this directory. */ -/*********************************************************************** - module: xmalloc.c - project: fetchmail - programmer: Carl Harris, ceharris@mal.com - description: malloc wrapper. +#include "config.h" +#include +#include +#include +#include +#include +#include "fetchmail.h" +#include "gettext.h" - ***********************************************************************/ +void *xmalloc (size_t n) +{ + void *p; + p = (void *) malloc(n); + if (p == (void *) 0) + { + report(stderr, GT_("malloc failed\n")); + abort(); + } + return(p); +} -#include -#include -#include -#include "fetchmail.h" +void *xrealloc (void *p, size_t n) +{ + if (p == 0) + return xmalloc (n); + p = (void *) realloc(p, n); + if (p == (void *) 0) + { + report(stderr, GT_("realloc failed\n")); + abort(); + } + return p; +} -#if defined(HAVE_VOIDPOINTER) -#define XMALLOCTYPE void -#else -#define XMALLOCTYPE char -#endif +char *xstrdup(const char *s) +{ + char *p; + p = (char *) xmalloc(strlen(s)+1); + strcpy(p,s); + return p; +} -XMALLOCTYPE * -xmalloc (n) -size_t n; +char *xstrndup(const char *s, size_t len) { - XMALLOCTYPE *p; - - p = (XMALLOCTYPE *) malloc(n); - if (p == (XMALLOCTYPE *) 0) { - fputs("malloc failed\n",stderr); - exit(PS_UNDEFINED); - } - return(p); + 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 */