]> Pileus Git - ~andy/fetchmail/blobdiff - xmalloc.c
Credit John Beck's fixes.
[~andy/fetchmail] / xmalloc.c
index 481f818091f0254a0278b956f3d613c8b13325ed..c2ca4a66e932a32d99716d851914b13ca05da6f0 100644 (file)
--- 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 <acme@conectiva.com.br> 7-Nov-1998
  */
 
 #include "config.h"
+#include <sys/types.h>
 #include <stdio.h>
 #include <errno.h>
 #include <string.h>
 #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 */