* amd64obsd-tdep.c (amd64obsd_sigtramp_p): Adjust for new
[deliverable/binutils-gdb.git] / libiberty / strdup.c
index 1785b34f2745a1e43d61cf42bbec1862506dd2fb..a3f17d3bcb1e6f63da5885718b16c18fc091eac6 100644 (file)
@@ -1,10 +1,32 @@
+/*
+
+@deftypefn Supplemental char* strdup (const char *@var{s})
+
+Returns a pointer to a copy of @var{s} in memory obtained from
+@code{malloc}, or @code{NULL} if insufficient memory was available.
+
+@end deftypefn
+
+*/
+
+#include <ansidecl.h>
+#ifdef ANSI_PROTOTYPES
+#include <stddef.h>
+#else
+#define size_t unsigned long
+#endif
+
+extern size_t  strlen PARAMS ((const char*));
+extern PTR     malloc PARAMS ((size_t));
+extern PTR     memcpy PARAMS ((PTR, const PTR, size_t));
+
 char *
 strdup(s)
-     char *s;
+     const char *s;
 {
-    char *result = (char*)malloc(strlen(s) + 1);
-    if (result == (char*)0)
-       return (char*)0;
-    strcpy(result, s);
-    return result;
+  size_t len = strlen (s) + 1;
+  char *result = (char*) malloc (len);
+  if (result == (char*) 0)
+    return (char*) 0;
+  return (char*) memcpy (result, s, len);
 }
This page took 0.023631 seconds and 4 git commands to generate.