]> Pileus Git - ~andy/fetchmail/blobdiff - xmalloc.c
Update URL for OPIE at inner.net.
[~andy/fetchmail] / xmalloc.c
index 7bdd5303e81a169180ed5fa75a02f1c42f829a26..c5af357c0f9193e2fce47d7b846daacb4e7b330b 100644 (file)
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -1,16 +1,20 @@
 /*
  * xmalloc.c -- allocate space or die 
  *
+ * Copyright 1998 by Eric S. Raymond.
  * For license terms, see the file COPYING in this directory.
  */
 
-#include <config.h>
+#include "config.h"
+#include <sys/types.h>
 #include <stdio.h>
+#include <errno.h>
 #include <string.h>
 #if defined(STDC_HEADERS)
 #include  <stdlib.h>
 #endif
 #include "fetchmail.h"
+#include "i18n.h"
 
 #if defined(HAVE_VOIDPOINTER)
 #define XMALLOCTYPE void
 #endif
 
 XMALLOCTYPE *
-xmalloc (int n)
+xmalloc (size_t n)
 {
     XMALLOCTYPE *p;
 
     p = (XMALLOCTYPE *) malloc(n);
-    if (p == (XMALLOCTYPE *) 0) {
-       fputs("fetchmail: malloc failed\n",stderr);
+    if (p == (XMALLOCTYPE *) 0)
+    {
+       report(stderr, GT_("malloc failed\n"));
        exit(PS_UNDEFINED);
     }
     return(p);
 }
 
-char *xstrdup(char *s)
+XMALLOCTYPE *
+xrealloc (XMALLOCTYPE *p, size_t n)
+{
+    if (p == 0)
+       return xmalloc (n);
+    p = (XMALLOCTYPE *) realloc(p, n);
+    if (p == (XMALLOCTYPE *) 0)
+    {
+       report(stderr, GT_("realloc failed\n"));
+       exit(PS_UNDEFINED);
+    }
+    return p;
+}
+
+char *xstrdup(const char *s)
 {
     char *p;
     p = (char *) xmalloc(strlen(s)+1);
@@ -39,4 +58,14 @@ char *xstrdup(char *s)
     return p;
 }
 
+#if !defined(HAVE_STRDUP)
+char *strdup(const char *s)
+{
+    char *p;
+    p = (char *) malloc(strlen(s)+1);
+    strcpy(p,s);
+    return p;
+}
+#endif /* !HAVE_STRDUP */
+
 /* xmalloc.c ends here */