Changes: Ready for 5.13
[man-pages.git] / man3 / mempcpy.3
blobe91fce99ce0f5641e3bde46b6912b07d1e0cfe13
1 .\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de)
2 .\"
3 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
4 .\" Distributed under GPL
5 .\" %%%LICENSE_END
6 .\"
7 .\" Heavily based on glibc infopages, copyright Free Software Foundation
8 .\"
9 .\" aeb, 2003, polished a little
10 .TH MEMPCPY 3 2021-03-22 "GNU" "Linux Programmer's Manual"
11 .SH NAME
12 mempcpy, wmempcpy  \- copy memory area
13 .SH SYNOPSIS
14 .nf
15 .BR "#define _GNU_SOURCE" "         /* See feature_test_macros(7) */"
16 .B #include <string.h>
17 .PP
18 .BI "void *mempcpy(void *restrict " dest ", const void *restrict " src \
19 ", size_t " n );
20 .PP
21 .BR "#define _GNU_SOURCE" "         /* See feature_test_macros(7) */"
22 .B #include <wchar.h>
23 .PP
24 .BI "wchar_t *wmempcpy(wchar_t *restrict " dest \
25 ", const wchar_t *restrict " src ,
26 .BI "                  size_t " n );
27 .fi
28 .SH DESCRIPTION
29 The
30 .BR mempcpy ()
31 function is nearly identical to the
32 .BR memcpy (3)
33 function.
34 It copies
35 .I n
36 bytes from the object beginning at
37 .I src
38 into the object pointed to by
39 .IR dest .
40 But instead of returning the value of
41 .I dest
42 it returns a pointer to the byte following the last written byte.
43 .PP
44 This function is useful in situations where a number of objects
45 shall be copied to consecutive memory positions.
46 .PP
47 The
48 .BR wmempcpy ()
49 function is identical but takes
50 .I wchar_t
51 type arguments and copies
52 .I n
53 wide characters.
54 .SH RETURN VALUE
55 .I dest
57 .IR n .
58 .SH VERSIONS
59 .BR mempcpy ()
60 first appeared in glibc in version 2.1.
61 .SH ATTRIBUTES
62 For an explanation of the terms used in this section, see
63 .BR attributes (7).
64 .ad l
65 .nh
66 .TS
67 allbox;
68 lbx lb lb
69 l l l.
70 Interface       Attribute       Value
72 .BR mempcpy (),
73 .BR wmempcpy ()
74 T}      Thread safety   MT-Safe
75 .TE
76 .hy
77 .ad
78 .sp 1
79 .SH CONFORMING TO
80 This function is a GNU extension.
81 .SH EXAMPLES
82 .EX
83 void *
84 combine(void *o1, size_t s1, void *o2, size_t s2)
86     void *result = malloc(s1 + s2);
87     if (result != NULL)
88         mempcpy(mempcpy(result, o1, s1), o2, s2);
89     return result;
91 .EE
92 .SH SEE ALSO
93 .BR memccpy (3),
94 .BR memcpy (3),
95 .BR memmove (3),
96 .BR wmemcpy (3)