]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man3/strdup.3
getauxval.3: wfix
[thirdparty/man-pages.git] / man3 / strdup.3
CommitLineData
fea681da
MK
1.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
2.\"
93015253 3.\" %%%LICENSE_START(VERBATIM)
fea681da
MK
4.\" Permission is granted to make and distribute verbatim copies of this
5.\" manual provided the copyright notice and this permission notice are
6.\" preserved on all copies.
7.\"
8.\" Permission is granted to copy and distribute modified versions of this
9.\" manual under the conditions for verbatim copying, provided that the
10.\" entire resulting derived work is distributed under the terms of a
11.\" permission notice identical to this one.
c13182ef 12.\"
fea681da
MK
13.\" Since the Linux kernel and libraries are constantly changing, this
14.\" manual page may be incorrect or out-of-date. The author(s) assume no
15.\" responsibility for errors or omissions, or for damages resulting from
16.\" the use of the information contained herein. The author(s) may not
17.\" have taken the same level of care in the production of this manual,
18.\" which is licensed free of charge, as they might when working
19.\" professionally.
c13182ef 20.\"
fea681da
MK
21.\" Formatted or processed versions of this manual, if unaccompanied by
22.\" the source, must acknowledge the copyright and authors of this work.
4b72fb64 23.\" %%%LICENSE_END
fea681da
MK
24.\"
25.\" References consulted:
26.\" Linux libc source code
27.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
28.\" 386BSD man pages
29.\" Modified Sun Jul 25 10:41:34 1993 by Rik Faith (faith@cs.unc.edu)
30.\" Modified Wed Oct 17 01:12:26 2001 by John Levon <moz@compsoc.man.ac.uk>
1e64c86b 31.TH STRDUP 3 2015-03-29 "GNU" "Linux Programmer's Manual"
fea681da
MK
32.SH NAME
33strdup, strndup, strdupa, strndupa \- duplicate a string
34.SH SYNOPSIS
35.nf
36.B #include <string.h>
37.sp
38.BI "char *strdup(const char *" s );
39.sp
fea681da
MK
40.BI "char *strndup(const char *" s ", size_t " n );
41.br
42.BI "char *strdupa(const char *" s );
43.br
44.BI "char *strndupa(const char *" s ", size_t " n );
fea681da 45.fi
cc4615cc
MK
46.sp
47.in -4n
48Feature Test Macro Requirements for glibc (see
49.BR feature_test_macros (7)):
50.in
8a3a2952 51.PD 0
d5c58392 52.ad l
cc4615cc
MK
53.sp
54.BR strdup ():
d5c58392 55.RS 4
d5c58392 56_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
7b072c4d 57_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
3ba63d80
MK
58.br
59|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
d5c58392
MK
60.RE
61.PP
8a3a2952
MK
62.BR strndup ():
63.RS 4
64.TP 4
65Since glibc 2.10:
1ea76c66 66_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700
8a3a2952
MK
67.TP
68Before glibc 2.10:
69_GNU_SOURCE
70.RE
71.PP
cc4615cc
MK
72.BR strdupa (),
73.BR strndupa ():
74_GNU_SOURCE
d5c58392 75.ad
8a3a2952 76.PD
fea681da 77.SH DESCRIPTION
60a90ecd
MK
78The
79.BR strdup ()
80function returns a pointer to a new string which
46d8df8e
MK
81is a duplicate of the string
82.IR s .
1c44bd5b 83Memory for the new string is
60a90ecd
MK
84obtained with
85.BR malloc (3),
86and can be freed with
87.BR free (3).
fea681da 88
60a90ecd
MK
89The
90.BR strndup ()
33a0ccb2 91function is similar, but copies at most
46d8df8e
MK
92.I n
93bytes.
94If
95.I s
96is longer than
97.IR n ,
98only
99.I n
a00b7454 100bytes are copied, and a terminating null byte (\(aq\\0\(aq) is added.
fea681da 101
60a90ecd
MK
102.BR strdupa ()
103and
104.BR strndupa ()
105are similar, but use
106.BR alloca (3)
c13182ef 107to allocate the buffer.
33a0ccb2 108They are available only when using the GNU
60a90ecd
MK
109GCC suite, and suffer from the same limitations described in
110.BR alloca (3).
47297adb 111.SH RETURN VALUE
6a788310 112On success, the
60a90ecd
MK
113.BR strdup ()
114function returns a pointer to the duplicated
6a788310
MK
115string.
116It returns NULL if insufficient memory was available, with
117.I errno
118set to indicate the cause of the error.
fea681da
MK
119.SH ERRORS
120.TP
121.B ENOMEM
122Insufficient memory available to allocate duplicate string.
7ab7eb48
MS
123.SH ATTRIBUTES
124For an explanation of the terms used in this section, see
125.BR attributes (7).
126.TS
127allbox;
128lbw31 lb lb
129l l l.
130Interface Attribute Value
131T{
132.BR strdup (),
133.BR strndup (),
134.BR strdupa (),
135.br
136.BR strndupa ()
137T} Thread safety MT-Safe
138.TE
139
47297adb 140.SH CONFORMING TO
b14d4aa5 141.\" 4.3BSD-Reno, not (first) 4.3BSD.
68e1685c
MK
142.BR strdup ()
143conforms to SVr4, 4.3BSD, POSIX.1-2001.
82f4ea01
MK
144.BR strndup ()
145conforms to POSIX.1-2008.
146.BR strdupa ()
60a90ecd
MK
147and
148.BR strndupa ()
149are GNU extensions.
47297adb 150.SH SEE ALSO
fea681da
MK
151.BR alloca (3),
152.BR calloc (3),
153.BR free (3),
154.BR malloc (3),
1709027c 155.BR realloc (3),
d095200e 156.BR string (3),
cc4615cc 157.BR wcsdup (3)