diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc/string/strdup.3 | 23 | ||||
-rw-r--r-- | lib/libc/string/strdup.c | 25 |
2 files changed, 30 insertions, 18 deletions
diff --git a/lib/libc/string/strdup.3 b/lib/libc/string/strdup.3 index 4129fe5c0e6..04ec042d00c 100644 --- a/lib/libc/string/strdup.3 +++ b/lib/libc/string/strdup.3 @@ -1,5 +1,7 @@ -.\" Copyright (c) 1990, 1991 The Regents of the University of California. -.\" All rights reserved. +.\" $OpenBSD: strdup.3,v 1.4 1997/08/20 04:18:51 millert Exp $ +.\" +.\" Copyright (c) 1990, 1991, 1993 +.\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -29,9 +31,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $OpenBSD: strdup.3,v 1.3 1996/10/29 23:41:57 michaels Exp $ +.\" @(#)strdup.3 8.1 (Berkeley) 6/9/93 .\" -.Dd April 19, 1991 +.Dd June 9, 1993 .Dt STRDUP 3 .Os .Sh NAME @@ -52,13 +54,14 @@ does the copy, and returns a pointer to it. The pointer may subsequently be used as an argument to the function .Xr free 3 . +.Pp +If insufficient memory is available, NULL is returned. .Sh SEE ALSO -.Xr free 3 , -.Xr malloc 3 , -.Xt strcpy 3 , -.Xt strlen 3 +.Xr free 3 +.Xr malloc 3 +.Xr strcpy 3 +.Xr strlen 3 .Sh HISTORY The .Fn strdup -function is -.Ud . +function first appeared in 4.4BSD. diff --git a/lib/libc/string/strdup.c b/lib/libc/string/strdup.c index 74c462d2411..be7f7ad0946 100644 --- a/lib/libc/string/strdup.c +++ b/lib/libc/string/strdup.c @@ -1,6 +1,8 @@ +/* $OpenBSD: strdup.c,v 1.3 1997/08/20 04:18:52 millert Exp $ */ + /* - * Copyright (c) 1988 The Regents of the University of California. - * All rights reserved. + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -32,9 +34,16 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: strdup.c,v 1.2 1996/08/19 08:34:16 tholo Exp $"; +#if 0 +static char sccsid[] = "@(#)strdup.c 8.1 (Berkeley) 6/4/93"; +#else +static char *rcsid = "$OpenBSD: strdup.c,v 1.3 1997/08/20 04:18:52 millert Exp $"; +#endif #endif /* LIBC_SCCS and not lint */ +#include <sys/types.h> + +#include <stddef.h> #include <stdlib.h> #include <string.h> @@ -42,12 +51,12 @@ char * strdup(str) const char *str; { - size_t len; + size_t siz; char *copy; - len = strlen(str) + 1; - if (!(copy = malloc(len))) - return((char *)NULL); - memcpy(copy, str, len); + siz = strlen(str) + 1; + if ((copy = malloc(siz)) == NULL) + return(NULL); + (void)memcpy(copy, str, siz); return(copy); } |