1*2fe8fb19SBen Gras.\" Copyright (c) 1990, 1991, 1993 2*2fe8fb19SBen Gras.\" The Regents of the University of California. All rights reserved. 3*2fe8fb19SBen Gras.\" 4*2fe8fb19SBen Gras.\" Redistribution and use in source and binary forms, with or without 5*2fe8fb19SBen Gras.\" modification, are permitted provided that the following conditions 6*2fe8fb19SBen Gras.\" are met: 7*2fe8fb19SBen Gras.\" 1. Redistributions of source code must retain the above copyright 8*2fe8fb19SBen Gras.\" notice, this list of conditions and the following disclaimer. 9*2fe8fb19SBen Gras.\" 2. Redistributions in binary form must reproduce the above copyright 10*2fe8fb19SBen Gras.\" notice, this list of conditions and the following disclaimer in the 11*2fe8fb19SBen Gras.\" documentation and/or other materials provided with the distribution. 12*2fe8fb19SBen Gras.\" 3. Neither the name of the University nor the names of its contributors 13*2fe8fb19SBen Gras.\" may be used to endorse or promote products derived from this software 14*2fe8fb19SBen Gras.\" without specific prior written permission. 15*2fe8fb19SBen Gras.\" 16*2fe8fb19SBen Gras.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17*2fe8fb19SBen Gras.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18*2fe8fb19SBen Gras.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19*2fe8fb19SBen Gras.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 20*2fe8fb19SBen Gras.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21*2fe8fb19SBen Gras.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22*2fe8fb19SBen Gras.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23*2fe8fb19SBen Gras.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24*2fe8fb19SBen Gras.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25*2fe8fb19SBen Gras.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26*2fe8fb19SBen Gras.\" SUCH DAMAGE. 27*2fe8fb19SBen Gras.\" 28*2fe8fb19SBen Gras.\" from: @(#)strdup.3 8.1 (Berkeley) 6/9/93 29*2fe8fb19SBen Gras.\" $NetBSD: strdup.3,v 1.18 2009/01/29 10:15:39 wiz Exp $ 30*2fe8fb19SBen Gras.\" 31*2fe8fb19SBen Gras.Dd January 28, 2009 32*2fe8fb19SBen Gras.Dt STRDUP 3 33*2fe8fb19SBen Gras.Os 34*2fe8fb19SBen Gras.Sh NAME 35*2fe8fb19SBen Gras.Nm strdup , 36*2fe8fb19SBen Gras.Nm strndup 37*2fe8fb19SBen Gras.Nd save a copy of a string 38*2fe8fb19SBen Gras.Sh LIBRARY 39*2fe8fb19SBen Gras.Lb libc 40*2fe8fb19SBen Gras.Sh SYNOPSIS 41*2fe8fb19SBen Gras.In string.h 42*2fe8fb19SBen Gras.Ft char * 43*2fe8fb19SBen Gras.Fn strdup "const char *str" 44*2fe8fb19SBen Gras.Ft char * 45*2fe8fb19SBen Gras.Fn strndup "const char *str" "size_t len" 46*2fe8fb19SBen Gras.Sh DESCRIPTION 47*2fe8fb19SBen GrasThe 48*2fe8fb19SBen Gras.Fn strdup 49*2fe8fb19SBen Grasfunction 50*2fe8fb19SBen Grasallocates sufficient memory for a copy 51*2fe8fb19SBen Grasof the string 52*2fe8fb19SBen Gras.Fa str , 53*2fe8fb19SBen Grasdoes the copy, and returns a pointer to it. 54*2fe8fb19SBen GrasThe pointer may subsequently be used as an 55*2fe8fb19SBen Grasargument to the function 56*2fe8fb19SBen Gras.Xr free 3 . 57*2fe8fb19SBen Gras.Pp 58*2fe8fb19SBen GrasIf insufficient memory is available, 59*2fe8fb19SBen Gras.Dv NULL 60*2fe8fb19SBen Grasis returned. 61*2fe8fb19SBen Gras.Pp 62*2fe8fb19SBen GrasThe 63*2fe8fb19SBen Gras.Fn strndup 64*2fe8fb19SBen Grasfunction copies at most 65*2fe8fb19SBen Gras.Fa len 66*2fe8fb19SBen Grascharacters from the string 67*2fe8fb19SBen Gras.Fa str 68*2fe8fb19SBen Grasalways 69*2fe8fb19SBen Gras.Dv NUL 70*2fe8fb19SBen Grasterminating the copied string. 71*2fe8fb19SBen Gras.Sh EXAMPLES 72*2fe8fb19SBen GrasThe following will point 73*2fe8fb19SBen Gras.Va p 74*2fe8fb19SBen Grasto an allocated area of memory containing the nul-terminated string 75*2fe8fb19SBen Gras.Qq foobar : 76*2fe8fb19SBen Gras.Bd -literal -offset indent 77*2fe8fb19SBen Graschar *p; 78*2fe8fb19SBen Gras 79*2fe8fb19SBen Grasif ((p = strdup("foobar")) == NULL) { 80*2fe8fb19SBen Gras fprintf(stderr, "Out of memory.\en"); 81*2fe8fb19SBen Gras exit(1); 82*2fe8fb19SBen Gras} 83*2fe8fb19SBen Gras.Ed 84*2fe8fb19SBen Gras.Sh ERRORS 85*2fe8fb19SBen GrasThe 86*2fe8fb19SBen Gras.Fn strdup 87*2fe8fb19SBen Grasfunction may fail and set the external variable 88*2fe8fb19SBen Gras.Va errno 89*2fe8fb19SBen Grasfor any of the errors specified for the library function 90*2fe8fb19SBen Gras.Xr malloc 3 . 91*2fe8fb19SBen Gras.Sh SEE ALSO 92*2fe8fb19SBen Gras.Xr free 3 , 93*2fe8fb19SBen Gras.Xr malloc 3 , 94*2fe8fb19SBen Gras.Xr strcpy 3 , 95*2fe8fb19SBen Gras.Xr strlen 3 96*2fe8fb19SBen Gras.Sh STANDARDS 97*2fe8fb19SBen GrasThe 98*2fe8fb19SBen Gras.Fn strdup 99*2fe8fb19SBen Grasfunction conforms to 100*2fe8fb19SBen Gras.St -p1003.1-2001 . 101*2fe8fb19SBen Gras.Sh HISTORY 102*2fe8fb19SBen GrasThe 103*2fe8fb19SBen Gras.Fn strdup 104*2fe8fb19SBen Grasfunction first appeared in 105*2fe8fb19SBen Gras.Bx 4.4 . 106*2fe8fb19SBen GrasThe 107*2fe8fb19SBen Gras.Fn strndup 108*2fe8fb19SBen Grasfunction was added in 109*2fe8fb19SBen Gras.Nx 4.0 . 110