summaryrefslogtreecommitdiffstats
path: root/man-pages-posix-2017/man3p/strdup.3p
diff options
context:
space:
mode:
Diffstat (limited to 'man-pages-posix-2017/man3p/strdup.3p')
-rw-r--r--man-pages-posix-2017/man3p/strdup.3p139
1 files changed, 139 insertions, 0 deletions
diff --git a/man-pages-posix-2017/man3p/strdup.3p b/man-pages-posix-2017/man3p/strdup.3p
new file mode 100644
index 0000000..40de016
--- /dev/null
+++ b/man-pages-posix-2017/man3p/strdup.3p
@@ -0,0 +1,139 @@
+'\" et
+.TH STRDUP "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\"
+.SH PROLOG
+This manual page is part of the POSIX Programmer's Manual.
+The Linux implementation of this interface may differ (consult
+the corresponding Linux manual page for details of Linux behavior),
+or the interface may not be implemented on Linux.
+.\"
+.SH NAME
+strdup, strndup
+\(em duplicate a specific number of bytes from a string
+.SH SYNOPSIS
+.LP
+.nf
+#include <string.h>
+.P
+char *strdup(const char *\fIs\fP);
+char *strndup(const char *\fIs\fP, size_t \fIsize\fP);
+.fi
+.SH DESCRIPTION
+The
+\fIstrdup\fR()
+function shall return a pointer to a new string, which is a duplicate
+of the string pointed to by
+.IR s .
+The returned pointer can be passed to
+\fIfree\fR().
+A null pointer is returned if the new string cannot be created.
+.P
+The
+\fIstrndup\fR()
+function shall be equivalent to the
+\fIstrdup\fR()
+function, duplicating the provided
+.IR s
+in a new block of memory allocated as if by using
+\fImalloc\fR(),
+with the exception being that
+\fIstrndup\fR()
+copies at most
+.IR size
+plus one bytes into the newly allocated memory, terminating the new
+string with a NUL character. If the length of
+.IR s
+is larger than
+.IR size ,
+only
+.IR size
+bytes shall be duplicated. If
+.IR size
+is larger than the length of
+.IR s ,
+all bytes in
+.IR s
+shall be copied into the new memory buffer, including the terminating
+NUL character. The newly created string shall always be properly
+terminated.
+.SH "RETURN VALUE"
+The
+\fIstrdup\fR()
+function shall return a pointer to a new string on success. Otherwise,
+it shall return a null pointer and set
+.IR errno
+to indicate the error.
+.P
+Upon successful completion, the
+\fIstrndup\fR()
+function shall return a pointer to the newly allocated memory
+containing the duplicated string. Otherwise, it shall return a null
+pointer and set
+.IR errno
+to indicate the error.
+.SH ERRORS
+These functions shall fail if:
+.TP
+.BR ENOMEM
+Storage space available is insufficient.
+.LP
+.IR "The following sections are informative."
+.SH EXAMPLES
+None.
+.SH "APPLICATION USAGE"
+For functions that allocate memory as if by
+\fImalloc\fR(),
+the application should release such memory when it is no longer
+required by a call to
+\fIfree\fR().
+For
+\fIstrdup\fR()
+and
+\fIstrndup\fR(),
+this is the return value.
+.P
+Implementations are free to
+\fImalloc\fR()
+a buffer containing either (\c
+.IR size
++ 1) bytes or (\c
+.IR strnlen (
+.IR s ,
+.IR size )
++ 1) bytes. Applications should not assume that
+\fIstrndup\fR()
+will allocate (\c
+.IR size
++ 1) bytes when
+.IR strlen (
+.IR s )
+is smaller than
+.IR size .
+.SH RATIONALE
+None.
+.SH "FUTURE DIRECTIONS"
+None.
+.SH "SEE ALSO"
+.IR "\fIfree\fR\^(\|)",
+.IR "\fIwcsdup\fR\^(\|)"
+.P
+The Base Definitions volume of POSIX.1\(hy2017,
+.IR "\fB<string.h>\fP"
+.\"
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1-2017, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 7, 2018 Edition,
+Copyright (C) 2018 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group.
+In the event of any discrepancy between this version and the original IEEE and
+The Open Group Standard, the original IEEE and The Open Group Standard
+is the referee document. The original Standard can be obtained online at
+http://www.opengroup.org/unix/online.html .
+.PP
+Any typographical or formatting errors that appear
+in this page are most likely
+to have been introduced during the conversion of the source files to
+man page format. To report such errors, see
+https://www.kernel.org/doc/man-pages/reporting_bugs.html .