1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2015-01-21 20:35+0900\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
20 #: build/C/man3/MB_CUR_MAX.3:17
26 #: build/C/man3/MB_CUR_MAX.3:17 build/C/man3/MB_LEN_MAX.3:17
32 #: build/C/man3/MB_CUR_MAX.3:17 build/C/man3/MB_LEN_MAX.3:17 build/C/man2/_exit.2:29 build/C/man3/atexit.3:33 build/C/man3/clearenv.3:26 build/C/man3/exit.3:29 build/C/man3/getloadavg.3:34 build/C/man3/strtod.3:45 build/C/man7/vdso.7:13
38 #: build/C/man3/MB_CUR_MAX.3:17 build/C/man3/MB_LEN_MAX.3:17 build/C/man2/_exit.2:29 build/C/man3/a64l.3:9 build/C/man3/atexit.3:33 build/C/man3/atof.3:31 build/C/man3/atoi.3:33 build/C/man3/canonicalize_file_name.3:26 build/C/man3/cfree.3:24 build/C/man3/clearenv.3:26 build/C/man3/drand48.3:30 build/C/man3/drand48_r.3:27 build/C/man3/ecvt.3:32 build/C/man3/ecvt_r.3:30 build/C/man3/exit.3:29 build/C/man3/gcvt.3:30 build/C/man3/getauxval.3:29 build/C/man3/getenv.3:33 build/C/man3/getloadavg.3:34 build/C/man3/getsubopt.3:25 build/C/man3/malloc.3:33 build/C/man3/mblen.3:16 build/C/man3/mbstowcs.3:18 build/C/man3/mbtowc.3:16 build/C/man3/mkdtemp.3:26 build/C/man3/mkstemp.3:35 build/C/man3/mktemp.3:34 build/C/man3/on_exit.3:31 build/C/man3/putenv.3:36 build/C/man3/qecvt.3:28 build/C/man3/rand.3:41 build/C/man3/random.3:33 build/C/man3/random_r.3:26 build/C/man3/rpmatch.3:29 build/C/man3/setenv.3:37 build/C/man3/strtod.3:45 build/C/man3/strtoimax.3:24 build/C/man3/strtol.3:31 build/C/man3/strtoul.3:33 build/C/man3/system.3:31 build/C/man7/vdso.7:13 build/C/man3/wcstombs.3:16 build/C/man3/wctomb.3:16
40 msgid "Linux Programmer's Manual"
44 #: build/C/man3/MB_CUR_MAX.3:18 build/C/man3/MB_LEN_MAX.3:18 build/C/man2/_exit.2:30 build/C/man3/a64l.3:10 build/C/man3/atexit.3:34 build/C/man3/atof.3:32 build/C/man3/atoi.3:34 build/C/man3/canonicalize_file_name.3:27 build/C/man3/cfree.3:25 build/C/man3/clearenv.3:27 build/C/man3/drand48.3:31 build/C/man3/drand48_r.3:28 build/C/man3/ecvt.3:33 build/C/man3/ecvt_r.3:31 build/C/man3/exit.3:30 build/C/man3/gcvt.3:31 build/C/man3/getauxval.3:30 build/C/man3/getenv.3:34 build/C/man3/getloadavg.3:35 build/C/man3/getsubopt.3:26 build/C/man3/malloc.3:34 build/C/man3/mblen.3:17 build/C/man3/mbstowcs.3:19 build/C/man3/mbtowc.3:17 build/C/man3/mkdtemp.3:27 build/C/man3/mkstemp.3:36 build/C/man3/mktemp.3:35 build/C/man3/on_exit.3:32 build/C/man3/putenv.3:37 build/C/man3/qecvt.3:29 build/C/man3/rand.3:42 build/C/man3/random.3:34 build/C/man3/random_r.3:27 build/C/man3/rpmatch.3:30 build/C/man3/setenv.3:38 build/C/man3/strtod.3:46 build/C/man3/strtoimax.3:25 build/C/man3/strtol.3:32 build/C/man3/strtoul.3:34 build/C/man3/system.3:32 build/C/man7/vdso.7:14 build/C/man3/wcstombs.3:17 build/C/man3/wctomb.3:17
50 #: build/C/man3/MB_CUR_MAX.3:20
51 msgid "MB_CUR_MAX - maximum length of a multibyte character in the current locale"
55 #: build/C/man3/MB_CUR_MAX.3:20 build/C/man3/MB_LEN_MAX.3:20 build/C/man2/_exit.2:32 build/C/man3/a64l.3:12 build/C/man3/atexit.3:36 build/C/man3/atof.3:34 build/C/man3/atoi.3:36 build/C/man3/canonicalize_file_name.3:29 build/C/man3/cfree.3:27 build/C/man3/clearenv.3:29 build/C/man3/drand48.3:34 build/C/man3/drand48_r.3:32 build/C/man3/ecvt.3:35 build/C/man3/ecvt_r.3:33 build/C/man3/exit.3:32 build/C/man3/gcvt.3:33 build/C/man3/getauxval.3:32 build/C/man3/getenv.3:36 build/C/man3/getloadavg.3:37 build/C/man3/getsubopt.3:28 build/C/man3/malloc.3:36 build/C/man3/mblen.3:19 build/C/man3/mbstowcs.3:21 build/C/man3/mbtowc.3:19 build/C/man3/mkdtemp.3:29 build/C/man3/mkstemp.3:38 build/C/man3/mktemp.3:37 build/C/man3/on_exit.3:34 build/C/man3/putenv.3:39 build/C/man3/qecvt.3:31 build/C/man3/rand.3:44 build/C/man3/random.3:36 build/C/man3/random_r.3:30 build/C/man3/rpmatch.3:32 build/C/man3/setenv.3:40 build/C/man3/strtod.3:48 build/C/man3/strtoimax.3:27 build/C/man3/strtol.3:34 build/C/man3/strtoul.3:36 build/C/man3/system.3:34 build/C/man7/vdso.7:16 build/C/man3/wcstombs.3:19 build/C/man3/wctomb.3:19
61 #: build/C/man3/MB_CUR_MAX.3:23 build/C/man3/atexit.3:39 build/C/man3/atof.3:37 build/C/man3/atoi.3:39 build/C/man3/cfree.3:31 build/C/man3/clearenv.3:32 build/C/man3/drand48.3:37 build/C/man3/drand48_r.3:35 build/C/man3/ecvt_r.3:36 build/C/man3/exit.3:35 build/C/man3/gcvt.3:36 build/C/man3/getenv.3:39 build/C/man3/malloc.3:39 build/C/man3/mblen.3:22 build/C/man3/mbstowcs.3:24 build/C/man3/mbtowc.3:22 build/C/man3/mkdtemp.3:32 build/C/man3/mkstemp.3:41 build/C/man3/mktemp.3:40 build/C/man3/on_exit.3:37 build/C/man3/putenv.3:42 build/C/man3/rand.3:47 build/C/man3/random.3:39 build/C/man3/random_r.3:33 build/C/man3/rpmatch.3:35 build/C/man3/setenv.3:43 build/C/man3/strtol.3:37 build/C/man3/strtoul.3:39 build/C/man3/system.3:37 build/C/man3/wcstombs.3:22 build/C/man3/wctomb.3:22
63 msgid "B<#include E<lt>stdlib.hE<gt>>\n"
67 #: build/C/man3/MB_CUR_MAX.3:24 build/C/man3/MB_LEN_MAX.3:24 build/C/man2/_exit.2:56 build/C/man3/a64l.3:33 build/C/man3/atexit.3:42 build/C/man3/atof.3:40 build/C/man3/atoi.3:62 build/C/man3/canonicalize_file_name.3:35 build/C/man3/cfree.3:52 build/C/man3/clearenv.3:43 build/C/man3/drand48.3:75 build/C/man3/drand48_r.3:83 build/C/man3/ecvt.3:69 build/C/man3/ecvt_r.3:64 build/C/man3/exit.3:38 build/C/man3/gcvt.3:64 build/C/man3/getauxval.3:38 build/C/man3/getenv.3:52 build/C/man3/getloadavg.3:44 build/C/man3/getsubopt.3:50 build/C/man3/malloc.3:45 build/C/man3/mblen.3:25 build/C/man3/mbstowcs.3:27 build/C/man3/mbtowc.3:25 build/C/man3/mkdtemp.3:55 build/C/man3/mkstemp.3:76 build/C/man3/mktemp.3:66 build/C/man3/on_exit.3:48 build/C/man3/putenv.3:54 build/C/man3/qecvt.3:66 build/C/man3/rand.3:62 build/C/man3/random.3:64 build/C/man3/random_r.3:58 build/C/man3/rpmatch.3:46 build/C/man3/setenv.3:61 build/C/man3/strtod.3:73 build/C/man3/strtoimax.3:35 build/C/man3/strtol.3:59 build/C/man3/strtoul.3:62 build/C/man3/system.3:40 build/C/man7/vdso.7:20 build/C/man3/wcstombs.3:25 build/C/man3/wctomb.3:25
73 #: build/C/man3/MB_CUR_MAX.3:31
75 "The B<MB_CUR_MAX> macro defines an integer expression giving the maximum "
76 "number of bytes needed to represent a single wide character in the current "
77 "locale. It is locale dependent and therefore not a compile-time constant."
81 #: build/C/man3/MB_CUR_MAX.3:31 build/C/man3/MB_LEN_MAX.3:29 build/C/man2/_exit.2:79 build/C/man3/atexit.3:71 build/C/man3/atof.3:55 build/C/man3/atoi.3:86 build/C/man3/canonicalize_file_name.3:61 build/C/man3/cfree.3:96 build/C/man3/clearenv.3:50 build/C/man3/drand48_r.3:96 build/C/man3/ecvt.3:99 build/C/man3/ecvt_r.3:86 build/C/man3/exit.3:86 build/C/man3/gcvt.3:72 build/C/man3/getauxval.3:173 build/C/man3/getenv.3:88 build/C/man3/getloadavg.3:55 build/C/man3/getsubopt.3:110 build/C/man3/malloc.3:132 build/C/man3/mblen.3:75 build/C/man3/mbstowcs.3:84 build/C/man3/mbtowc.3:93 build/C/man3/mkdtemp.3:68 build/C/man3/mkstemp.3:155 build/C/man3/mktemp.3:80 build/C/man3/on_exit.3:76 build/C/man3/putenv.3:67 build/C/man3/rand.3:118 build/C/man3/random.3:118 build/C/man3/random_r.3:100 build/C/man3/rpmatch.3:73 build/C/man3/setenv.3:105 build/C/man3/strtod.3:127 build/C/man3/strtoimax.3:45 build/C/man3/strtol.3:117 build/C/man3/strtoul.3:127 build/C/man3/system.3:73 build/C/man3/wcstombs.3:79 build/C/man3/wctomb.3:63
87 #: build/C/man3/MB_CUR_MAX.3:35
89 "An integer in the range [1, B<MB_LEN_MAX>]. The value 1 denotes traditional "
90 "8-bit encoded characters."
94 #: build/C/man3/MB_CUR_MAX.3:35 build/C/man3/MB_LEN_MAX.3:31 build/C/man2/_exit.2:81 build/C/man3/a64l.3:71 build/C/man3/atexit.3:76 build/C/man3/atof.3:65 build/C/man3/atoi.3:100 build/C/man3/canonicalize_file_name.3:73 build/C/man3/cfree.3:112 build/C/man3/clearenv.3:59 build/C/man3/drand48.3:260 build/C/man3/drand48_r.3:112 build/C/man3/ecvt.3:117 build/C/man3/ecvt_r.3:88 build/C/man3/exit.3:96 build/C/man3/gcvt.3:77 build/C/man3/getauxval.3:197 build/C/man3/getenv.3:96 build/C/man3/getloadavg.3:70 build/C/man3/getsubopt.3:134 build/C/man3/malloc.3:171 build/C/man3/mblen.3:92 build/C/man3/mbstowcs.3:94 build/C/man3/mbtowc.3:113 build/C/man3/mkdtemp.3:91 build/C/man3/mkstemp.3:204 build/C/man3/mktemp.3:95 build/C/man3/on_exit.3:81 build/C/man3/putenv.3:79 build/C/man3/qecvt.3:96 build/C/man3/rand.3:129 build/C/man3/random.3:161 build/C/man3/random_r.3:137 build/C/man3/rpmatch.3:99 build/C/man3/setenv.3:128 build/C/man3/strtod.3:171 build/C/man3/strtoimax.3:69 build/C/man3/strtol.3:173 build/C/man3/strtoul.3:177 build/C/man3/system.3:115 build/C/man3/wcstombs.3:89 build/C/man3/wctomb.3:89
100 #: build/C/man3/MB_CUR_MAX.3:37 build/C/man3/MB_LEN_MAX.3:33 build/C/man3/strtoimax.3:71
101 msgid "C99, POSIX.1-2001."
105 #: build/C/man3/MB_CUR_MAX.3:37 build/C/man3/MB_LEN_MAX.3:44 build/C/man2/_exit.2:124 build/C/man3/a64l.3:93 build/C/man3/atexit.3:161 build/C/man3/atof.3:67 build/C/man3/atoi.3:119 build/C/man3/canonicalize_file_name.3:75 build/C/man3/cfree.3:117 build/C/man3/clearenv.3:96 build/C/man3/drand48.3:262 build/C/man3/drand48_r.3:114 build/C/man3/ecvt.3:135 build/C/man3/ecvt_r.3:95 build/C/man3/exit.3:183 build/C/man3/gcvt.3:86 build/C/man3/getauxval.3:232 build/C/man3/getenv.3:129 build/C/man3/getloadavg.3:74 build/C/man3/getsubopt.3:232 build/C/man3/malloc.3:261 build/C/man3/mblen.3:106 build/C/man3/mbstowcs.3:216 build/C/man3/mbtowc.3:128 build/C/man3/mkdtemp.3:96 build/C/man3/mkstemp.3:242 build/C/man3/mktemp.3:118 build/C/man3/on_exit.3:87 build/C/man3/putenv.3:118 build/C/man3/qecvt.3:107 build/C/man3/rand.3:217 build/C/man3/random.3:197 build/C/man3/random_r.3:141 build/C/man3/rpmatch.3:144 build/C/man3/setenv.3:153 build/C/man3/strtod.3:205 build/C/man3/strtoimax.3:71 build/C/man3/strtol.3:297 build/C/man3/strtoul.3:225 build/C/man3/system.3:207 build/C/man7/vdso.7:499 build/C/man3/wcstombs.3:103 build/C/man3/wctomb.3:103
111 #: build/C/man3/MB_CUR_MAX.3:43
113 "B<MB_LEN_MAX>(3), B<mblen>(3), B<mbstowcs>(3), B<mbtowc>(3), B<wcstombs>(3), "
118 #: build/C/man3/MB_LEN_MAX.3:17
124 #: build/C/man3/MB_LEN_MAX.3:20
125 msgid "MB_LEN_MAX - maximum multibyte length of a character across all locales"
129 #: build/C/man3/MB_LEN_MAX.3:23
131 msgid "B<#include E<lt>limits.hE<gt>>\n"
135 #: build/C/man3/MB_LEN_MAX.3:29
137 "The B<MB_LEN_MAX> macro is the upper bound for the number of bytes needed to "
138 "represent a single wide character, across all locales."
142 #: build/C/man3/MB_LEN_MAX.3:31
143 msgid "A constant integer greater than zero."
147 #: build/C/man3/MB_LEN_MAX.3:33 build/C/man2/_exit.2:86 build/C/man3/a64l.3:73 build/C/man3/atexit.3:78 build/C/man3/atoi.3:108 build/C/man3/clearenv.3:73 build/C/man3/ecvt.3:129 build/C/man3/ecvt_r.3:90 build/C/man3/exit.3:98 build/C/man3/getauxval.3:199 build/C/man3/getenv.3:102 build/C/man3/getsubopt.3:136 build/C/man3/malloc.3:173 build/C/man3/mblen.3:94 build/C/man3/mbstowcs.3:96 build/C/man3/mbtowc.3:115 build/C/man3/mkstemp.3:217 build/C/man3/putenv.3:81 build/C/man3/qecvt.3:102 build/C/man3/rand.3:141 build/C/man3/random.3:163 build/C/man3/setenv.3:130 build/C/man3/strtod.3:176 build/C/man3/strtol.3:178 build/C/man3/strtoul.3:182 build/C/man3/system.3:117 build/C/man7/vdso.7:129 build/C/man3/wcstombs.3:91 build/C/man3/wctomb.3:91
153 #: build/C/man3/MB_LEN_MAX.3:44
155 "The entities B<MB_LEN_MAX> and I<sizeof(wchar_t)> are totally unrelated. In "
156 "glibc, B<MB_LEN_MAX> is typically 6 while I<sizeof(wchar_t)> is 4."
160 #: build/C/man3/MB_LEN_MAX.3:45
161 msgid "B<MB_CUR_MAX>(3)"
165 #: build/C/man2/_exit.2:29
171 #: build/C/man2/_exit.2:29
177 #: build/C/man2/_exit.2:32
178 msgid "_exit, _Exit - terminate the calling process"
182 #: build/C/man2/_exit.2:34
183 msgid "B<#include E<lt>unistd.hE<gt>>"
187 #: build/C/man2/_exit.2:36
188 msgid "B<void _exit(int >I<status>B<);>"
192 #: build/C/man2/_exit.2:38 build/C/man3/a64l.3:14 build/C/man3/canonicalize_file_name.3:33 build/C/man3/ecvt.3:37 build/C/man3/getsubopt.3:30 build/C/man3/qecvt.3:33 build/C/man3/strtod.3:50
193 msgid "B<#include E<lt>stdlib.hE<gt>>"
197 #: build/C/man2/_exit.2:40
198 msgid "B<void _Exit(int >I<status>B<);>"
202 #: build/C/man2/_exit.2:44 build/C/man3/a64l.3:22 build/C/man3/atoi.3:50 build/C/man3/cfree.3:48 build/C/man3/clearenv.3:39 build/C/man3/drand48.3:60 build/C/man3/drand48_r.3:68 build/C/man3/ecvt.3:47 build/C/man3/ecvt_r.3:53 build/C/man3/gcvt.3:43 build/C/man3/getenv.3:48 build/C/man3/getsubopt.3:37 build/C/man3/mkdtemp.3:39 build/C/man3/mkstemp.3:54 build/C/man3/mktemp.3:47 build/C/man3/on_exit.3:44 build/C/man3/putenv.3:50 build/C/man3/qecvt.3:45 build/C/man3/rand.3:58 build/C/man3/random.3:52 build/C/man3/random_r.3:47 build/C/man3/rpmatch.3:42 build/C/man3/setenv.3:52 build/C/man3/strtod.3:60 build/C/man3/strtol.3:47 build/C/man3/strtoul.3:50
203 msgid "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
207 #: build/C/man2/_exit.2:48
212 #: build/C/man2/_exit.2:51 build/C/man3/strtod.3:68
214 "_XOPEN_SOURCE\\ E<gt>=\\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ "
219 #: build/C/man2/_exit.2:54 build/C/man3/atoi.3:60 build/C/man3/strtod.3:71 build/C/man3/strtol.3:57 build/C/man3/strtoul.3:60
220 msgid "or I<cc\\ -std=c99>"
224 #: build/C/man2/_exit.2:67
226 "The function B<_exit>() terminates the calling process \"immediately\". "
227 "Any open file descriptors belonging to the process are closed; any children "
228 "of the process are inherited by process 1, I<init>, and the process's parent "
229 "is sent a B<SIGCHLD> signal."
233 #: build/C/man2/_exit.2:74
235 "The value I<status> is returned to the parent process as the process's exit "
236 "status, and can be collected using one of the B<wait>(2) family of calls."
240 #: build/C/man2/_exit.2:79
241 msgid "The function B<_Exit>() is equivalent to B<_exit>()."
245 #: build/C/man2/_exit.2:81
246 msgid "These functions do not return."
250 #: build/C/man2/_exit.2:86
251 msgid "SVr4, POSIX.1-2001, 4.3BSD. The function B<_Exit>() was introduced by C99."
255 #: build/C/man2/_exit.2:90
257 "For a discussion on the effects of an exit, the transmission of exit status, "
258 "zombie processes, signals sent, and so on, see B<exit>(3)."
262 #: build/C/man2/_exit.2:117
264 "The function B<_exit>() is like B<exit>(3), but does not call any functions "
265 "registered with B<atexit>(3) or B<on_exit>(3). Whether it flushes standard "
266 "I/O buffers and removes temporary files created with B<tmpfile>(3) is "
267 "implementation-dependent. On the other hand, B<_exit>() does close open "
268 "file descriptors, and this may cause an unknown delay, waiting for pending "
269 "output to finish. If the delay is undesired, it may be useful to call "
270 "functions like B<tcflush>(3) before calling B<_exit>(). Whether any "
271 "pending I/O is canceled, and which pending I/O may be canceled upon "
272 "B<_exit>(), is implementation-dependent."
276 #: build/C/man2/_exit.2:124
278 "In glibc up to version 2.3, the B<_exit>() wrapper function invoked the "
279 "kernel system call of the same name. Since glibc 2.3, the wrapper function "
280 "invokes B<exit_group>(2), in order to terminate all of the threads in a "
285 #: build/C/man2/_exit.2:135
287 "B<execve>(2), B<exit_group>(2), B<fork>(2), B<kill>(2), B<wait>(2), "
288 "B<wait4>(2), B<waitpid>(2), B<atexit>(3), B<exit>(3), B<on_exit>(3), "
293 #: build/C/man3/a64l.3:9
299 #: build/C/man3/a64l.3:9 build/C/man3/gcvt.3:30
305 #: build/C/man3/a64l.3:12
306 msgid "a64l, l64a - convert between long and base-64"
310 #: build/C/man3/a64l.3:16
311 msgid "B<long a64l(const char *>I<str64>B<);>"
315 #: build/C/man3/a64l.3:18
316 msgid "B<char *l64a(long >I<value>B<);>"
320 #: build/C/man3/a64l.3:26
321 msgid "B<a64l>(), B<l64a>():"
325 #: build/C/man3/a64l.3:31 build/C/man3/ecvt.3:66
327 "_SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
328 "_XOPEN_SOURCE_EXTENDED"
332 #: build/C/man3/a64l.3:48
334 "These functions provide a conversion between 32-bit long integers and "
335 "little-endian base-64 ASCII strings (of length zero to six). If the string "
336 "used as argument for B<a64l>() has length greater than six, only the first "
337 "six bytes are used. If the type I<long> has more than 32 bits, then "
338 "B<l64a>() uses only the low order 32 bits of I<value>, and B<a64l>() "
339 "sign-extends its 32-bit result."
343 #: build/C/man3/a64l.3:50
344 msgid "The 64 digits in the base-64 system are:"
348 #: build/C/man3/a64l.3:58
351 "\\&\\(aq.\\(aq\trepresents a 0\n"
352 "\\&\\(aq/\\(aq\trepresents a 1\n"
353 "0-9\trepresent 2-11\n"
354 "A-Z\trepresent 12-37\n"
355 "a-z\trepresent 38-63\n"
359 #: build/C/man3/a64l.3:62
360 msgid "So 123 = 59*64^0 + 1*64^1 = \"v/\"."
364 #: build/C/man3/a64l.3:62 build/C/man3/atof.3:57 build/C/man3/atoi.3:88 build/C/man3/drand48.3:245 build/C/man3/drand48_r.3:98 build/C/man3/ecvt.3:110 build/C/man3/exit.3:90 build/C/man3/getauxval.3:192 build/C/man3/getloadavg.3:65 build/C/man3/getsubopt.3:129 build/C/man3/mblen.3:87 build/C/man3/mkdtemp.3:86 build/C/man3/mkstemp.3:195 build/C/man3/qecvt.3:85 build/C/man3/random.3:152 build/C/man3/random_r.3:128 build/C/man3/strtod.3:159 build/C/man3/strtoimax.3:58 build/C/man3/strtol.3:161 build/C/man3/strtoul.3:165 build/C/man3/system.3:110 build/C/man3/wctomb.3:84
370 #: build/C/man3/a64l.3:63 build/C/man3/atof.3:58 build/C/man3/atoi.3:89 build/C/man3/drand48.3:246 build/C/man3/drand48_r.3:99 build/C/man3/ecvt.3:111 build/C/man3/exit.3:91 build/C/man3/getauxval.3:193 build/C/man3/getloadavg.3:66 build/C/man3/getsubopt.3:130 build/C/man3/mblen.3:88 build/C/man3/mkdtemp.3:87 build/C/man3/mkstemp.3:196 build/C/man3/qecvt.3:86 build/C/man3/random.3:153 build/C/man3/random_r.3:129 build/C/man3/strtod.3:160 build/C/man3/strtoimax.3:59 build/C/man3/strtol.3:162 build/C/man3/strtoul.3:166 build/C/man3/system.3:111 build/C/man3/wctomb.3:85
372 msgid "Multithreading (see pthreads(7))"
376 #: build/C/man3/a64l.3:67
377 msgid "The B<l64a>() function is not thread-safe."
381 #: build/C/man3/a64l.3:71
382 msgid "The B<a64l>() function is thread-safe."
386 #: build/C/man3/a64l.3:73 build/C/man3/getsubopt.3:136
387 msgid "POSIX.1-2001."
391 #: build/C/man3/a64l.3:78
393 "The value returned by B<l64a>() may be a pointer to a static buffer, "
394 "possibly overwritten by later calls."
398 #: build/C/man3/a64l.3:87
400 "The behavior of B<l64a>() is undefined when I<value> is negative. If "
401 "I<value> is zero, it returns an empty string."
405 #: build/C/man3/a64l.3:90
407 "These functions are broken in glibc before 2.2.5 (puts most significant "
412 #: build/C/man3/a64l.3:93
413 msgid "This is not the encoding used by B<uuencode>(1)."
418 #: build/C/man3/a64l.3:96
419 msgid "B<uuencode>(1), B<strtoul>(3)"
423 #: build/C/man3/atexit.3:33
429 #: build/C/man3/atexit.3:33
435 #: build/C/man3/atexit.3:36
436 msgid "atexit - register a function to be called at normal process termination"
440 #: build/C/man3/atexit.3:41
442 msgid "B<int atexit(void (*>I<function>B<)(void));>\n"
446 #: build/C/man3/atexit.3:54
448 "The B<atexit>() function registers the given I<function> to be called at "
449 "normal process termination, either via B<exit>(3) or via return from the "
450 "program's I<main>(). Functions so registered are called in the reverse "
451 "order of their registration; no arguments are passed."
455 #: build/C/man3/atexit.3:57 build/C/man3/on_exit.3:69
457 "The same function may be registered multiple times: it is called once for "
462 #: build/C/man3/atexit.3:63
464 "POSIX.1-2001 requires that an implementation allow at least B<ATEXIT_MAX> "
465 "(32) such functions to be registered. The actual limit supported by an "
466 "implementation can be obtained using B<sysconf>(3)."
470 #: build/C/man3/atexit.3:71 build/C/man3/on_exit.3:76
472 "When a child process is created via B<fork>(2), it inherits copies of its "
473 "parent's registrations. Upon a successful call to one of the B<exec>(3) "
474 "functions, all registrations are removed."
478 #: build/C/man3/atexit.3:76
480 "The B<atexit>() function returns the value 0 if successful; otherwise it "
481 "returns a nonzero value."
485 #: build/C/man3/atexit.3:78
486 msgid "SVr4, 4.3BSD, C89, C99, POSIX.1-2001."
490 #: build/C/man3/atexit.3:85
492 "Functions registered using B<atexit>() (and B<on_exit>(3)) are not called "
493 "if a process terminates abnormally because of the delivery of a signal."
497 #: build/C/man3/atexit.3:92
499 "If one of the functions registered functions calls B<_exit>(2), then any "
500 "remaining functions are not invoked, and the other process termination steps "
501 "performed by B<exit>(3) are not performed."
504 #. This can happen on OpenBSD 4.2 for example, and is documented
505 #. as occurring on FreeBSD as well.
506 #. Glibc does "the Right Thing" -- invocation of the remaining
507 #. exit handlers carries on as normal.
509 #: build/C/man3/atexit.3:109
511 "POSIX.1-2001 says that the result of calling B<exit>(3) more than once "
512 "(i.e., calling B<exit>(3) within a function registered using B<atexit>()) "
513 "is undefined. On some systems (but not Linux), this can result in an "
514 "infinite recursion; portable programs should not invoke B<exit>(3) inside a "
515 "function registered using B<atexit>()."
519 #: build/C/man3/atexit.3:118
521 "The B<atexit>() and B<on_exit>(3) functions register functions on the same "
522 "list: at normal process termination, the registered functions are invoked in "
523 "reverse order of their registration by these two functions."
526 #. In glibc, things seem to be handled okay
528 #: build/C/man3/atexit.3:124
530 "POSIX.1-2001 says that the result is undefined if B<longjmp>(3) is used to "
531 "terminate execution of one of the functions registered B<atexit>()."
535 #: build/C/man3/atexit.3:124
541 #: build/C/man3/atexit.3:131
543 "Since glibc 2.2.3, B<atexit>() (and B<on_exit>(3)) can be used within a "
544 "shared library to establish functions that are called when the shared "
545 "library is unloaded."
549 #: build/C/man3/atexit.3:131 build/C/man3/getsubopt.3:143 build/C/man3/mbstowcs.3:108 build/C/man3/rand.3:160 build/C/man3/rpmatch.3:119 build/C/man3/strtod.3:200 build/C/man3/strtol.3:216 build/C/man3/strtoul.3:220
555 #: build/C/man3/atexit.3:136
558 "#include E<lt>stdio.hE<gt>\n"
559 "#include E<lt>stdlib.hE<gt>\n"
560 "#include E<lt>unistd.hE<gt>\n"
564 #: build/C/man3/atexit.3:142
570 " printf(\"That was all, folks\\en\");\n"
575 #: build/C/man3/atexit.3:148
586 #: build/C/man3/atexit.3:151
589 " a = sysconf(_SC_ATEXIT_MAX);\n"
590 " printf(\"ATEXIT_MAX = %ld\\en\", a);\n"
594 #: build/C/man3/atexit.3:157
597 " i = atexit(bye);\n"
599 " fprintf(stderr, \"cannot set exit function\\en\");\n"
600 " exit(EXIT_FAILURE);\n"
605 #: build/C/man3/atexit.3:160 build/C/man3/getsubopt.3:231 build/C/man3/mbstowcs.3:215 build/C/man3/rand.3:215 build/C/man3/strtol.3:296
608 " exit(EXIT_SUCCESS);\n"
613 #: build/C/man3/atexit.3:164
614 msgid "B<_exit>(2), B<exit>(3), B<on_exit>(3)"
618 #: build/C/man3/atof.3:31
624 #: build/C/man3/atof.3:31 build/C/man3/strtoimax.3:24
630 #: build/C/man3/atof.3:31 build/C/man3/atoi.3:33 build/C/man3/canonicalize_file_name.3:26 build/C/man3/drand48_r.3:27 build/C/man3/ecvt_r.3:30 build/C/man3/getauxval.3:29 build/C/man3/getenv.3:33 build/C/man3/getsubopt.3:25 build/C/man3/malloc.3:33 build/C/man3/mblen.3:16 build/C/man3/mbstowcs.3:18 build/C/man3/mbtowc.3:16 build/C/man3/mkdtemp.3:26 build/C/man3/mkstemp.3:35 build/C/man3/mktemp.3:34 build/C/man3/on_exit.3:31 build/C/man3/putenv.3:36 build/C/man3/qecvt.3:28 build/C/man3/random.3:33 build/C/man3/random_r.3:26 build/C/man3/rpmatch.3:29 build/C/man3/setenv.3:37 build/C/man3/strtol.3:31 build/C/man3/strtoul.3:33 build/C/man3/wcstombs.3:16 build/C/man3/wctomb.3:16
636 #: build/C/man3/atof.3:34
637 msgid "atof - convert a string to a double"
641 #: build/C/man3/atof.3:39
643 msgid "B<double atof(const char *>I<nptr>B<);>\n"
647 #: build/C/man3/atof.3:47
649 "The B<atof>() function converts the initial portion of the string pointed "
650 "to by I<nptr> to I<double>. The behavior is the same as"
654 #: build/C/man3/atof.3:50
655 msgid "strtod(nptr, NULL);"
659 #: build/C/man3/atof.3:55
660 msgid "except that B<atof>() does not detect errors."
664 #: build/C/man3/atof.3:57 build/C/man3/atoi.3:88
665 msgid "The converted value."
669 #: build/C/man3/atof.3:65
671 "The B<atof>() function is thread-safe with exceptions. It can be safely "
672 "used in multithreaded applications, as long as B<setlocale>(3) is not "
673 "called to change the locale during its execution."
677 #: build/C/man3/atof.3:67
678 msgid "SVr4, POSIX.1-2001, 4.3BSD, C89, C99."
682 #: build/C/man3/atof.3:72
683 msgid "B<atoi>(3), B<atol>(3), B<strtod>(3), B<strtol>(3), B<strtoul>(3)"
687 #: build/C/man3/atoi.3:33
693 #: build/C/man3/atoi.3:33 build/C/man3/clearenv.3:26 build/C/man3/ecvt.3:32 build/C/man3/getauxval.3:29 build/C/man3/mkstemp.3:35 build/C/man3/mktemp.3:34 build/C/man3/on_exit.3:31 build/C/man3/putenv.3:36 build/C/man3/qecvt.3:28 build/C/man3/strtod.3:45 build/C/man7/vdso.7:13
699 #: build/C/man3/atoi.3:36
700 msgid "atoi, atol, atoll - convert a string to an integer"
704 #: build/C/man3/atoi.3:41
706 msgid "B<int atoi(const char *>I<nptr>B<);>\n"
710 #: build/C/man3/atoi.3:43
712 msgid "B<long atol(const char *>I<nptr>B<);>\n"
716 #: build/C/man3/atoi.3:45
718 msgid "B<long long atoll(const char *>I<nptr>B<);>\n"
722 #: build/C/man3/atoi.3:54
727 #: build/C/man3/atoi.3:57
729 "_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 600 || "
730 "_ISOC99_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L;"
734 #: build/C/man3/atoi.3:69
736 "The B<atoi>() function converts the initial portion of the string pointed "
737 "to by I<nptr> to I<int>. The behavior is the same as"
741 #: build/C/man3/atoi.3:72
742 msgid "strtol(nptr, NULL, 10);"
746 #: build/C/man3/atoi.3:77
747 msgid "except that B<atoi>() does not detect errors."
751 #: build/C/man3/atoi.3:86
753 "The B<atol>() and B<atoll>() functions behave the same as B<atoi>(), "
754 "except that they convert the initial portion of the string to their return "
755 "type of I<long> or I<long long>."
759 #: build/C/man3/atoi.3:100
761 "The B<atoi>(), B<atol>(), and B<atoll>() functions are thread-safe with "
762 "exceptions. These functions can be safely used in multithreaded "
763 "applications, as long as B<setlocale>(3) is not called to change the locale "
764 "during their execution."
768 #: build/C/man3/atoi.3:108
770 "SVr4, POSIX.1-2001, 4.3BSD, C99. C89 and POSIX.1-1996 include the functions "
771 "B<atoi>() and B<atol>() only."
776 #. function is present in glibc 2 since version 2.0.2, but
777 #. not in libc4 or libc5.
779 #: build/C/man3/atoi.3:119
781 "Linux libc provided B<atoq>() as an obsolete name for B<atoll>(); B<atoq>() "
782 "is not provided by glibc."
786 #: build/C/man3/atoi.3:123
787 msgid "B<atof>(3), B<strtod>(3), B<strtol>(3), B<strtoul>(3)"
791 #: build/C/man3/canonicalize_file_name.3:26
793 msgid "CANONICALIZE_FILE_NAME"
797 #: build/C/man3/canonicalize_file_name.3:26
803 #: build/C/man3/canonicalize_file_name.3:29
804 msgid "canonicalize_file_name - return the canonicalized absolute pathname"
808 #: build/C/man3/canonicalize_file_name.3:31
809 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
813 #: build/C/man3/canonicalize_file_name.3:35
814 msgid "B<char *canonicalize_file_name(const char *>I<path>B<);>"
818 #: build/C/man3/canonicalize_file_name.3:49
820 "The B<canonicalize_file_name>() function returns a null-terminated string "
821 "containing the canonicalized absolute pathname corresponding to I<path>. In "
822 "the returned string, symbolic links are resolved, as are I<.> and I<..> "
823 "pathname components. Consecutive slash (I</>) characters are replaced by a "
828 #: build/C/man3/canonicalize_file_name.3:55
830 "The returned string is dynamically allocated by B<canonicalize_file_name>() "
831 "and the caller should deallocate it with B<free>(3) when it is no longer "
836 #: build/C/man3/canonicalize_file_name.3:59
837 msgid "The call I<canonicalize_file_name(path)> is equivalent to the call:"
841 #: build/C/man3/canonicalize_file_name.3:61
843 msgid " realpath(path, NULL);\n"
847 #: build/C/man3/canonicalize_file_name.3:70
849 "On success, B<canonicalize_file_name>() returns a null-terminated string. "
850 "On error (e.g., a pathname component is unreadable or does not exist), "
851 "B<canonicalize_file_name>() returns NULL and sets I<errno> to indicate the "
856 #: build/C/man3/canonicalize_file_name.3:70 build/C/man3/getauxval.3:181 build/C/man3/mkdtemp.3:75 build/C/man3/mkstemp.3:161 build/C/man3/mktemp.3:91 build/C/man3/putenv.3:75 build/C/man3/random.3:140 build/C/man3/random_r.3:105 build/C/man3/rpmatch.3:82 build/C/man3/setenv.3:119 build/C/man3/strtod.3:155 build/C/man3/strtol.3:144 build/C/man3/strtoul.3:148
862 #: build/C/man3/canonicalize_file_name.3:73
863 msgid "See B<realpath>(3)."
867 #: build/C/man3/canonicalize_file_name.3:75
868 msgid "This function is a GNU extension."
872 #: build/C/man3/canonicalize_file_name.3:77
873 msgid "B<readlink>(2), B<realpath>(3)"
877 #: build/C/man3/cfree.3:24
883 #: build/C/man3/cfree.3:24 build/C/man3/ecvt_r.3:30 build/C/man3/rpmatch.3:29
889 #: build/C/man3/cfree.3:27
890 msgid "cfree - free allocated memory"
894 #: build/C/man3/cfree.3:34
898 "B<int cfree(void *>I<ptr>B<);>\n"
902 #: build/C/man3/cfree.3:37
905 "/* In glibc or FreeBSD libcompat */\n"
906 "B<void cfree(void *>I<ptr>B<);>\n"
910 #: build/C/man3/cfree.3:40
913 "/* In SCO OpenServer */\n"
914 "B<void cfree(char *>I<ptr>B<, unsigned >I<num>B<, unsigned >I<size>B<);>\n"
918 #: build/C/man3/cfree.3:43
921 "/* In Solaris watchmalloc.so.1 */\n"
922 "B<void cfree(void *>I<ptr>B<, size_t >I<nelem>B<, size_t >I<elsize>B<);>\n"
926 #: build/C/man3/cfree.3:52
927 msgid "B<cfree>(): _BSD_SOURCE || _SVID_SOURCE"
931 #: build/C/man3/cfree.3:57
932 msgid "This function should never be used. Use B<free>(3) instead."
936 #: build/C/man3/cfree.3:57
942 #: build/C/man3/cfree.3:63
944 "In glibc, the function B<cfree>() is a synonym for B<free>(3), \"added for "
945 "compatibility with SunOS\"."
949 #: build/C/man3/cfree.3:69
951 "Other systems have other functions with this name. The declaration is "
952 "sometimes in I<E<lt>stdlib.hE<gt>> and sometimes in I<E<lt>malloc.hE<gt>>."
956 #: build/C/man3/cfree.3:69
962 #: build/C/man3/cfree.3:74
964 "Some SCO and Solaris versions have malloc libraries with a 3-argument "
965 "B<cfree>(), apparently as an analog to B<calloc>(3)."
969 #: build/C/man3/cfree.3:76
970 msgid "If you need it while porting something, add"
974 #: build/C/man3/cfree.3:79
975 msgid "#define cfree(p, n, s) free((p))"
979 #: build/C/man3/cfree.3:82
980 msgid "to your file."
984 #: build/C/man3/cfree.3:91
986 "A frequently asked question is \"Can I use B<free>(3) to free memory "
987 "allocated with B<calloc>(3), or do I need B<cfree>()?\" Answer: use "
992 #: build/C/man3/cfree.3:96
994 "An SCO manual writes: \"The cfree routine is provided for compliance to the "
995 "iBCSe2 standard and simply calls free. The num and size arguments to cfree "
1000 #: build/C/man3/cfree.3:112
1002 "The SunOS version of B<cfree>() (which is a synonym for B<free>(3)) "
1003 "returns 1 on success and 0 on failure. In case of error, I<errno> is set to "
1004 "B<EINVAL>: the value of I<ptr> was not a pointer to a block previously "
1005 "allocated by one of the routines in the B<malloc>(3) family."
1009 #: build/C/man3/cfree.3:117
1011 "The 3-argument version of B<cfree>() as used by SCO conforms to the iBCSe2 "
1012 "standard: Intel386 Binary Compatibility Specification, Edition 2."
1016 #: build/C/man3/cfree.3:118
1017 msgid "B<malloc>(3)"
1021 #: build/C/man3/clearenv.3:26
1027 #: build/C/man3/clearenv.3:29
1028 msgid "clearenv - clear the environment"
1032 #: build/C/man3/clearenv.3:34
1034 msgid "B<int clearenv(void);>\n"
1038 #: build/C/man3/clearenv.3:43
1039 msgid "B<clearenv>(): _SVID_SOURCE || _BSD_SOURCE"
1043 #: build/C/man3/clearenv.3:50
1045 "The B<clearenv>() function clears the environment of all name-value pairs "
1046 "and sets the value of the external variable I<environ> to NULL."
1049 #. Most versions of UNIX return -1 on error, or do not even have errors.
1050 #. Glibc info and the Watcom C library document "a nonzero value".
1052 #: build/C/man3/clearenv.3:57
1054 "The B<clearenv>() function returns zero on success, and a nonzero value on "
1059 #: build/C/man3/clearenv.3:57 build/C/man3/getauxval.3:188 build/C/man3/getenv.3:93 build/C/man3/getloadavg.3:63 build/C/man3/mkdtemp.3:84 build/C/man3/mkstemp.3:188
1065 #: build/C/man3/clearenv.3:59
1066 msgid "Available since glibc 2.0."
1070 #: build/C/man3/clearenv.3:73
1072 "Various UNIX variants (DG/UX, HP-UX, QNX, ...). POSIX.9 (bindings for "
1073 "FORTRAN77). POSIX.1-1996 did not accept B<clearenv>() and B<putenv>(3), "
1074 "but changed its mind and scheduled these functions for some later issue of "
1075 "this standard (cf. B.4.6.1). However, POSIX.1-2001 adds only B<putenv>(3), "
1076 "and rejected B<clearenv>()."
1080 #: build/C/man3/clearenv.3:77
1082 "Used in security-conscious applications. If it is unavailable the "
1087 #: build/C/man3/clearenv.3:80
1089 msgid " environ = NULL;\n"
1093 #: build/C/man3/clearenv.3:83
1094 msgid "will probably do."
1098 #. HP-UX has a ENOMEM error return.
1100 #: build/C/man3/clearenv.3:96
1102 "The DG/UX and Tru64 man pages write: If I<environ> has been modified by "
1103 "anything other than the B<putenv>(3), B<getenv>(3), or B<clearenv>() "
1104 "functions, then B<clearenv>() will return an error and the process "
1105 "environment will remain unchanged."
1109 #: build/C/man3/clearenv.3:101
1110 msgid "B<getenv>(3), B<putenv>(3), B<setenv>(3), B<unsetenv>(3), B<environ>(7)"
1114 #: build/C/man3/drand48.3:30
1120 #: build/C/man3/drand48.3:30
1126 #: build/C/man3/drand48.3:34
1128 "drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, "
1129 "lcong48 - generate uniformly distributed pseudo-random numbers"
1133 #: build/C/man3/drand48.3:39
1135 msgid "B<double drand48(void);>\n"
1139 #: build/C/man3/drand48.3:41
1141 msgid "B<double erand48(unsigned short >I<xsubi>B<[3]);>\n"
1145 #: build/C/man3/drand48.3:43
1147 msgid "B<long int lrand48(void);>\n"
1151 #: build/C/man3/drand48.3:45
1153 msgid "B<long int nrand48(unsigned short >I<xsubi>B<[3]);>\n"
1157 #: build/C/man3/drand48.3:47
1159 msgid "B<long int mrand48(void);>\n"
1163 #: build/C/man3/drand48.3:49
1165 msgid "B<long int jrand48(unsigned short >I<xsubi>B<[3]);>\n"
1169 #: build/C/man3/drand48.3:51
1171 msgid "B<void srand48(long int >I<seedval>B<);>\n"
1175 #: build/C/man3/drand48.3:53
1177 msgid "B<unsigned short *seed48(unsigned short >I<seed16v>B<[3]);>\n"
1181 #: build/C/man3/drand48.3:55
1183 msgid "B<void lcong48(unsigned short >I<param>B<[7]);>\n"
1196 #: build/C/man3/drand48.3:74
1197 msgid "All functions shown above: _SVID_SOURCE || _XOPEN_SOURCE"
1201 #: build/C/man3/drand48.3:78
1203 "These functions generate pseudo-random numbers using the linear congruential "
1204 "algorithm and 48-bit integer arithmetic."
1208 #: build/C/man3/drand48.3:86
1210 "The B<drand48>() and B<erand48>() functions return nonnegative "
1211 "double-precision floating-point values uniformly distributed between [0.0, "
1216 #: build/C/man3/drand48.3:93
1218 "The B<lrand48>() and B<nrand48>() functions return nonnegative long "
1219 "integers uniformly distributed between 0 and 2^31."
1223 #: build/C/man3/drand48.3:100
1225 "The B<mrand48>() and B<jrand48>() functions return signed long integers "
1226 "uniformly distributed between -2^31 and 2^31."
1230 #: build/C/man3/drand48.3:119
1232 "The B<srand48>(), B<seed48>() and B<lcong48>() functions are "
1233 "initialization functions, one of which should be called before using "
1234 "B<drand48>(), B<lrand48>() or B<mrand48>(). The functions B<erand48>(), "
1235 "B<nrand48>() and B<jrand48>() do not require an initialization function to "
1240 #: build/C/man3/drand48.3:123
1242 "All the functions work by generating a sequence of 48-bit integers, I<Xi>, "
1243 "according to the linear congruential formula:"
1247 #: build/C/man3/drand48.3:127
1249 msgid "B<Xn+1 = (aXn + c) mod m, where n E<gt>= 0>\n"
1253 #: build/C/man3/drand48.3:140
1255 "The parameter I<m> = 2^48, hence 48-bit integer arithmetic is performed. "
1256 "Unless B<lcong48>() is called, I<a> and I<c> are given by:"
1260 #: build/C/man3/drand48.3:145
1263 "B<a = 0x5DEECE66D>\n"
1268 #: build/C/man3/drand48.3:165
1270 "The value returned by any of the functions B<drand48>(), B<erand48>(), "
1271 "B<lrand48>(), B<nrand48>(), B<mrand48>() or B<jrand48>() is computed by "
1272 "first generating the next 48-bit I<Xi> in the sequence. Then the "
1273 "appropriate number of bits, according to the type of data item to be "
1274 "returned, is copied from the high-order bits of I<Xi> and transformed into "
1275 "the returned value."
1279 #: build/C/man3/drand48.3:191
1281 "The functions B<drand48>(), B<lrand48>() and B<mrand48>() store the last "
1282 "48-bit I<Xi> generated in an internal buffer. The functions B<erand48>(), "
1283 "B<nrand48>() and B<jrand48>() require the calling program to provide "
1284 "storage for the successive I<Xi> values in the array argument I<xsubi>. The "
1285 "functions are initialized by placing the initial value of I<Xi> into the "
1286 "array before calling the function for the first time."
1290 #: build/C/man3/drand48.3:200
1292 "The initializer function B<srand48>() sets the high order 32-bits of I<Xi> "
1293 "to the argument I<seedval>. The low order 16-bits are set to the arbitrary "
1298 #: build/C/man3/drand48.3:214
1300 "The initializer function B<seed48>() sets the value of I<Xi> to the 48-bit "
1301 "value specified in the array argument I<seed16v>. The previous value of "
1302 "I<Xi> is copied into an internal buffer and a pointer to this buffer is "
1303 "returned by B<seed48>()."
1307 #: build/C/man3/drand48.3:245
1309 "The initialization function B<lcong48>() allows the user to specify initial "
1310 "values for I<Xi>, I<a> and I<c>. Array argument elements I<param[0-2]> "
1311 "specify I<Xi>, I<param[3-5]> specify I<a>, and I<param[6]> specifies I<c>. "
1312 "After B<lcong48>() has been called, a subsequent call to either "
1313 "B<srand48>() or B<seed48>() will restore the standard values of I<a> and "
1318 #: build/C/man3/drand48.3:260
1320 "The B<drand48>(), B<erand48>(), B<lrand48>(), B<nrand48>(), B<mrand48>(), "
1321 "B<jrand48>(), B<srand48>(), B<seed48>(), and B<lcong48>() functions record "
1322 "global state information for the random number generator, so they are not "
1327 #: build/C/man3/drand48.3:262
1328 msgid "SVr4, POSIX.1-2001."
1332 #: build/C/man3/drand48.3:264
1333 msgid "B<rand>(3), B<random>(3)"
1337 #: build/C/man3/drand48_r.3:27
1343 #: build/C/man3/drand48_r.3:27
1349 #: build/C/man3/drand48_r.3:32
1351 "drand48_r, erand48_r, lrand48_r, nrand48_r, mrand48_r, jrand48_r, srand48_r, "
1352 "seed48_r, lcong48_r - generate uniformly distributed pseudo-random numbers "
1357 #: build/C/man3/drand48_r.3:37
1359 msgid "B<int drand48_r(struct drand48_data *>I<buffer>B<, double *>I<result>B<);>\n"
1363 #: build/C/man3/drand48_r.3:39
1365 msgid "B<int erand48_r(unsigned short >I<xsubi>B<[3]>I<,>\n"
1369 #: build/C/man3/drand48_r.3:41
1371 msgid "B< struct drand48_data *>I<buffer>B<, double *>I<result>B<);>\n"
1375 #: build/C/man3/drand48_r.3:43
1378 "B<int lrand48_r(struct drand48_data *>I<buffer>B<, long int "
1379 "*>I<result>B<);>\n"
1383 #: build/C/man3/drand48_r.3:45
1385 msgid "B<int nrand48_r(unsigned short int >I<xsubi[3]>B<,>\n"
1389 #: build/C/man3/drand48_r.3:47 build/C/man3/drand48_r.3:53
1392 "B< struct drand48_data *>I<buffer>B<, long int "
1393 "*>I<result>B<);>\n"
1397 #: build/C/man3/drand48_r.3:49
1400 "B<int mrand48_r(struct drand48_data *>I<buffer>B<,long int "
1401 "*>I<result>B<);>\n"
1405 #: build/C/man3/drand48_r.3:51
1407 msgid "B<int jrand48_r(unsigned short int >I<xsubi[3]>B<,>\n"
1411 #: build/C/man3/drand48_r.3:55
1414 "B<int srand48_r(long int >I<seedval>B<, struct drand48_data "
1415 "*>I<buffer>B<);>\n"
1419 #: build/C/man3/drand48_r.3:57
1421 msgid "B<int seed48_r(unsigned short int >I<seed16v[3]>B<,>\n"
1425 #: build/C/man3/drand48_r.3:59
1427 msgid "B< struct drand48_data *>I<buffer>B<);>\n"
1431 #: build/C/man3/drand48_r.3:61
1433 msgid "B<int lcong48_r(unsigned short int >I<param[7]>B<,>\n"
1437 #: build/C/man3/drand48_r.3:63
1439 msgid "B< struct drand48_data *>I<buffer>B<);>\n"
1442 #. .BR drand48_r (),
1443 #. .BR erand48_r (),
1444 #. .BR lrand48_r (),
1445 #. .BR nrand48_r (),
1446 #. .BR mrand48_r (),
1447 #. .BR jrand48_r (),
1448 #. .BR srand48_r (),
1450 #. .BR lcong48_r ():
1452 #: build/C/man3/drand48_r.3:82
1453 msgid "All functions shown above: _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE"
1457 #: build/C/man3/drand48_r.3:89
1459 "These functions are the reentrant analogs of the functions described in "
1460 "B<drand48>(3). Instead of modifying the global random generator state, they "
1461 "use the supplied data I<buffer>."
1465 #: build/C/man3/drand48_r.3:96
1467 "Before the first use, this struct must be initialized, for example, by "
1468 "filling it with zeros, or by calling one of the functions B<srand48_r>(), "
1469 "B<seed48_r>(), or B<lcong48_r>()."
1473 #: build/C/man3/drand48_r.3:98
1474 msgid "The return value is 0."
1478 #: build/C/man3/drand48_r.3:112
1480 "The B<drand48_r>(), B<erand48_r>(), B<lrand48_r>(), B<nrand48_r>(), "
1481 "B<mrand48_r>(), B<jrand48_r>(), B<srand48_r>(), B<seed48_r>(), and "
1482 "B<lcong48_r>() functions are thread-safe."
1486 #: build/C/man3/drand48_r.3:114
1487 msgid "These functions are GNU extensions and are not portable."
1491 #: build/C/man3/drand48_r.3:117 build/C/man3/random_r.3:144
1492 msgid "B<drand48>(3), B<rand>(3), B<random>(3)"
1496 #: build/C/man3/ecvt.3:32
1502 #: build/C/man3/ecvt.3:35
1503 msgid "ecvt, fcvt - convert a floating-point number to a string"
1507 #: build/C/man3/ecvt.3:40
1509 "B<char *ecvt(double >I<number>B<, int >I<ndigits>B<, int *>I<decpt>B<,> "
1510 "B<int *>I<sign>B<);>"
1514 #: build/C/man3/ecvt.3:43
1516 "B<char *fcvt(double >I<number>B<, int >I<ndigits>B<, int *>I<decpt>B<,> "
1517 "B<int *>I<sign>B<);>"
1521 #: build/C/man3/ecvt.3:51
1522 msgid "B<ecvt>(), B<fcvt>():"
1526 #: build/C/man3/ecvt.3:54 build/C/man3/gcvt.3:49 build/C/man3/mktemp.3:53
1528 msgid "Since glibc 2.12:"
1532 #: build/C/man3/ecvt.3:61 build/C/man3/gcvt.3:56
1536 " (_XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
1537 " _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED) &&\n"
1538 " !(_POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>=\\ 600)\n"
1542 #: build/C/man3/ecvt.3:62 build/C/man3/gcvt.3:57 build/C/man3/mktemp.3:59
1544 msgid "Before glibc 2.12:"
1548 #: build/C/man3/ecvt.3:92
1550 "The B<ecvt>() function converts I<number> to a null-terminated string of "
1551 "I<ndigits> digits (where I<ndigits> is reduced to a system-specific limit "
1552 "determined by the precision of a I<double>), and returns a pointer to the "
1553 "string. The high-order digit is nonzero, unless I<number> is zero. The low "
1554 "order digit is rounded. The string itself does not contain a decimal point; "
1555 "however, the position of the decimal point relative to the start of the "
1556 "string is stored in I<*decpt>. A negative value for I<*decpt> means that "
1557 "the decimal point is to the left of the start of the string. If the sign of "
1558 "I<number> is negative, I<*sign> is set to a nonzero value, otherwise it is "
1559 "set to 0. If I<number> is zero, it is unspecified whether I<*decpt> is 0 or "
1564 #: build/C/man3/ecvt.3:99
1566 "The B<fcvt>() function is identical to B<ecvt>(), except that I<ndigits> "
1567 "specifies the number of digits after the decimal point."
1571 #: build/C/man3/ecvt.3:110
1573 "Both the B<ecvt>() and B<fcvt>() functions return a pointer to a static "
1574 "string containing the ASCII representation of I<number>. The static string "
1575 "is overwritten by each call to B<ecvt>() or B<fcvt>()."
1579 #: build/C/man3/ecvt.3:117
1580 msgid "The B<ecvt>() and B<fcvt>() functions are not thread-safe."
1584 #: build/C/man3/ecvt.3:129
1586 "SVr2; marked as LEGACY in POSIX.1-2001. POSIX.1-2008 removes the "
1587 "specifications of B<ecvt>() and B<fcvt>(), recommending the use of "
1588 "B<sprintf>(3) instead (though B<snprintf>(3) may be preferable)."
1591 #. Linux libc4 and libc5 specified the type of
1596 #: build/C/man3/ecvt.3:135
1597 msgid "Not all locales use a point as the radix character (\"decimal point\")."
1601 #: build/C/man3/ecvt.3:140
1602 msgid "B<ecvt_r>(3), B<gcvt>(3), B<qecvt>(3), B<setlocale>(3), B<sprintf>(3)"
1606 #: build/C/man3/ecvt_r.3:30
1612 #: build/C/man3/ecvt_r.3:33
1614 "ecvt_r, fcvt_r, qecvt_r, qfcvt_r - convert a floating-point number to a "
1619 #: build/C/man3/ecvt_r.3:39
1622 "B<int ecvt_r(double >I<number>B<, int >I<ndigits>B<, int *>I<decpt>B<,>\n"
1623 "B< int *>I<sign>B<, char *>I<buf>B<, size_t >I<len>B<);>\n"
1627 #: build/C/man3/ecvt_r.3:42
1630 "B<int fcvt_r(double >I<number>B<, int >I<ndigits>B<, int *>I<decpt>B<,>\n"
1631 "B< int *>I<sign>B<, char *>I<buf>B<, size_t >I<len>B<);>\n"
1635 #: build/C/man3/ecvt_r.3:45
1638 "B<int qecvt_r(long double >I<number>B<, int >I<ndigits>B<, int "
1640 "B< int *>I<sign>B<, char *>I<buf>B<, size_t >I<len>B<);>\n"
1644 #: build/C/man3/ecvt_r.3:48
1647 "B<int qfcvt_r(long double >I<number>B<, int >I<ndigits>B<, int "
1649 "B< int *>I<sign>B<, char *>I<buf>B<, size_t >I<len>B<);>\n"
1653 #: build/C/man3/ecvt_r.3:60
1654 msgid "B<ecvt_r>(), B<fcvt_r>(), B<qecvt_r>(), B<qfcvt_r>():"
1658 #: build/C/man3/ecvt_r.3:62
1659 msgid "_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500"
1663 #: build/C/man3/ecvt_r.3:86
1665 "The functions B<ecvt_r>(), B<fcvt_r>(), B<qecvt_r>(), and B<qfcvt_r>() are "
1666 "identical to B<ecvt>(3), B<fcvt>(3), B<qecvt>(3), and B<qfcvt>(3), "
1667 "respectively, except that they do not return their result in a static "
1668 "buffer, but instead use the supplied I<buf> of size I<len>. See B<ecvt>(3) "
1673 #: build/C/man3/ecvt_r.3:88
1674 msgid "These functions return 0 on success, and -1 otherwise."
1678 #: build/C/man3/ecvt_r.3:90
1679 msgid "These functions are GNU extensions."
1683 #: build/C/man3/ecvt_r.3:95
1684 msgid "These functions are obsolete. Instead, B<sprintf>(3) is recommended."
1688 #: build/C/man3/ecvt_r.3:98
1689 msgid "B<ecvt>(3), B<qecvt>(3), B<sprintf>(3)"
1693 #: build/C/man3/exit.3:29
1699 #: build/C/man3/exit.3:29 build/C/man3/random.3:33 build/C/man3/random_r.3:26
1705 #: build/C/man3/exit.3:32
1706 msgid "exit - cause normal process termination"
1710 #: build/C/man3/exit.3:37
1712 msgid "B<void exit(int >I<status>B<);>\n"
1716 #: build/C/man3/exit.3:45
1718 "The B<exit>() function causes normal process termination and the value of "
1719 "I<status & 0377> is returned to the parent (see B<wait>(2))."
1723 #: build/C/man3/exit.3:72
1725 "All functions registered with B<atexit>(3) and B<on_exit>(3) are called, "
1726 "in the reverse order of their registration. (It is possible for one of "
1727 "these functions to use B<atexit>(3) or B<on_exit>(3) to register an "
1728 "additional function to be executed during exit processing; the new "
1729 "registration is added to the front of the list of functions that remain to "
1730 "be called.) If one of these functions does not return (e.g., it calls "
1731 "B<_exit>(2), or kills itself with a signal), then none of the remaining "
1732 "functions is called, and further exit processing (in particular, flushing of "
1733 "B<stdio>(3) streams) is abandoned. If a function has been registered "
1734 "multiple times using B<atexit>(3) or B<on_exit>(3), then it is called as "
1735 "many times as it was registered."
1739 #: build/C/man3/exit.3:79
1741 "All open B<stdio>(3) streams are flushed and closed. Files created by "
1742 "B<tmpfile>(3) are removed."
1746 #: build/C/man3/exit.3:86
1748 "The C standard specifies two constants, B<EXIT_SUCCESS> and B<EXIT_FAILURE>, "
1749 "that may be passed to B<exit>() to indicate successful or unsuccessful "
1750 "termination, respectively."
1754 #: build/C/man3/exit.3:90
1755 msgid "The B<exit>() function does not return."
1759 #: build/C/man3/exit.3:96
1761 "The B<exit>() function uses a global variable that is not protected, so it "
1762 "is not thread-safe."
1766 #: build/C/man3/exit.3:98
1767 msgid "SVr4, 4.3BSD, POSIX.1-2001, C89, C99."
1771 #: build/C/man3/exit.3:115
1773 "It is undefined what happens if one of the functions registered using "
1774 "B<atexit>(3) and B<on_exit>(3) calls either B<exit>() or B<longjmp>(3). "
1775 "Note that a call to B<execve>(2) removes registrations created using "
1776 "B<atexit>(3) and B<on_exit>(3)."
1780 #: build/C/man3/exit.3:124
1782 "The use of B<EXIT_SUCCESS> and B<EXIT_FAILURE> is slightly more portable (to "
1783 "non-UNIX environments) than the use of 0 and some nonzero value like 1 or "
1784 "-1. In particular, VMS uses a different convention."
1788 #: build/C/man3/exit.3:127
1790 "BSD has attempted to standardize exit codes; see the file "
1791 "I<E<lt>sysexits.hE<gt>>."
1795 #: build/C/man3/exit.3:152
1797 "After B<exit>(), the exit status must be transmitted to the parent process. "
1798 "There are three cases. If the parent has set B<SA_NOCLDWAIT>, or has set "
1799 "the B<SIGCHLD> handler to B<SIG_IGN>, the status is discarded. If the "
1800 "parent was waiting on the child, it is notified of the exit status. In both "
1801 "cases the exiting process dies immediately. If the parent has not indicated "
1802 "that it is not interested in the exit status, but is not waiting, the "
1803 "exiting process turns into a \"zombie\" process (which is nothing but a "
1804 "container for the single byte representing the exit status) so that the "
1805 "parent can learn the exit status when it later calls one of the B<wait>(2) "
1810 #: build/C/man3/exit.3:162
1812 "If the implementation supports the B<SIGCHLD> signal, this signal is sent to "
1813 "the parent. If the parent has set B<SA_NOCLDWAIT>, it is undefined whether "
1814 "a B<SIGCHLD> signal is sent."
1818 #: build/C/man3/exit.3:171
1820 "If the process is a session leader and its controlling terminal is the "
1821 "controlling terminal of the session, then each process in the foreground "
1822 "process group of this controlling terminal is sent a B<SIGHUP> signal, and "
1823 "the terminal is disassociated from this session, allowing it to be acquired "
1824 "by a new controlling process."
1828 #: build/C/man3/exit.3:183
1830 "If the exit of the process causes a process group to become orphaned, and if "
1831 "any member of the newly orphaned process group is stopped, then a B<SIGHUP> "
1832 "signal followed by a B<SIGCONT> signal will be sent to each process in this "
1833 "process group. See B<setpgid>(2) for an explanation of orphaned process "
1838 #: build/C/man3/exit.3:189
1840 "B<_exit>(2), B<setpgid>(2), B<wait>(2), B<atexit>(3), B<on_exit>(3), "
1845 #: build/C/man3/gcvt.3:30
1851 #: build/C/man3/gcvt.3:33
1852 msgid "gcvt - convert a floating-point number to a string"
1856 #: build/C/man3/gcvt.3:38
1858 msgid "B<char *gcvt(double >I<number>B<, int >I<ndigit>B<, char *>I<buf>B<);>\n"
1862 #: build/C/man3/gcvt.3:46
1867 #: build/C/man3/gcvt.3:61
1869 "_SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE && "
1870 "_XOPEN_SOURCE_EXTENDED"
1874 #: build/C/man3/gcvt.3:72
1876 "The B<gcvt>() function converts I<number> to a minimal length "
1877 "null-terminated ASCII string and stores the result in I<buf>. It produces "
1878 "I<ndigit> significant digits in either B<printf>(3) F format or E format."
1882 #: build/C/man3/gcvt.3:77
1884 "The B<gcvt>() function returns the address of the string pointed to by "
1889 #: build/C/man3/gcvt.3:86
1891 "Marked as LEGACY in POSIX.1-2001. POSIX.1-2008 removes the specification of "
1892 "B<gcvt>(), recommending the use of B<sprintf>(3) instead (though "
1893 "B<snprintf>(3) may be preferable)."
1897 #: build/C/man3/gcvt.3:89
1898 msgid "B<ecvt>(3), B<fcvt>(3), B<sprintf>(3)"
1902 #: build/C/man3/getauxval.3:29
1908 #: build/C/man3/getauxval.3:32
1909 msgid "getauxval - retrieve a value from the auxiliary vector"
1913 #: build/C/man3/getauxval.3:35
1915 msgid "B<#include E<lt>sys/auxv.hE<gt>>\n"
1919 #: build/C/man3/getauxval.3:37
1921 msgid "B<unsigned long getauxval(unsigned long >I<type>B<);>\n"
1925 #: build/C/man3/getauxval.3:45
1927 "The B<getauxval>() function retrieves values from the auxiliary vector, a "
1928 "mechanism that the kernel's ELF binary loader uses to pass certain "
1929 "information to user space when a program is executed."
1933 #: build/C/man3/getauxval.3:53
1935 "Each entry in the auxiliary vector consists of a pair of values: a type that "
1936 "identifies what this entry represents, and a value for that type. Given the "
1937 "argument I<type>, B<getauxval>() returns the corresponding value."
1941 #: build/C/man3/getauxval.3:60
1943 "The value returned for each I<type> is given in the following list. Not all "
1944 "I<type> values are present on all architectures."
1948 #: build/C/man3/getauxval.3:60
1954 #: build/C/man3/getauxval.3:63
1955 msgid "The base address of the program interpreter (usually, the dynamic linker)."
1959 #: build/C/man3/getauxval.3:63
1961 msgid "B<AT_BASE_PLATFORM>"
1965 #: build/C/man3/getauxval.3:68
1967 "A string identifying the real platform; may differ from B<AT_PLATFORM> "
1972 #: build/C/man3/getauxval.3:68
1974 msgid "B<AT_CLKTCK>"
1978 #: build/C/man3/getauxval.3:75
1980 "The frequency with which B<times>(2) counts. This value can also be "
1981 "obtained via I<sysconf(_SC_CLK_TCK)>."
1985 #: build/C/man3/getauxval.3:75
1987 msgid "B<AT_DCACHEBSIZE>"
1991 #: build/C/man3/getauxval.3:78
1992 msgid "The data cache block size."
1996 #: build/C/man3/getauxval.3:78
2002 #: build/C/man3/getauxval.3:81
2003 msgid "The effective group ID of the thread."
2007 #: build/C/man3/getauxval.3:81
2013 #: build/C/man3/getauxval.3:84
2014 msgid "The entry address of the executable."
2018 #: build/C/man3/getauxval.3:84
2024 #: build/C/man3/getauxval.3:87
2025 msgid "The effective user ID of the thread."
2029 #: build/C/man3/getauxval.3:87
2031 msgid "B<AT_EXECFD>"
2035 #: build/C/man3/getauxval.3:90
2036 msgid "File descriptor of program."
2040 #: build/C/man3/getauxval.3:90
2042 msgid "B<AT_EXECFN>"
2046 #: build/C/man3/getauxval.3:93
2047 msgid "Pathname used to execute program."
2051 #: build/C/man3/getauxval.3:93
2057 #: build/C/man3/getauxval.3:96
2058 msgid "Flags (unused)."
2062 #: build/C/man3/getauxval.3:96
2068 #: build/C/man3/getauxval.3:101
2070 "Used FPU control word (SuperH architecture only). This gives some "
2071 "information about the FPU initialization performed by the kernel."
2075 #: build/C/man3/getauxval.3:101
2081 #: build/C/man3/getauxval.3:104
2082 msgid "The real group ID of the thread."
2086 #: build/C/man3/getauxval.3:104
2092 #: build/C/man3/getauxval.3:114
2094 "A pointer to a multibyte mask of bits whose settings indicate detailed "
2095 "processor capabilities. The contents of the bit mask are hardware dependent "
2096 "(for example, see the kernel source file "
2097 "I<arch/x86/include/asm/cpufeature.h> for details relating to the Intel x86 "
2098 "architecture). A human-readable version of the same information is "
2099 "available via I</proc/cpuinfo>."
2103 #: build/C/man3/getauxval.3:114
2105 msgid "B<AT_ICACHEBSIZE>"
2115 #: build/C/man3/getauxval.3:123
2116 msgid "The instruction cache block size."
2120 #: build/C/man3/getauxval.3:123
2122 msgid "B<AT_PAGESZ>"
2126 #: build/C/man3/getauxval.3:127
2127 msgid "The system page size (the same value returned by I<sysconf(_SC_PAGESIZE)>)."
2131 #: build/C/man3/getauxval.3:127
2137 #: build/C/man3/getauxval.3:130
2138 msgid "The address of the program headers of the executable."
2142 #: build/C/man3/getauxval.3:130
2148 #: build/C/man3/getauxval.3:133
2149 msgid "The size of program header entry."
2153 #: build/C/man3/getauxval.3:133
2159 #: build/C/man3/getauxval.3:136
2160 msgid "The number of program headers."
2164 #: build/C/man3/getauxval.3:136
2166 msgid "B<AT_PLATFORM>"
2170 #: build/C/man3/getauxval.3:143
2172 "A pointer to a string that identifies the hardware platform that the program "
2173 "is running on. The dynamic linker uses this in the interpretation of "
2178 #: build/C/man3/getauxval.3:143
2180 msgid "B<AT_RANDOM>"
2184 #: build/C/man3/getauxval.3:146
2185 msgid "The address of sixteen bytes containing a random value."
2189 #: build/C/man3/getauxval.3:146
2191 msgid "B<AT_SECURE>"
2195 #: build/C/man3/getauxval.3:158
2197 "Has a nonzero value if this executable should be treated securely. Most "
2198 "commonly, a nonzero value indicates that the process is executing a "
2199 "set-user-ID or set-group-ID program; alternatively, a nonzero value may be "
2200 "triggered by a Linux Security Module. When this value is nonzero, the "
2201 "dynamic linker disables the use of certain environment variables (see "
2202 "B<ld-linux.so>(8)) and glibc changes other aspects of its behavior. (See "
2203 "also B<secure_getenv>(3).)"
2207 #: build/C/man3/getauxval.3:158
2209 msgid "B<AT_SYSINFO>"
2213 #: build/C/man3/getauxval.3:162
2215 "The entry point to the system call function in the vDSO. Not present/needed "
2216 "on all architectures (e.g., absent on x86-64)."
2220 #: build/C/man3/getauxval.3:162
2222 msgid "B<AT_SYSINFO_EHDR>"
2226 #: build/C/man3/getauxval.3:167
2228 "The address of a page containing the virtual Dynamic Shared Object (vDSO) "
2229 "that the kernel creates in order to provide fast implementations of certain "
2234 #: build/C/man3/getauxval.3:167
2236 msgid "B<AT_UCACHEBSIZE>"
2240 #: build/C/man3/getauxval.3:170
2241 msgid "The unified cache block size."
2245 #: build/C/man3/getauxval.3:170
2251 #: build/C/man3/getauxval.3:173
2252 msgid "The real user ID of the thread."
2256 #: build/C/man3/getauxval.3:181
2258 "On success, B<getauxval>() returns the value corresponding to I<type>. If "
2259 "I<type> is not found, 0 is returned."
2263 #: build/C/man3/getauxval.3:182
2265 msgid "B<ENOENT> (since glibc 2.19)"
2268 #. commit b9ab448f980e296eac21ac65f53783967cc6037b
2270 #: build/C/man3/getauxval.3:188
2271 msgid "No entry corresponding to I<type> could be found in the auxiliary vector."
2275 #: build/C/man3/getauxval.3:192
2276 msgid "The B<getauxval>() function was added to glibc in version 2.16."
2280 #: build/C/man3/getauxval.3:197
2281 msgid "The B<getauxval>() function is thread-safe."
2285 #: build/C/man3/getauxval.3:199
2286 msgid "This function is a nonstandard glibc extension."
2290 #: build/C/man3/getauxval.3:208
2292 "The primary consumer of the information in the auxiliary vector is the "
2293 "dynamic linker B<ld-linux.so>(8). The auxiliary vector is a convenient and "
2294 "efficient shortcut that allows the kernel to communicate a certain set of "
2295 "standard information that the dynamic linker usually or always needs. In "
2296 "some cases, the same information could be obtained by system calls, but "
2297 "using the auxiliary vector is cheaper."
2301 #: build/C/man3/getauxval.3:214
2303 "The auxiliary vector resides just above the argument list and environment in "
2304 "the process address space. The auxiliary vector supplied to a program can "
2305 "be viewed by setting the B<LD_SHOW_AUXV> environment variable when running a "
2310 #: build/C/man3/getauxval.3:216
2312 msgid " $ LD_SHOW_AUXV=1 sleep 1\n"
2316 #: build/C/man3/getauxval.3:223
2318 "The auxiliary vector of any process can (subject to file permissions) be "
2319 "obtained via I</proc/PID/auxv>; see B<proc>(5) for more information."
2323 #: build/C/man3/getauxval.3:223 build/C/man3/mktemp.3:105 build/C/man3/random.3:189 build/C/man3/rpmatch.3:104 build/C/man3/setenv.3:144
2329 #: build/C/man3/getauxval.3:232
2331 "Before the addition of the B<ENOENT> error in glibc 2.19, there was no way "
2332 "to unambiguously distinguish the case where I<type> could not be found from "
2333 "the case where the value corresponding to I<type> was zer0."
2337 #: build/C/man3/getauxval.3:235
2338 msgid "B<secure_getenv>(3), B<vdso>(7), B<ld-linux.so>(8)"
2342 #: build/C/man3/getenv.3:33
2348 #: build/C/man3/getenv.3:33
2354 #: build/C/man3/getenv.3:36
2355 msgid "getenv, secure_getenv - get an environment variable"
2359 #: build/C/man3/getenv.3:41
2361 msgid "B<char *getenv(const char *>I<name>B<);>\n"
2365 #: build/C/man3/getenv.3:43
2367 msgid "B<char *secure_getenv(const char *>I<name>B<);>\n"
2371 #: build/C/man3/getenv.3:52
2372 msgid "B<secure_getenv>(): _GNU_SOURCE"
2376 #: build/C/man3/getenv.3:61
2378 "The B<getenv>() function searches the environment list to find the "
2379 "environment variable I<name>, and returns a pointer to the corresponding "
2384 #: build/C/man3/getenv.3:69
2386 "The GNU-specific B<secure_getenv>() function is just like B<getenv>() "
2387 "except that it returns NULL in cases where \"secure execution\" is "
2388 "required. Secure execution is required if one of the following conditions "
2389 "was true when the program run by the calling process was loaded:"
2393 #: build/C/man3/getenv.3:69 build/C/man3/getenv.3:74 build/C/man3/getenv.3:76 build/C/man3/system.3:77 build/C/man3/system.3:82 build/C/man3/system.3:86 build/C/man3/system.3:91
2399 #: build/C/man3/getenv.3:74
2401 "the process's effective user ID did not match its real user ID or the "
2402 "process's effective group ID did not match its real group ID (typically this "
2403 "is the result of executing a set-user-ID or set-group-ID program);"
2407 #: build/C/man3/getenv.3:76
2408 msgid "the effective capability bit was set on the executable file; or"
2412 #: build/C/man3/getenv.3:78
2413 msgid "the process has a nonempty permitted capability set."
2417 #: build/C/man3/getenv.3:81
2419 "Secure execution may also required if triggered by some Linux security "
2424 #: build/C/man3/getenv.3:88
2426 "The B<secure_getenv>() function is intended for use in general-purpose "
2427 "libraries to avoid vulnerabilities that could occur if set-user-ID or "
2428 "set-group-ID programs accidentally trusted the environment."
2432 #: build/C/man3/getenv.3:93
2434 "The B<getenv>() function returns a pointer to the value in the environment, "
2435 "or NULL if there is no match."
2439 #: build/C/man3/getenv.3:96
2440 msgid "B<secure_getenv>() first appeared in glibc 2.17."
2444 #: build/C/man3/getenv.3:99
2445 msgid "B<getenv>(): SVr4, POSIX.1-2001, 4.3BSD, C89, C99."
2449 #: build/C/man3/getenv.3:102
2450 msgid "B<secure_getenv>() is a GNU extension."
2454 #: build/C/man3/getenv.3:104
2455 msgid "The strings in the environment list are of the form I<name=value>."
2459 #: build/C/man3/getenv.3:110
2461 "As typically implemented, B<getenv>() returns a pointer to a string within "
2462 "the environment list. The caller must take care not to modify this string, "
2463 "since that would change the environment of the process."
2467 #: build/C/man3/getenv.3:123
2469 "The implementation of B<getenv>() is not required to be reentrant. The "
2470 "string pointed to by the return value of B<getenv>() may be statically "
2471 "allocated, and can be modified by a subsequent call to B<getenv>(), "
2472 "B<putenv>(3), B<setenv>(3), or B<unsetenv>(3)."
2476 #: build/C/man3/getenv.3:129
2478 "The \"secure execution\" mode of B<secure_getenv>() is controlled by the "
2479 "B<AT_SECURE> flag contained in the auxiliary vector passed from the kernel "
2484 #: build/C/man3/getenv.3:136
2486 "B<clearenv>(3), B<getauxval>(3), B<putenv>(3), B<setenv>(3), B<unsetenv>(3), "
2487 "B<capabilities>(7), B<environ>(7)"
2491 #: build/C/man3/getloadavg.3:34
2497 #: build/C/man3/getloadavg.3:34
2503 #: build/C/man3/getloadavg.3:37
2504 msgid "getloadavg - get system load averages"
2508 #: build/C/man3/getloadavg.3:41
2511 "B<#define _BSD_SOURCE> /* See feature_test_macros(7) */\n"
2512 "B<#include E<lt>stdlib.hE<gt>>\n"
2516 #: build/C/man3/getloadavg.3:43
2518 msgid "B<int getloadavg(double >I<loadavg[]>B<, int >I<nelem>B<);>\n"
2522 #: build/C/man3/getloadavg.3:55
2524 "The B<getloadavg>() function returns the number of processes in the system "
2525 "run queue averaged over various periods of time. Up to I<nelem> samples are "
2526 "retrieved and assigned to successive elements of I<loadavg>[]. The system "
2527 "imposes a maximum of 3 samples, representing averages over the last 1, 5, "
2528 "and 15 minutes, respectively."
2534 #. function appeared in
2537 #: build/C/man3/getloadavg.3:63
2539 "If the load average was unobtainable, -1 is returned; otherwise, the number "
2540 "of samples actually retrieved is returned."
2544 #: build/C/man3/getloadavg.3:65
2545 msgid "This function is available in glibc since version 2.2."
2549 #: build/C/man3/getloadavg.3:70
2550 msgid "The B<getloadavg>() function is thread-safe."
2553 #. mdoc seems to have a bug - there must be no newline here
2555 #: build/C/man3/getloadavg.3:74
2556 msgid "Not in POSIX.1-2001. Present on the BSDs and Solaris."
2560 #: build/C/man3/getloadavg.3:76
2561 msgid "B<uptime>(1), B<proc>(5)"
2565 #: build/C/man3/getsubopt.3:25
2571 #: build/C/man3/getsubopt.3:25
2577 #: build/C/man3/getsubopt.3:28
2578 msgid "getsubopt - parse suboption arguments from a string"
2582 #: build/C/man3/getsubopt.3:33
2584 "B<int getsubopt(char **>I<optionp>B<, char * const *>I<tokens>B<, char "
2589 #: build/C/man3/getsubopt.3:40
2590 msgid "B<getsubopt>():"
2594 #: build/C/man3/getsubopt.3:45
2595 msgid "_XOPEN_SOURCE\\ E<gt>= 500 || _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
2599 #: build/C/man3/getsubopt.3:47
2600 msgid "|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
2604 #: build/C/man3/getsubopt.3:64
2606 "B<getsubopt>() parses the list of comma-separated suboptions provided in "
2607 "I<optionp>. (Such a suboption list is typically produced when B<getopt>(3) "
2608 "is used to parse a command line; see for example the I<-o> option of "
2609 "B<mount>(8).) Each suboption may include an associated value, which is "
2610 "separated from the suboption name by an equal sign. The following is an "
2611 "example of the kind of string that might be passed in I<optionp>:"
2615 #: build/C/man3/getsubopt.3:67
2616 msgid "B<ro,name=xyz>"
2620 #: build/C/man3/getsubopt.3:77
2622 "The I<tokens> argument is a pointer to a NULL-terminated array of pointers "
2623 "to the tokens that B<getsubopt>() will look for in I<optionp>. The tokens "
2624 "should be distinct, null-terminated strings containing at least one "
2625 "character, with no embedded equal signs or commas."
2629 #: build/C/man3/getsubopt.3:98
2631 "Each call to B<getsubopt>() returns information about the next unprocessed "
2632 "suboption in I<optionp>. The first equal sign in a suboption (if any) is "
2633 "interpreted as a separator between the name and the value of that "
2634 "suboption. The value extends to the next comma, or (for the last suboption) "
2635 "to the end of the string. If the name of the suboption matches a known name "
2636 "from I<tokens>, and a value string was found, B<getsubopt>() sets "
2637 "I<*valuep> to the address of that string. The first comma in I<optionp> is "
2638 "overwritten with a null byte, so I<*valuep> is precisely the \"value "
2639 "string\" for that suboption."
2643 #: build/C/man3/getsubopt.3:102
2645 "If the suboption is recognized, but no value string was found, I<*valuep> is "
2650 #: build/C/man3/getsubopt.3:110
2652 "When B<getsubopt>() returns, I<optionp> points to the next suboption, or to "
2653 "the null byte (\\(aq\\e0\\(aq) at the end of the string if the last "
2654 "suboption was just processed."
2658 #: build/C/man3/getsubopt.3:122
2660 "If the first suboption in I<optionp> is recognized, B<getsubopt>() returns "
2661 "the index of the matching suboption element in I<tokens>. Otherwise, -1 is "
2662 "returned and I<*valuep> is the entire I<name>B<[=>I<value>B<]> string."
2666 #: build/C/man3/getsubopt.3:129
2668 "Since I<*optionp> is changed, the first suboption before the call to "
2669 "B<getsubopt>() is not (necessarily) the same as the first suboption after "
2674 #: build/C/man3/getsubopt.3:134
2675 msgid "The B<getsubopt>() function is thread-safe."
2679 #: build/C/man3/getsubopt.3:143
2681 "Since B<getsubopt>() overwrites any commas it finds in the string "
2682 "I<*optionp>, that string must be writable; it cannot be a string constant."
2686 #: build/C/man3/getsubopt.3:145
2687 msgid "The following program expects suboptions following a \"-o\" option."
2691 #: build/C/man3/getsubopt.3:151
2694 "#define _XOPEN_SOURCE 500\n"
2695 "#include E<lt>stdlib.hE<gt>\n"
2696 "#include E<lt>assert.hE<gt>\n"
2697 "#include E<lt>stdio.hE<gt>\n"
2701 #: build/C/man3/getsubopt.3:169
2705 "main(int argc, char **argv)\n"
2712 " char *const token[] = {\n"
2713 " [RO_OPT] = \"ro\",\n"
2714 " [RW_OPT] = \"rw\",\n"
2715 " [NAME_OPT] = \"name\",\n"
2724 #: build/C/man3/getsubopt.3:174
2727 " int readonly = 0;\n"
2728 " int readwrite = 0;\n"
2729 " char *name = NULL;\n"
2730 " int errfnd = 0;\n"
2734 #: build/C/man3/getsubopt.3:180
2737 " while ((opt = getopt(argc, argv, \"o:\")) != -1) {\n"
2739 " case \\(aqo\\(aq:\n"
2740 " subopts = optarg;\n"
2741 " while (*subopts != \\(aq\\e0\\(aq && !errfnd) {\n"
2745 #: build/C/man3/getsubopt.3:185
2748 " switch (getsubopt(&subopts, token, &value)) {\n"
2755 #: build/C/man3/getsubopt.3:189
2764 #: build/C/man3/getsubopt.3:197
2768 " if (value == NULL) {\n"
2769 " fprintf(stderr, \"Missing value for \"\n"
2770 " \"suboption \\(aq%s\\(aq\\en\", "
2771 "token[NAME_OPT]);\n"
2778 #: build/C/man3/getsubopt.3:200
2786 #: build/C/man3/getsubopt.3:214
2790 " fprintf(stderr, \"No match found \"\n"
2791 " \"for token: /%s/\\en\", value);\n"
2796 " if (readwrite && readonly) {\n"
2797 " fprintf(stderr, \"Only one of \\(aq%s\\(aq and \\(aq%s\\(aq can "
2799 " \"specified\\en\", token[RO_OPT], token[RW_OPT]);\n"
2806 #: build/C/man3/getsubopt.3:219
2816 #: build/C/man3/getsubopt.3:226
2819 " if (errfnd || argc == 1) {\n"
2820 " fprintf(stderr, \"\\enUsage: %s -o E<lt>suboptstringE<gt>\\en\", "
2822 " fprintf(stderr, \"suboptions are \\(aqro\\(aq, \\(aqrw\\(aq, \"\n"
2823 " \"and \\(aqname=E<lt>valueE<gt>\\(aq\\en\");\n"
2824 " exit(EXIT_FAILURE);\n"
2829 #: build/C/man3/getsubopt.3:228
2831 msgid " /* Remainder of program... */\n"
2835 #: build/C/man3/getsubopt.3:233
2836 msgid "B<getopt>(3)"
2840 #: build/C/man3/malloc.3:33
2846 #: build/C/man3/malloc.3:33
2852 #: build/C/man3/malloc.3:36
2853 msgid "malloc, free, calloc, realloc - allocate and free dynamic memory"
2857 #: build/C/man3/malloc.3:44
2860 "B<void *malloc(size_t >I<size>B<);>\n"
2861 "B<void free(void >I<*ptr>B<);>\n"
2862 "B<void *calloc(size_t >I<nmemb>B<, size_t >I<size>B<);>\n"
2863 "B<void *realloc(void >I<*ptr>B<, size_t >I<size>B<);>\n"
2868 #: build/C/man3/malloc.3:61
2870 "The B<malloc>() function allocates I<size> bytes and returns a pointer to "
2871 "the allocated memory. I<The memory is not initialized>. If I<size> is 0, "
2872 "then B<malloc>() returns either NULL, or a unique pointer value that can "
2873 "later be successfully passed to B<free>()."
2877 #: build/C/man3/malloc.3:77
2879 "The B<free>() function frees the memory space pointed to by I<ptr>, which "
2880 "must have been returned by a previous call to B<malloc>(), B<calloc>(), or "
2881 "B<realloc>(). Otherwise, or if I<free(ptr)> has already been called before, "
2882 "undefined behavior occurs. If I<ptr> is NULL, no operation is performed."
2887 #: build/C/man3/malloc.3:96
2889 "The B<calloc>() function allocates memory for an array of I<nmemb> elements "
2890 "of I<size> bytes each and returns a pointer to the allocated memory. The "
2891 "memory is set to zero. If I<nmemb> or I<size> is 0, then B<calloc>() "
2892 "returns either NULL, or a unique pointer value that can later be "
2893 "successfully passed to B<free>()."
2897 #: build/C/man3/malloc.3:132
2899 "The B<realloc>() function changes the size of the memory block pointed to "
2900 "by I<ptr> to I<size> bytes. The contents will be unchanged in the range "
2901 "from the start of the region up to the minimum of the old and new sizes. If "
2902 "the new size is larger than the old size, the added memory will I<not> be "
2903 "initialized. If I<ptr> is NULL, then the call is equivalent to "
2904 "I<malloc(size)>, for all values of I<size>; if I<size> is equal to zero, and "
2905 "I<ptr> is not NULL, then the call is equivalent to I<free(ptr)>. Unless "
2906 "I<ptr> is NULL, it must have been returned by an earlier call to "
2907 "B<malloc>(), B<calloc>() or B<realloc>(). If the area pointed to was "
2908 "moved, a I<free(ptr)> is done."
2912 #: build/C/man3/malloc.3:152
2914 "The B<malloc>() and B<calloc>() functions return a pointer to the "
2915 "allocated memory, which is suitably aligned for any built-in type. On "
2916 "error, these functions return NULL. NULL may also be returned by a "
2917 "successful call to B<malloc>() with a I<size> of zero, or by a successful "
2918 "call to B<calloc>() with I<nmemb> or I<size> equal to zero."
2922 #: build/C/man3/malloc.3:156
2923 msgid "The B<free>() function returns no value."
2927 #: build/C/man3/malloc.3:171
2929 "The B<realloc>() function returns a pointer to the newly allocated memory, "
2930 "which is suitably aligned for any built-in type and may be different from "
2931 "I<ptr>, or NULL if the request fails. If I<size> was equal to 0, either "
2932 "NULL or a pointer suitable to be passed to B<free>() is returned. If "
2933 "B<realloc>() fails, the original block is left untouched; it is not freed "
2938 #: build/C/man3/malloc.3:173
2943 #: build/C/man3/malloc.3:189
2945 "By default, Linux follows an optimistic memory allocation strategy. This "
2946 "means that when B<malloc>() returns non-NULL there is no guarantee that the "
2947 "memory really is available. In case it turns out that the system is out of "
2948 "memory, one or more processes will be killed by the OOM killer. For more "
2949 "information, see the description of I</proc/sys/vm/overcommit_memory> and "
2950 "I</proc/sys/vm/oom_adj> in B<proc>(5), and the Linux kernel source file "
2951 "I<Documentation/vm/overcommit-accounting>."
2955 #: build/C/man3/malloc.3:210
2957 "Normally, B<malloc>() allocates memory from the heap, and adjusts the size "
2958 "of the heap as required, using B<sbrk>(2). When allocating blocks of memory "
2959 "larger than B<MMAP_THRESHOLD> bytes, the glibc B<malloc>() implementation "
2960 "allocates the memory as a private anonymous mapping using B<mmap>(2). "
2961 "B<MMAP_THRESHOLD> is 128 kB by default, but is adjustable using "
2962 "B<mallopt>(3). Allocations performed using B<mmap>(2) are unaffected by "
2963 "the B<RLIMIT_DATA> resource limit (see B<getrlimit>(2))."
2967 #: build/C/man3/malloc.3:228
2969 "To avoid corruption in multithreaded applications, mutexes are used "
2970 "internally to protect the memory-management data structures employed by "
2971 "these functions. In a multithreaded application in which threads "
2972 "simultaneously allocate and free memory, there could be contention for these "
2973 "mutexes. To scalably handle memory allocation in multithreaded "
2974 "applications, glibc creates additional I<memory allocation arenas> if mutex "
2975 "contention is detected. Each arena is a large region of memory that is "
2976 "internally allocated by the system (using B<brk>(2) or B<mmap>(2)), and "
2977 "managed with its own mutexes."
2981 #: build/C/man3/malloc.3:246
2983 "The UNIX 98 standard requires B<malloc>(), B<calloc>(), and B<realloc>() to "
2984 "set I<errno> to B<ENOMEM> upon failure. Glibc assumes that this is done "
2985 "(and the glibc versions of these routines do this); if you use a private "
2986 "malloc implementation that does not set I<errno>, then certain library "
2987 "routines may fail without having a reason in I<errno>."
2991 #: build/C/man3/malloc.3:255
2993 "Crashes in B<malloc>(), B<calloc>(), B<realloc>(), or B<free>() are almost "
2994 "always related to heap corruption, such as overflowing an allocated chunk or "
2995 "freeing the same pointer twice."
2999 #: build/C/man3/malloc.3:261
3001 "The B<malloc>() implementation is tunable via environment variables; see "
3002 "B<mallopt>(3) for details."
3006 #: build/C/man3/malloc.3:284
3008 "B<brk>(2), B<mmap>(2), B<alloca>(3), B<malloc_get_state>(3), "
3009 "B<malloc_info>(3), B<malloc_trim>(3), B<malloc_usable_size>(3), "
3010 "B<mallopt>(3), B<mcheck>(3), B<mtrace>(3), B<posix_memalign>(3)"
3014 #: build/C/man3/mblen.3:16
3020 #: build/C/man3/mblen.3:16
3026 #: build/C/man3/mblen.3:19
3027 msgid "mblen - determine number of bytes in next multibyte character"
3031 #: build/C/man3/mblen.3:24
3033 msgid "B<int mblen(const char *>I<s>B<, size_t >I<n>B<);>\n"
3037 #: build/C/man3/mblen.3:43
3039 "If I<s> is not NULL, the B<mblen>() function inspects at most I<n> bytes of "
3040 "the multibyte string starting at I<s> and extracts the next complete "
3041 "multibyte character. It uses a static anonymous shift state known only to "
3042 "the B<mblen>() function. If the multibyte character is not the null wide "
3043 "character, it returns the number of bytes that were consumed from I<s>. If "
3044 "the multibyte character is the null wide character, it returns 0."
3048 #: build/C/man3/mblen.3:57
3050 "If the I<n> bytes starting at I<s> do not contain a complete multibyte "
3051 "character, B<mblen>() returns -1. This can happen even if I<n> is greater "
3052 "than or equal to I<MB_CUR_MAX>, if the multibyte string contains redundant "
3057 #: build/C/man3/mblen.3:64
3059 "If the multibyte string starting at I<s> contains an invalid multibyte "
3060 "sequence before the next complete character, B<mblen>() also returns -1."
3063 #. The Dinkumware doc and the Single UNIX specification say this, but
3064 #. glibc doesn't implement this.
3066 #: build/C/man3/mblen.3:75
3068 "If I<s> is NULL, the B<mblen>() function resets the shift state, known to "
3069 "only this function, to the initial state, and returns nonzero if the "
3070 "encoding has nontrivial shift state, or zero if the encoding is stateless."
3074 #: build/C/man3/mblen.3:87
3076 "The B<mblen>() function returns the number of bytes parsed from the "
3077 "multibyte sequence starting at I<s>, if a non-null wide character was "
3078 "recognized. It returns 0, if a null wide character was recognized. It "
3079 "returns -1, if an invalid multibyte sequence was encountered or if it "
3080 "couldn't parse a complete multibyte character."
3084 #: build/C/man3/mblen.3:92
3085 msgid "The B<mblen>() function is not thread-safe."
3089 #: build/C/man3/mblen.3:94 build/C/man3/mbstowcs.3:96 build/C/man3/mbtowc.3:115 build/C/man3/wcstombs.3:91 build/C/man3/wctomb.3:91
3094 #: build/C/man3/mblen.3:101
3096 "The behavior of B<mblen>() depends on the B<LC_CTYPE> category of the "
3101 #: build/C/man3/mblen.3:106
3103 "The function B<mbrlen>(3) provides a better interface to the same "
3108 #: build/C/man3/mblen.3:107
3109 msgid "B<mbrlen>(3)"
3113 #: build/C/man3/mbstowcs.3:18
3119 #: build/C/man3/mbstowcs.3:18 build/C/man3/mbtowc.3:16 build/C/man3/strtol.3:31 build/C/man3/strtoul.3:33 build/C/man3/wcstombs.3:16 build/C/man3/wctomb.3:16
3125 #: build/C/man3/mbstowcs.3:21
3126 msgid "mbstowcs - convert a multibyte string to a wide-character string"
3130 #: build/C/man3/mbstowcs.3:26
3133 "B<size_t mbstowcs(wchar_t *>I<dest>B<, const char *>I<src>B<, size_t "
3138 #: build/C/man3/mbstowcs.3:45
3140 "If I<dest> is not NULL, the B<mbstowcs>() function converts the multibyte "
3141 "string I<src> to a wide-character string starting at I<dest>. At most I<n> "
3142 "wide characters are written to I<dest>. The conversion starts in the "
3143 "initial state. The conversion can stop for three reasons:"
3147 #: build/C/man3/mbstowcs.3:45
3153 #: build/C/man3/mbstowcs.3:50
3155 "An invalid multibyte sequence has been encountered. In this case, "
3156 "I<(size_t)\\ -1> is returned."
3160 #: build/C/man3/mbstowcs.3:50
3166 #: build/C/man3/mbstowcs.3:58
3168 "I<n> non-L\\(aq\\e0\\(aq wide characters have been stored at I<dest>. In "
3169 "this case, the number of wide characters written to I<dest> is returned, but "
3170 "the shift state at this point is lost."
3174 #: build/C/man3/mbstowcs.3:58
3180 #: build/C/man3/mbstowcs.3:64
3182 "The multibyte string has been completely converted, including the "
3183 "terminating null wide character (\\(aq\\e0\\(aq). In this case, the number "
3184 "of wide characters written to I<dest>, excluding the terminating null wide "
3185 "character, is returned."
3189 #: build/C/man3/mbstowcs.3:70
3191 "The programmer must ensure that there is room for at least I<n> wide "
3192 "characters at I<dest>."
3196 #: build/C/man3/mbstowcs.3:78
3198 "If I<dest> is NULL, I<n> is ignored, and the conversion proceeds as above, "
3199 "except that the converted wide characters are not written out to memory, and "
3200 "that no length limit exists."
3204 #: build/C/man3/mbstowcs.3:84
3206 "In order to avoid the case 2 above, the programmer should make sure I<n> is "
3207 "greater than or equal to I<mbstowcs(NULL,src,0)+1>."
3211 #: build/C/man3/mbstowcs.3:94
3213 "The B<mbstowcs>() function returns the number of wide characters that make "
3214 "up the converted part of the wide-character string, not including the "
3215 "terminating null wide character. If an invalid multibyte sequence was "
3216 "encountered, I<(size_t)\\ -1> is returned."
3220 #: build/C/man3/mbstowcs.3:103
3222 "The behavior of B<mbstowcs>() depends on the B<LC_CTYPE> category of the "
3227 #: build/C/man3/mbstowcs.3:108
3229 "The function B<mbsrtowcs>(3) provides a better interface to the same "
3234 #: build/C/man3/mbstowcs.3:113
3236 "The program below illustrates the use of B<mbstowcs>(), as well as some of "
3237 "the wide character classification functions. An example run is the "
3242 #: build/C/man3/mbstowcs.3:120
3245 "$ ./t_mbstowcs de_DE.UTF-8 Grüße!\n"
3246 "Length of source string (excluding terminator):\n"
3248 " 6 multibyte characters\n"
3252 #: build/C/man3/mbstowcs.3:128
3255 "Wide character string is: Grüße! (6 characters)\n"
3265 #: build/C/man3/mbstowcs.3:130 build/C/man3/strtol.3:248
3267 msgid "Program source"
3271 #: build/C/man3/mbstowcs.3:137
3274 "#include E<lt>locale.hE<gt>\n"
3275 "#include E<lt>wchar.hE<gt>\n"
3276 "#include E<lt>stdio.hE<gt>\n"
3277 "#include E<lt>string.hE<gt>\n"
3278 "#include E<lt>stdlib.hE<gt>\n"
3282 #: build/C/man3/mbstowcs.3:144
3286 "main(int argc, char *argv[])\n"
3288 " size_t mbslen; /* Number of multibyte characters in source */\n"
3289 " wchar_t *wcs; /* Pointer to converted wide character string */\n"
3294 #: build/C/man3/mbstowcs.3:149
3297 " if (argc E<lt> 3) {\n"
3298 " fprintf(stderr, \"Usage: %s E<lt>localeE<gt> E<lt>stringE<gt>\\en\", "
3300 " exit(EXIT_FAILURE);\n"
3305 #: build/C/man3/mbstowcs.3:151
3307 msgid " /* Apply the specified locale */\n"
3311 #: build/C/man3/mbstowcs.3:156
3314 " if (setlocale(LC_ALL, argv[1]) == NULL) {\n"
3315 " perror(\"setlocale\");\n"
3316 " exit(EXIT_FAILURE);\n"
3321 #: build/C/man3/mbstowcs.3:159
3324 " /* Calculate the length required to hold argv[2] converted to\n"
3325 " a wide character string */\n"
3329 #: build/C/man3/mbstowcs.3:165
3332 " mbslen = mbstowcs(NULL, argv[2], 0);\n"
3333 " if (mbslen == (size_t) -1) {\n"
3334 " perror(\"mbstowcs\");\n"
3335 " exit(EXIT_FAILURE);\n"
3340 #: build/C/man3/mbstowcs.3:167
3342 msgid " /* Describe the source string to the user */\n"
3346 #: build/C/man3/mbstowcs.3:171
3349 " printf(\"Length of source string (excluding terminator):\\en\");\n"
3350 " printf(\" %zu bytes\\en\", strlen(argv[2]));\n"
3351 " printf(\" %zu multibyte characters\\en\\en\", mbslen);\n"
3355 #: build/C/man3/mbstowcs.3:174
3358 " /* Allocate wide character string of the desired size. Add 1\n"
3359 " to allow for terminating null wide character (L\\(aq\\e0\\(aq). */\n"
3363 #: build/C/man3/mbstowcs.3:180
3366 " wcs = calloc(mbslen + 1, sizeof(wchar_t));\n"
3367 " if (wcs == NULL) {\n"
3368 " perror(\"calloc\");\n"
3369 " exit(EXIT_FAILURE);\n"
3374 #: build/C/man3/mbstowcs.3:183
3377 " /* Convert the multibyte character string in argv[2] to a\n"
3378 " wide character string */\n"
3382 #: build/C/man3/mbstowcs.3:188
3385 " if (mbstowcs(wcs, argv[2], mbslen + 1) == (size_t) -1) {\n"
3386 " perror(\"mbstowcs\");\n"
3387 " exit(EXIT_FAILURE);\n"
3392 #: build/C/man3/mbstowcs.3:191
3395 " printf(\"Wide character string is: %ls (%zu characters)\\en\",\n"
3400 #: build/C/man3/mbstowcs.3:194
3403 " /* Now do some inspection of the classes of the characters in\n"
3404 " the wide character string */\n"
3408 #: build/C/man3/mbstowcs.3:197
3411 " for (wp = wcs; *wp != 0; wp++) {\n"
3412 " printf(\" %lc \", (wint_t) *wp);\n"
3416 #: build/C/man3/mbstowcs.3:201
3419 " if (!iswalpha(*wp))\n"
3421 " printf(\"alpha \");\n"
3425 #: build/C/man3/mbstowcs.3:205
3428 " if (iswalpha(*wp)) {\n"
3429 " if (iswupper(*wp))\n"
3430 " printf(\"upper \");\n"
3434 #: build/C/man3/mbstowcs.3:209
3437 " if (iswlower(*wp))\n"
3438 " printf(\"lower \");\n"
3443 #: build/C/man3/mbstowcs.3:212
3446 " putchar(\\(aq\\en\\(aq);\n"
3451 #: build/C/man3/mbstowcs.3:221
3452 msgid "B<mblen>(3), B<mbsrtowcs>(3), B<mbtowc>(3), B<wctomb>(3), B<wcstombs>(3)"
3456 #: build/C/man3/mbtowc.3:16
3462 #: build/C/man3/mbtowc.3:19
3463 msgid "mbtowc - convert a multibyte sequence to a wide character"
3467 #: build/C/man3/mbtowc.3:24
3469 msgid "B<int mbtowc(wchar_t *>I<pwc>B<, const char *>I<s>B<, size_t >I<n>B<);>\n"
3473 #: build/C/man3/mbtowc.3:50
3475 "The main case for this function is when I<s> is not NULL and I<pwc> is not "
3476 "NULL. In this case, the B<mbtowc>() function inspects at most I<n> bytes "
3477 "of the multibyte string starting at I<s>, extracts the next complete "
3478 "multibyte character, converts it to a wide character and stores it at "
3479 "I<*pwc>. It updates an internal shift state known only to the B<mbtowc>() "
3480 "function. If I<s> does not point to a null byte (\\(aq\\e0\\(aq), it "
3481 "returns the number of bytes that were consumed from I<s>, otherwise it "
3486 #: build/C/man3/mbtowc.3:64
3488 "If the I<n> bytes starting at I<s> do not contain a complete multibyte "
3489 "character, or if they contain an invalid multibyte sequence, B<mbtowc>() "
3490 "returns -1. This can happen even if I<n> E<gt>= I<MB_CUR_MAX>, if the "
3491 "multibyte string contains redundant shift sequences."
3495 #: build/C/man3/mbtowc.3:74
3497 "A different case is when I<s> is not NULL but I<pwc> is NULL. In this case, "
3498 "the B<mbtowc>() function behaves as above, except that it does not store "
3499 "the converted wide character in memory."
3502 #. The Dinkumware doc and the Single UNIX specification say this, but
3503 #. glibc doesn't implement this.
3505 #: build/C/man3/mbtowc.3:93
3507 "A third case is when I<s> is NULL. In this case, I<pwc> and I<n> are "
3508 "ignored. The B<mbtowc>() function resets the shift state, only known to "
3509 "this function, to the initial state, and returns nonzero if the encoding has "
3510 "nontrivial shift state, or zero if the encoding is stateless."
3514 #: build/C/man3/mbtowc.3:105
3516 "If I<s> is not NULL, the B<mbtowc>() function returns the number of "
3517 "consumed bytes starting at I<s>, or 0 if I<s> points to a null byte, or -1 "
3522 #: build/C/man3/mbtowc.3:113
3524 "If I<s> is NULL, the B<mbtowc>() function returns nonzero if the encoding "
3525 "has nontrivial shift state, or zero if the encoding is stateless."
3529 #: build/C/man3/mbtowc.3:122
3531 "The behavior of B<mbtowc>() depends on the B<LC_CTYPE> category of the "
3536 #: build/C/man3/mbtowc.3:128
3538 "This function is not multithread safe. The function B<mbrtowc>(3) provides "
3539 "a better interface to the same functionality."
3543 #: build/C/man3/mbtowc.3:134
3545 "B<MB_CUR_MAX>(3), B<mblen>(3), B<mbrtowc>(3), B<mbstowcs>(3), B<wctomb>(3), "
3550 #: build/C/man3/mkdtemp.3:26
3556 #: build/C/man3/mkdtemp.3:26 build/C/man3/system.3:31
3562 #: build/C/man3/mkdtemp.3:29
3563 msgid "mkdtemp - create a unique temporary directory"
3567 #: build/C/man3/mkdtemp.3:34
3569 msgid "B<char *mkdtemp(char *>I<template>B<);>\n"
3573 #: build/C/man3/mkdtemp.3:42
3574 msgid "B<mkdtemp>():"
3578 #: build/C/man3/mkdtemp.3:47
3583 #: build/C/man3/mkdtemp.3:49
3584 msgid "|| /* Since glibc 2.10: */"
3588 #: build/C/man3/mkdtemp.3:51
3589 msgid "(_POSIX_C_SOURCE\\ E<gt>=\\ 200809L || _XOPEN_SOURCE\\ E<gt>=\\ 700)"
3593 #: build/C/man3/mkdtemp.3:68
3595 "The B<mkdtemp>() function generates a uniquely named temporary directory "
3596 "from I<template>. The last six characters of I<template> must be XXXXXX and "
3597 "these are replaced with a string that makes the directory name unique. The "
3598 "directory is then created with permissions 0700. Since it will be modified, "
3599 "I<template> must not be a string constant, but should be declared as a "
3604 #: build/C/man3/mkdtemp.3:75
3606 "The B<mkdtemp>() function returns a pointer to the modified template string "
3607 "on success, and NULL on failure, in which case I<errno> is set "
3612 #: build/C/man3/mkdtemp.3:76 build/C/man3/mkstemp.3:166 build/C/man3/mktemp.3:92 build/C/man3/random.3:141 build/C/man3/random.3:148 build/C/man3/random_r.3:106 build/C/man3/random_r.3:110 build/C/man3/random_r.3:119 build/C/man3/setenv.3:120 build/C/man3/strtol.3:145 build/C/man3/strtoul.3:149
3618 #: build/C/man3/mkdtemp.3:80
3620 "The last six characters of I<template> were not XXXXXX. Now I<template> is "
3625 #: build/C/man3/mkdtemp.3:84
3626 msgid "Also see B<mkdir>(2) for other possible values for I<errno>."
3630 #: build/C/man3/mkdtemp.3:86
3631 msgid "Available since glibc 2.1.91."
3635 #: build/C/man3/mkdtemp.3:91
3636 msgid "The B<mkdtemp>() function is thread-safe."
3639 #. As at 2006, this function is being considered for a revision of POSIX.1
3640 #. Also in NetBSD 1.4.
3642 #: build/C/man3/mkdtemp.3:96
3643 msgid "POSIX.1-2008. This function is present on the BSDs."
3647 #: build/C/man3/mkdtemp.3:102
3649 "B<mkdir>(2), B<mkstemp>(3), B<mktemp>(3), B<tempnam>(3), B<tmpfile>(3), "
3654 #: build/C/man3/mkstemp.3:35
3660 #: build/C/man3/mkstemp.3:38
3661 msgid "mkstemp, mkostemp, mkstemps, mkostemps - create a unique temporary file"
3665 #: build/C/man3/mkstemp.3:43
3667 msgid "B<int mkstemp(char *>I<template>B<);>\n"
3671 #: build/C/man3/mkstemp.3:45
3673 msgid "B<int mkostemp(char *>I<template>B<, int >I<flags>B<);>\n"
3677 #: build/C/man3/mkstemp.3:47
3679 msgid "B<int mkstemps(char *>I<template>B<, int >I<suffixlen>B<);>\n"
3683 #: build/C/man3/mkstemp.3:49
3686 "B<int mkostemps(char *>I<template>B<, int >I<suffixlen>B<, int "
3691 #: build/C/man3/mkstemp.3:57
3692 msgid "B<mkstemp>():"
3696 #: build/C/man3/mkstemp.3:62 build/C/man3/mktemp.3:63
3698 "_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
3699 "_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
3703 #: build/C/man3/mkstemp.3:64
3704 msgid "|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200112L"
3708 #: build/C/man3/mkstemp.3:70
3709 msgid "B<mkostemp>(): _GNU_SOURCE"
3713 #: build/C/man3/mkstemp.3:73
3714 msgid "B<mkstemps>(): _BSD_SOURCE || _SVID_SOURCE"
3718 #: build/C/man3/mkstemp.3:76
3719 msgid "B<mkostemps>(): _GNU_SOURCE"
3723 #: build/C/man3/mkstemp.3:83
3725 "The B<mkstemp>() function generates a unique temporary filename from "
3726 "I<template>, creates and opens the file, and returns an open file descriptor "
3731 #: build/C/man3/mkstemp.3:91
3733 "The last six characters of I<template> must be \"XXXXXX\" and these are "
3734 "replaced with a string that makes the filename unique. Since it will be "
3735 "modified, I<template> must not be a string constant, but should be declared "
3736 "as a character array."
3740 #: build/C/man3/mkstemp.3:99
3742 "The file is created with permissions 0600, that is, read plus write for "
3743 "owner only. The returned file descriptor provides both read and write "
3744 "access to the file. The file is opened with the B<open>(2) B<O_EXCL> flag, "
3745 "guaranteeing that the caller is the process that creates the file."
3748 #. Reportedly, FreeBSD
3750 #: build/C/man3/mkstemp.3:130
3752 "The B<mkostemp>() function is like B<mkstemp>(), with the difference that "
3753 "the following bits\\(emwith the same meaning as for B<open>(2)\\(emmay be "
3754 "specified in I<flags>: B<O_APPEND>, B<O_CLOEXEC>, and B<O_SYNC>. Note that "
3755 "when creating the file, B<mkostemp>() includes the values B<O_RDWR>, "
3756 "B<O_CREAT>, and B<O_EXCL> in the I<flags> argument given to B<open>(2); "
3757 "including these values in the I<flags> argument given to B<mkostemp>() is "
3758 "unnecessary, and produces errors on some systems."
3762 #: build/C/man3/mkstemp.3:146
3764 "The B<mkstemps>() function is like B<mkstemp>(), except that the string in "
3765 "I<template> contains a suffix of I<suffixlen> characters. Thus, I<template> "
3766 "is of the form I<prefixXXXXXXsuffix>, and the string XXXXXX is modified as "
3771 #: build/C/man3/mkstemp.3:155
3773 "The B<mkostemps>() function is to B<mkstemps>() as B<mkostemp>() is to "
3778 #: build/C/man3/mkstemp.3:161
3780 "On success, these functions return the file descriptor of the temporary "
3781 "file. On error, -1 is returned, and I<errno> is set appropriately."
3785 #: build/C/man3/mkstemp.3:162
3791 #: build/C/man3/mkstemp.3:166
3793 "Could not create a unique temporary filename. Now the contents of "
3794 "I<template> are undefined."
3798 #: build/C/man3/mkstemp.3:174
3800 "For B<mkstemp>() and B<mkostemp>(): The last six characters of I<template> "
3801 "were not XXXXXX; now I<template> is unchanged."
3805 #: build/C/man3/mkstemp.3:185
3807 "For B<mkstemps>() and B<mkostemps>(): I<template> is less than I<(6 + "
3808 "suffixlen)> characters long, or the last 6 characters before the suffix in "
3809 "I<template> were not XXXXXX."
3813 #: build/C/man3/mkstemp.3:188
3815 "These functions may also fail with any of the errors described for "
3820 #: build/C/man3/mkstemp.3:195
3822 "B<mkostemp>() is available since glibc 2.7. B<mkstemps>() and "
3823 "B<mkostemps>() are available since glibc 2.11."
3827 #: build/C/man3/mkstemp.3:204
3829 "The B<mkstemp>(), B<mkostemp>(), B<mkstemps>(), and B<mkostemps>() "
3830 "functions are thread-safe."
3834 #: build/C/man3/mkstemp.3:207
3835 msgid "B<mkstemp>(): 4.3BSD, POSIX.1-2001."
3838 #. mkstemps() appears to be at least on the BSDs, Mac OS X, Solaris,
3841 #: build/C/man3/mkstemp.3:212
3842 msgid "B<mkstemps>(): unstandardized, but appears on several other systems."
3846 #: build/C/man3/mkstemp.3:217
3847 msgid "B<mkostemp>() and B<mkostemps>(): are glibc extensions."
3851 #: build/C/man3/mkstemp.3:224
3853 "In glibc versions 2.06 and earlier, the file is created with permissions "
3854 "0666, that is, read and write for all users. This old behavior may be a "
3855 "security risk, especially since other UNIX flavors use 0600, and somebody "
3856 "might overlook this detail when porting programs. POSIX.1-2008 adds a "
3857 "requirement that the file be created with mode 0600."
3861 #. The prototype for
3865 #. for libc4, libc5, glibc1; glibc2 follows POSIX.1 and has the prototype in
3868 #: build/C/man3/mkstemp.3:242
3870 "More generally, the POSIX specification of B<mkstemp>() does not say "
3871 "anything about file modes, so the application should make sure its file mode "
3872 "creation mask (see B<umask>(2)) is set appropriately before calling "
3873 "B<mkstemp>() (and B<mkostemp>())."
3877 #: build/C/man3/mkstemp.3:247
3878 msgid "B<mkdtemp>(3), B<mktemp>(3), B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3)"
3882 #: build/C/man3/mktemp.3:34
3888 #: build/C/man3/mktemp.3:37
3889 msgid "mktemp - make a unique temporary filename"
3893 #: build/C/man3/mktemp.3:42
3895 msgid "B<char *mktemp(char *>I<template>B<);>\n"
3899 #: build/C/man3/mktemp.3:50
3900 msgid "B<mktemp>():"
3904 #: build/C/man3/mktemp.3:59
3907 "_BSD_SOURCE || _SVID_SOURCE ||\n"
3908 " (_XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
3909 " _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED) &&\n"
3910 " !(_POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>=\\ 600)\n"
3914 #: build/C/man3/mktemp.3:69
3915 msgid "I<Never use this function>; see NOTES."
3919 #: build/C/man3/mktemp.3:80
3921 "The B<mktemp>() function generates a unique temporary filename from "
3922 "I<template>. The last six characters of I<template> must be XXXXXX and "
3923 "these are replaced with a string that makes the filename unique. Since it "
3924 "will be modified, I<template> must not be a string constant, but should be "
3925 "declared as a character array."
3929 #: build/C/man3/mktemp.3:91
3931 "The B<mktemp>() function always returns I<template>. If a unique name was "
3932 "created, the last six bytes of I<template> will have been modified in such a "
3933 "way that the resulting name is unique (i.e., does not exist already) If a "
3934 "unique name could not be created, I<template> is made an empty string, and "
3935 "I<errno> is set to indicate the error."
3939 #: build/C/man3/mktemp.3:95
3940 msgid "The last six characters of I<template> were not XXXXXX."
3944 #. The prototype is in
3946 #. for libc4, libc5, glibc1; glibc2 follows the Single UNIX Specification
3947 #. and has the prototype in
3950 #: build/C/man3/mktemp.3:105
3952 "4.3BSD, POSIX.1-2001. POSIX.1-2008 removes the specification of "
3957 #: build/C/man3/mktemp.3:118
3959 "Never use B<mktemp>(). Some implementations follow 4.3BSD and replace "
3960 "XXXXXX by the current process ID and a single letter, so that at most 26 "
3961 "different names can be returned. Since on the one hand the names are easy "
3962 "to guess, and on the other hand there is a race between testing whether the "
3963 "name exists and opening the file, every use of B<mktemp>() is a security "
3964 "risk. The race is avoided by B<mkstemp>(3)."
3968 #: build/C/man3/mktemp.3:122
3969 msgid "B<mkstemp>(3), B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3)"
3973 #: build/C/man3/on_exit.3:31
3979 #: build/C/man3/on_exit.3:34
3980 msgid "on_exit - register a function to be called at normal process termination"
3984 #: build/C/man3/on_exit.3:39
3986 msgid "B<int on_exit(void (*>I<function>B<)(int , void *), void *>I<arg>B<);>\n"
3990 #: build/C/man3/on_exit.3:48
3991 msgid "B<on_exit>(): _BSD_SOURCE || _SVID_SOURCE"
3995 #: build/C/man3/on_exit.3:66
3997 "The B<on_exit>() function registers the given I<function> to be called at "
3998 "normal process termination, whether via B<exit>(3) or via return from the "
3999 "program's I<main>(). The I<function> is passed the status argument given to "
4000 "the last call to B<exit>(3) and the I<arg> argument from B<on_exit>()."
4004 #: build/C/man3/on_exit.3:81
4006 "The B<on_exit>() function returns the value 0 if successful; otherwise it "
4007 "returns a nonzero value."
4011 #: build/C/man3/on_exit.3:87
4013 "This function comes from SunOS 4, but is also present in glibc. It no "
4014 "longer occurs in Solaris (SunOS 5). Portable application should avoid this "
4015 "function, and use the standard B<atexit>(3) instead."
4019 #: build/C/man3/on_exit.3:90
4020 msgid "B<_exit>(2), B<atexit>(3), B<exit>(3)"
4024 #: build/C/man3/putenv.3:36
4030 #: build/C/man3/putenv.3:39
4031 msgid "putenv - change or add an environment variable"
4034 #. Not: const char *
4036 #: build/C/man3/putenv.3:45
4038 msgid "B<int putenv(char *>I<string>B<);>\n"
4042 #: build/C/man3/putenv.3:54
4043 msgid "B<putenv>(): _SVID_SOURCE || _XOPEN_SOURCE"
4047 #: build/C/man3/putenv.3:67
4049 "The B<putenv>() function adds or changes the value of environment "
4050 "variables. The argument I<string> is of the form I<name>=I<value>. If "
4051 "I<name> does not already exist in the environment, then I<string> is added "
4052 "to the environment. If I<name> does exist, then the value of I<name> in the "
4053 "environment is changed to I<value>. The string pointed to by I<string> "
4054 "becomes part of the environment, so altering the string changes the "
4059 #: build/C/man3/putenv.3:75
4061 "The B<putenv>() function returns zero on success, or nonzero if an error "
4062 "occurs. In the event of an error, I<errno> is set to indicate the cause."
4066 #: build/C/man3/putenv.3:76 build/C/man3/setenv.3:125
4072 #: build/C/man3/putenv.3:79
4073 msgid "Insufficient space to allocate new environment."
4077 #: build/C/man3/putenv.3:81
4078 msgid "SVr4, POSIX.1-2001, 4.3BSD."
4082 #. Description for libc4, libc5, glibc:
4083 #. If the argument \fIstring\fP is of the form \fIname\fP,
4084 #. and does not contain an \(aq=\(aq character, then the variable \fIname\fP
4085 #. is removed from the environment.
4088 #. has to allocate a new array \fIenviron\fP,
4089 #. and the previous array was also allocated by
4091 #. then it will be freed.
4092 #. In no case will the old storage associated
4093 #. to the environment variable itself be freed.
4095 #: build/C/man3/putenv.3:99
4097 "The B<putenv>() function is not required to be reentrant, and the one in "
4098 "glibc 2.0 is not, but the glibc 2.1 version is."
4102 #: build/C/man3/putenv.3:114
4104 "Since version 2.1.2, the glibc implementation conforms to SUSv2: the pointer "
4105 "I<string> given to B<putenv>() is used. In particular, this string becomes "
4106 "part of the environment; changing it later will change the environment. "
4107 "(Thus, it is an error is to call B<putenv>() with an automatic variable as "
4108 "the argument, then return from the calling function while I<string> is still "
4109 "part of the environment.) However, glibc versions 2.0 to 2.1.1 differ: a "
4110 "copy of the string is used. On the one hand this causes a memory leak, and "
4111 "on the other hand it violates SUSv2."
4115 #: build/C/man3/putenv.3:116
4116 msgid "The 4.4BSD version, like glibc 2.0, uses a copy."
4120 #: build/C/man3/putenv.3:118
4121 msgid "SUSv2 removes the I<const> from the prototype, and so does glibc 2.1.3."
4125 #: build/C/man3/putenv.3:123
4126 msgid "B<clearenv>(3), B<getenv>(3), B<setenv>(3), B<unsetenv>(3), B<environ>(7)"
4130 #: build/C/man3/qecvt.3:28
4136 #: build/C/man3/qecvt.3:31
4137 msgid "qecvt, qfcvt, qgcvt - convert a floating-point number to a string"
4141 #: build/C/man3/qecvt.3:36
4143 "B<char *qecvt(long double >I<number>B<, int >I<ndigits>B<, int "
4144 "*>I<decpt>B<,> B<int *>I<sign>B<);>"
4148 #: build/C/man3/qecvt.3:39
4150 "B<char *qfcvt(long double >I<number>B<, int >I<ndigits>B<, int "
4151 "*>I<decpt>B<,> B<int *>I<sign>B<);>"
4155 #: build/C/man3/qecvt.3:41
4156 msgid "B<char *qgcvt(long double >I<number>B<, int >I<ndigit>B<, char *>I<buf>B<);>"
4160 #: build/C/man3/qecvt.3:52
4161 msgid "B<qecvt>(), B<qfcvt>(), B<qgcvt>(): _SVID_SOURCE"
4165 #: build/C/man3/qecvt.3:85
4167 "The functions B<qecvt>(), B<qfcvt>(), and B<qgcvt>() are identical to "
4168 "B<ecvt>(3), B<fcvt>(3), and B<gcvt>(3) respectively, except that they use a "
4169 "I<long double> argument I<number>. See B<ecvt>(3) and B<gcvt>(3)."
4173 #: build/C/man3/qecvt.3:92
4174 msgid "The B<qecvt>() and B<qfcvt>() functions are not thread-safe."
4178 #: build/C/man3/qecvt.3:96
4179 msgid "The B<qgcvt>() function is thread-safe."
4182 #. Not supported by libc4 and libc5.
4184 #: build/C/man3/qecvt.3:102
4186 "SVr4. Not seen in most common UNIX implementations, but occurs in SunOS. "
4187 "Supported by glibc."
4191 #: build/C/man3/qecvt.3:107
4192 msgid "These functions are obsolete. Instead, B<snprintf>(3) is recommended."
4196 #: build/C/man3/qecvt.3:111
4197 msgid "B<ecvt>(3), B<ecvt_r>(3), B<gcvt>(3), B<sprintf>(3)"
4201 #: build/C/man3/rand.3:41
4207 #: build/C/man3/rand.3:41
4213 #: build/C/man3/rand.3:44
4214 msgid "rand, rand_r, srand - pseudo-random number generator"
4218 #: build/C/man3/rand.3:49
4220 msgid "B<int rand(void);>\n"
4224 #: build/C/man3/rand.3:51
4226 msgid "B<int rand_r(unsigned int *>I<seedp>B<);>\n"
4230 #: build/C/man3/rand.3:53
4232 msgid "B<void srand(unsigned int >I<seed>B<);>\n"
4236 #: build/C/man3/rand.3:62
4237 msgid "B<rand_r>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE"
4241 #: build/C/man3/rand.3:68
4243 "The B<rand>() function returns a pseudo-random integer in the range 0 to "
4244 "B<RAND_MAX> inclusive (i.e., the mathematical range [0,\\ B<RAND_MAX>])."
4248 #: build/C/man3/rand.3:77
4250 "The B<srand>() function sets its argument as the seed for a new sequence of "
4251 "pseudo-random integers to be returned by B<rand>(). These sequences are "
4252 "repeatable by calling B<srand>() with the same seed value."
4256 #: build/C/man3/rand.3:81
4258 "If no seed value is provided, the B<rand>() function is automatically "
4259 "seeded with a value of 1."
4263 #: build/C/man3/rand.3:92
4265 "The function B<rand>() is not reentrant or thread-safe, since it uses "
4266 "hidden state that is modified on each call. This might just be the seed "
4267 "value to be used by the next call, or it might be something more elaborate. "
4268 "In order to get reproducible behavior in a threaded application, this state "
4269 "must be made explicit; this can be done using the reentrant function "
4274 #: build/C/man3/rand.3:108
4276 "Like B<rand>(), B<rand_r>() returns a pseudo-random integer in the range "
4277 "[0,\\ B<RAND_MAX>]. The I<seedp> argument is a pointer to an I<unsigned "
4278 "int> that is used to store state between calls. If B<rand_r>() is called "
4279 "with the same initial value for the integer pointed to by I<seedp>, and that "
4280 "value is not modified between calls, then the same pseudo-random sequence "
4285 #: build/C/man3/rand.3:118
4287 "The value pointed to by the I<seedp> argument of B<rand_r>() provides only "
4288 "a very small amount of state, so this function will be a weak pseudo-random "
4289 "generator. Try B<drand48_r>(3) instead."
4293 #: build/C/man3/rand.3:129
4295 "The B<rand>() and B<rand_r>() functions return a value between 0 and "
4296 "B<RAND_MAX> (inclusive). The B<srand>() function returns no value."
4300 #: build/C/man3/rand.3:141
4302 "The functions B<rand>() and B<srand>() conform to SVr4, 4.3BSD, C89, C99, "
4303 "POSIX.1-2001. The function B<rand_r>() is from POSIX.1-2001. POSIX.1-2008 "
4304 "marks B<rand_r>() as obsolete."
4308 #: build/C/man3/rand.3:160
4310 "The versions of B<rand>() and B<srand>() in the Linux C Library use the "
4311 "same random number generator as B<random>(3) and B<srandom>(3), so the "
4312 "lower-order bits should be as random as the higher-order bits. However, on "
4313 "older B<rand>() implementations, and on current implementations on "
4314 "different systems, the lower-order bits are much less random than the "
4315 "higher-order bits. Do not use this function in applications intended to be "
4316 "portable when good randomness is needed. (Use B<random>(3) instead.)"
4320 #: build/C/man3/rand.3:166
4322 "POSIX.1-2001 gives the following example of an implementation of B<rand>() "
4323 "and B<srand>(), possibly useful when one needs the same sequence on two "
4324 "different machines."
4328 #: build/C/man3/rand.3:170
4330 msgid "static unsigned long next = 1;\n"
4334 #: build/C/man3/rand.3:176
4337 "/* RAND_MAX assumed to be 32767 */\n"
4338 "int myrand(void) {\n"
4339 " next = next * 1103515245 + 12345;\n"
4340 " return((unsigned)(next/65536) % 32768);\n"
4345 #: build/C/man3/rand.3:180
4348 "void mysrand(unsigned int seed) {\n"
4354 #: build/C/man3/rand.3:187
4356 "The following program can be used to display the pseudo-random sequence "
4357 "produced by B<rand>() when given a particular seed."
4361 #: build/C/man3/rand.3:192
4364 "#include E<lt>stdlib.hE<gt>\n"
4365 "#include E<lt>stdio.hE<gt>\n"
4369 #: build/C/man3/rand.3:198
4373 "main(int argc, char *argv[])\n"
4375 " int j, r, nloops;\n"
4376 " unsigned int seed;\n"
4380 #: build/C/man3/rand.3:203
4383 " if (argc != 3) {\n"
4384 " fprintf(stderr, \"Usage: %s E<lt>seedE<gt> E<lt>nloopsE<gt>\\en\", "
4386 " exit(EXIT_FAILURE);\n"
4391 #: build/C/man3/rand.3:206
4394 " seed = atoi(argv[1]);\n"
4395 " nloops = atoi(argv[2]);\n"
4399 #: build/C/man3/rand.3:212
4403 " for (j = 0; j E<lt> nloops; j++) {\n"
4405 " printf(\"%d\\en\", r);\n"
4410 #: build/C/man3/rand.3:219
4411 msgid "B<drand48>(3), B<random>(3)"
4415 #: build/C/man3/random.3:33
4421 #: build/C/man3/random.3:36
4422 msgid "random, srandom, initstate, setstate - random number generator"
4426 #: build/C/man3/random.3:41
4428 msgid "B<long int random(void);>\n"
4432 #: build/C/man3/random.3:43
4434 msgid "B<void srandom(unsigned int >I<seed>B<);>\n"
4438 #: build/C/man3/random.3:45
4441 "B<char *initstate(unsigned int >I<seed>B<, char *>I<state>B<, size_t "
4446 #: build/C/man3/random.3:47
4448 msgid "B<char *setstate(char *>I<state>B<);>\n"
4452 #: build/C/man3/random.3:59
4453 msgid "B<random>(), B<srandom>(), B<initstate>(), B<setstate>():"
4457 #: build/C/man3/random.3:62
4459 "_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
4460 "_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
4464 #: build/C/man3/random.3:73
4466 "The B<random>() function uses a nonlinear additive feedback random number "
4467 "generator employing a default table of size 31 long integers to return "
4468 "successive pseudo-random numbers in the range from 0 to B<RAND_MAX>. The "
4469 "period of this random number generator is very large, approximately I<16\\ "
4470 "*\\ ((2^31)\\ -\\ 1)>."
4474 #: build/C/man3/random.3:87
4476 "The B<srandom>() function sets its argument as the seed for a new sequence "
4477 "of pseudo-random integers to be returned by B<random>(). These sequences "
4478 "are repeatable by calling B<srandom>() with the same seed value. If no "
4479 "seed value is provided, the B<random>() function is automatically seeded "
4480 "with a value of 1."
4484 #: build/C/man3/random.3:102
4486 "The B<initstate>() function allows a state array I<state> to be initialized "
4487 "for use by B<random>(). The size of the state array I<n> is used by "
4488 "B<initstate>() to decide how sophisticated a random number generator it "
4489 "should use\\(emthe larger the state array, the better the random numbers "
4490 "will be. I<seed> is the seed for the initialization, which specifies a "
4491 "starting point for the random number sequence, and provides for restarting "
4492 "at the same point."
4496 #: build/C/man3/random.3:118
4498 "The B<setstate>() function changes the state array used by the B<random>() "
4499 "function. The state array I<state> is used for random number generation "
4500 "until the next call to B<initstate>() or B<setstate>(). I<state> must "
4501 "first have been initialized using B<initstate>() or be the result of a "
4502 "previous call of B<setstate>()."
4506 #: build/C/man3/random.3:126
4508 "The B<random>() function returns a value between 0 and B<RAND_MAX>. The "
4509 "B<srandom>() function returns no value."
4513 #: build/C/man3/random.3:133
4515 "The B<initstate>() function returns a pointer to the previous state array. "
4516 "On error, I<errno> is set to indicate the cause."
4520 #: build/C/man3/random.3:140
4522 "On success, B<setstate>() returns a pointer to the previous state array. "
4523 "On error, it returns NULL, with I<errno> set to indicate the cause of the "
4528 #: build/C/man3/random.3:148
4529 msgid "The I<state> argument given to B<setstate>() was NULL."
4533 #: build/C/man3/random.3:152
4534 msgid "A state array of less than 8 bytes was specified to B<initstate>()."
4538 #: build/C/man3/random.3:161
4540 "The B<random>(), B<srandom>(), B<initstate>(), and B<setstate>() functions "
4545 #: build/C/man3/random.3:163 build/C/man3/setenv.3:130
4546 msgid "4.3BSD, POSIX.1-2001."
4550 #: build/C/man3/random.3:169
4552 "Current \"optimal\" values for the size of the state array I<n> are 8, 32, "
4553 "64, 128, and 256 bytes; other amounts will be rounded down to the nearest "
4554 "known amount. Using less than 8 bytes will cause an error."
4558 #: build/C/man3/random.3:176
4560 "This function should not be used in cases where multiple threads use "
4561 "B<random>() and the behavior should be reproducible. Use B<random_r>(3) "
4566 #: build/C/man3/random.3:183
4568 "Random-number generation is a complex topic. I<Numerical Recipes in C: The "
4569 "Art of Scientific Computing> (William H. Press, Brian P. Flannery, Saul "
4570 "A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, "
4571 "2007, 3rd ed.) provides an excellent discussion of practical random-number "
4572 "generation issues in Chapter 7 (Random Numbers)."
4576 #: build/C/man3/random.3:189
4578 "For a more theoretical discussion which also covers many practical issues in "
4579 "depth, see Chapter 3 (Random Numbers) in Donald E. Knuth's I<The Art of "
4580 "Computer Programming>, volume 2 (Seminumerical Algorithms), 2nd ed.; "
4581 "Reading, Massachusetts: Addison-Wesley Publishing Company, 1981."
4584 #. http://sourceware.org/bugzilla/show_bug.cgi?id=15380
4586 #: build/C/man3/random.3:197
4588 "According to POSIX, B<initstate>() should return NULL on error. In the "
4589 "glibc implementation, I<errno> is (as specified) set on error, but the "
4590 "function does not return NULL."
4594 #: build/C/man3/random.3:201
4595 msgid "B<drand48>(3), B<rand>(3), B<random_r>(3), B<srand>(3)"
4599 #: build/C/man3/random_r.3:26
4605 #: build/C/man3/random_r.3:30
4607 "random_r, srandom_r, initstate_r, setstate_r - reentrant random number "
4612 #: build/C/man3/random_r.3:35
4614 msgid "B<int random_r(struct random_data *>I<buf>B<, int32_t *>I<result>B<);>\n"
4618 #: build/C/man3/random_r.3:37
4620 msgid "B<int srandom_r(unsigned int >I<seed>B<, struct random_data *>I<buf>B<);>\n"
4624 #: build/C/man3/random_r.3:40
4627 "B<int initstate_r(unsigned int >I<seed>B<, char *>I<statebuf>B<,>\n"
4628 "B< size_t >I<statelen>B<, struct random_data *>I<buf>B<);>\n"
4632 #: build/C/man3/random_r.3:42
4634 msgid "B<int setstate_r(char *>I<statebuf>B<, struct random_data *>I<buf>B<);>\n"
4638 #: build/C/man3/random_r.3:54
4639 msgid "B<random_r>(), B<srandom_r>(), B<initstate_r>(), B<setstate_r>():"
4643 #: build/C/man3/random_r.3:56
4644 msgid "_SVID_SOURCE || _BSD_SOURCE"
4648 #: build/C/man3/random_r.3:64
4650 "These functions are the reentrant equivalents of the functions described in "
4651 "B<random>(3). They are suitable for use in multithreaded programs where "
4652 "each thread needs to obtain an independent, reproducible sequence of random "
4657 #: build/C/man3/random_r.3:75
4659 "The B<random_r>() function is like B<random>(3), except that instead of "
4660 "using state information maintained in a global variable, it uses the state "
4661 "information in the argument pointed to by I<buf>. The generated random "
4662 "number is returned in the argument I<result>."
4666 #: build/C/man3/random_r.3:84
4668 "The B<srandom_r>() function is like B<srandom>(3), except that it "
4669 "initializes the seed for the random number generator whose state is "
4670 "maintained in the object pointed to by I<buf>, instead of the seed "
4671 "associated with the global state variable."
4675 #: build/C/man3/random_r.3:92
4677 "The B<initstate_r>() function is like B<initstate>(3) except that it "
4678 "initializes the state in the object pointed to by I<buf>, rather than "
4679 "initializing the global state variable."
4683 #: build/C/man3/random_r.3:100
4685 "The B<setstate_r>() function is like B<setstate>(3) except that it "
4686 "modifies the state in the object pointer to by I<buf>, rather than modifying "
4687 "the global state variable."
4691 #: build/C/man3/random_r.3:105
4693 "All of these functions return 0 on success. On error, -1 is returned, with "
4694 "I<errno> set to indicate the cause of the error."
4698 #: build/C/man3/random_r.3:110
4699 msgid "A state array of less than 8 bytes was specified to B<initstate_r>()."
4703 #: build/C/man3/random_r.3:119
4704 msgid "The I<statebuf> or I<buf> argument to B<setstate_r>() was NULL."
4708 #: build/C/man3/random_r.3:128
4709 msgid "The I<buf> or I<result> argument to B<random_r>() was NULL."
4713 #: build/C/man3/random_r.3:137
4715 "The B<random_r>(), B<srandom_r>(), B<initstate_r>(), and B<setstate_r>() "
4716 "functions are thread-safe."
4719 #. These functions appear to be on Tru64, but don't seem to be on
4720 #. Solaris, HP-UX, or FreeBSD.
4722 #: build/C/man3/random_r.3:141
4723 msgid "These functions are nonstandard glibc extensions."
4727 #: build/C/man3/rpmatch.3:29
4733 #: build/C/man3/rpmatch.3:32
4734 msgid "rpmatch - determine if the answer to a question is affirmative or negative"
4738 #: build/C/man3/rpmatch.3:37
4740 msgid "B<int rpmatch(const char *>I<response>B<);>\n"
4744 #: build/C/man3/rpmatch.3:46
4745 msgid "B<rpmatch>(): _SVID_SOURCE"
4749 #: build/C/man3/rpmatch.3:50
4751 "B<rpmatch>() handles a user response to yes or no questions, with support "
4752 "for internationalization."
4756 #: build/C/man3/rpmatch.3:57
4758 "I<response> should be a null-terminated string containing a user-supplied "
4759 "response, perhaps obtained with B<fgets>(3) or B<getline>(3)."
4763 #: build/C/man3/rpmatch.3:67
4765 "The user's language preference is taken into account per the environment "
4766 "variables B<LANG>, B<LC_MESSAGES>, and B<LC_ALL>, if the program has called "
4767 "B<setlocale>(3) to effect their changes."
4771 #: build/C/man3/rpmatch.3:73
4773 "Regardless of the locale, responses matching B<^[Yy]> are always accepted as "
4774 "affirmative, and those matching B<^[Nn]> are always accepted as negative."
4778 #: build/C/man3/rpmatch.3:82
4780 "After examining I<response>, B<rpmatch>() returns 0 for a recognized "
4781 "negative response (\"no\"), 1 for a recognized positive response (\"yes\"), "
4782 "and -1 when the value of I<response> is unrecognized."
4786 #: build/C/man3/rpmatch.3:86
4788 "A return value of -1 may indicate either an invalid input, or some other "
4789 "error. It is incorrect to only test if the return value is nonzero."
4793 #: build/C/man3/rpmatch.3:99
4795 "B<rpmatch>() can fail for any of the reasons that B<regcomp>(3) or "
4796 "B<regexec>(3) can fail; the cause of the error is not available from "
4797 "I<errno> or anywhere else, but indicates a failure of the regex engine (but "
4798 "this case is indistinguishable from that of an unrecognized value of "
4802 #. It is available on at least AIX 5.1 and FreeBSD 6.0.
4804 #: build/C/man3/rpmatch.3:104
4806 "B<rpmatch>() is not required by any standard, but is available on a few "
4811 #: build/C/man3/rpmatch.3:119
4813 "The B<rpmatch>() implementation looks at only the first character of "
4814 "I<response>. As a consequence, \"nyes\" returns 0, and \"ynever; not in a "
4815 "million years\" returns 1. It would be preferable to accept input strings "
4816 "much more strictly, for example (using the extended regular expression "
4817 "notation described in B<regex>(7)): B<^([yY]|yes|YES)$> and "
4818 "B<^([nN]|no|NO)$>."
4822 #: build/C/man3/rpmatch.3:123
4824 "The following program displays the results when B<rpmatch>() is applied to "
4825 "the string given in the program's command-line argument."
4829 #: build/C/man3/rpmatch.3:130
4832 "#define _SVID_SOURCE\n"
4833 "#include E<lt>locale.hE<gt>\n"
4834 "#include E<lt>stdlib.hE<gt>\n"
4835 "#include E<lt>string.hE<gt>\n"
4836 "#include E<lt>stdio.hE<gt>\n"
4840 #: build/C/man3/rpmatch.3:138
4844 "main(int argc, char *argv[])\n"
4846 " if (argc != 2 || strcmp(argv[1], \"--help\") == 0) {\n"
4847 " fprintf(stderr, \"%s response\\en\", argv[0]);\n"
4848 " exit(EXIT_FAILURE);\n"
4853 #: build/C/man3/rpmatch.3:143
4856 " setlocale(LC_ALL, \"\");\n"
4857 " printf(\"rpmatch() returns: %d\\en\", rpmatch(argv[1]));\n"
4858 " exit(EXIT_SUCCESS);\n"
4863 #: build/C/man3/rpmatch.3:149
4865 "B<fgets>(3), B<getline>(3), B<nl_langinfo>(3), B<regcomp>(3), "
4870 #: build/C/man3/setenv.3:37
4876 #: build/C/man3/setenv.3:37
4882 #: build/C/man3/setenv.3:40
4883 msgid "setenv - change or add an environment variable"
4887 #: build/C/man3/setenv.3:45
4890 "B<int setenv(const char *>I<name>B<, const char *>I<value>B<, int "
4891 ">I<overwrite>B<);>\n"
4895 #: build/C/man3/setenv.3:47
4897 msgid "B<int unsetenv(const char *>I<name>B<);>\n"
4901 #: build/C/man3/setenv.3:57
4902 msgid "B<setenv>(), B<unsetenv>():"
4906 #: build/C/man3/setenv.3:59
4908 "_BSD_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ "
4913 #: build/C/man3/setenv.3:94
4915 "The B<setenv>() function adds the variable I<name> to the environment with "
4916 "the value I<value>, if I<name> does not already exist. If I<name> does "
4917 "exist in the environment, then its value is changed to I<value> if "
4918 "I<overwrite> is nonzero; if I<overwrite> is zero, then the value of I<name> "
4919 "is not changed (and B<setenv>() returns a success status). This function "
4920 "makes copies of the strings pointed to by I<name> and I<value> (by contrast "
4921 "with B<putenv>(3))."
4925 #: build/C/man3/setenv.3:105
4927 "The B<unsetenv>() function deletes the variable I<name> from the "
4928 "environment. If I<name> does not exist in the environment, then the "
4929 "function succeeds, and the environment is unchanged."
4933 #: build/C/man3/setenv.3:112
4935 "The B<setenv>() function returns zero on success, or -1 on error, with "
4936 "I<errno> set to indicate the cause of the error."
4940 #: build/C/man3/setenv.3:119
4942 "The B<unsetenv>() function returns zero on success, or -1 on error, with "
4943 "I<errno> set to indicate the cause of the error."
4947 #: build/C/man3/setenv.3:125
4949 "I<name> is NULL, points to a string of length 0, or contains an \\(aq=\\(aq "
4954 #: build/C/man3/setenv.3:128
4955 msgid "Insufficient memory to add a new variable to the environment."
4959 #: build/C/man3/setenv.3:136
4961 "POSIX.1-2001 does not require B<setenv>() or B<unsetenv>() to be "
4966 #: build/C/man3/setenv.3:144
4968 "Prior to glibc 2.2.2, B<unsetenv>() was prototyped as returning I<void>; "
4969 "more recent glibc versions follow the POSIX.1-2001-compliant prototype shown "
4974 #: build/C/man3/setenv.3:153
4976 "POSIX.1-2001 specifies that if I<name> contains an \\(aq=\\(aq character, "
4977 "then B<setenv>() should fail with the error B<EINVAL>; however, versions of "
4978 "glibc before 2.3.4 allowed an \\(aq=\\(aq sign in I<name>."
4982 #: build/C/man3/setenv.3:157
4983 msgid "B<clearenv>(3), B<getenv>(3), B<putenv>(3), B<environ>(7)"
4987 #: build/C/man3/strtod.3:45
4993 #: build/C/man3/strtod.3:48
4994 msgid "strtod, strtof, strtold - convert ASCII string to floating-point number"
4998 #: build/C/man3/strtod.3:52
4999 msgid "B<double strtod(const char *>I<nptr>B<, char **>I<endptr>B<);>"
5003 #: build/C/man3/strtod.3:54
5004 msgid "B<float strtof(const char *>I<nptr>B<, char **>I<endptr>B<);>"
5008 #: build/C/man3/strtod.3:56
5009 msgid "B<long double strtold(const char *>I<nptr>B<, char **>I<endptr>B<);>"
5013 #: build/C/man3/strtod.3:65
5014 msgid "B<strtof>(), B<strtold>():"
5018 #: build/C/man3/strtod.3:87
5020 "The B<strtod>(), B<strtof>(), and B<strtold>() functions convert the "
5021 "initial portion of the string pointed to by I<nptr> to I<double>, I<float>, "
5022 "and I<long double> representation, respectively."
5026 #: build/C/man3/strtod.3:94
5028 "The expected form of the (initial portion of the) string is optional leading "
5029 "white space as recognized by B<isspace>(3), an optional plus (\\(aq+\\(aq) "
5030 "or minus sign (\\(aq-\\(aq) and then either (i) a decimal number, or (ii) a "
5031 "hexadecimal number, or (iii) an infinity, or (iv) a NAN (not-a-number)."
5035 #: build/C/man3/strtod.3:103
5037 "A I<decimal number> consists of a nonempty sequence of decimal digits "
5038 "possibly containing a radix character (decimal point, locale-dependent, "
5039 "usually \\(aq.\\(aq), optionally followed by a decimal exponent. A decimal "
5040 "exponent consists of an \\(aqE\\(aq or \\(aqe\\(aq, followed by an optional "
5041 "plus or minus sign, followed by a nonempty sequence of decimal digits, and "
5042 "indicates multiplication by a power of 10."
5046 #: build/C/man3/strtod.3:114
5048 "A I<hexadecimal number> consists of a \"0x\" or \"0X\" followed by a "
5049 "nonempty sequence of hexadecimal digits possibly containing a radix "
5050 "character, optionally followed by a binary exponent. A binary exponent "
5051 "consists of a \\(aqP\\(aq or \\(aqp\\(aq, followed by an optional plus or "
5052 "minus sign, followed by a nonempty sequence of decimal digits, and indicates "
5053 "multiplication by a power of 2. At least one of radix character and binary "
5054 "exponent must be present."
5058 #: build/C/man3/strtod.3:118
5059 msgid "An I<infinity> is either \"INF\" or \"INFINITY\", disregarding case."
5063 #: build/C/man3/strtod.3:127
5065 "A I<NAN> is \"NAN\" (disregarding case) optionally followed by a string, "
5066 "I<(n-char-sequence)>, where I<n-char-sequence> specifies in an "
5067 "implementation-dependent way the type of NAN (see NOTES)."
5071 #: build/C/man3/strtod.3:129
5072 msgid "These functions return the converted value, if any."
5076 #: build/C/man3/strtod.3:136
5078 "If I<endptr> is not NULL, a pointer to the character after the last "
5079 "character used in the conversion is stored in the location referenced by "
5084 #: build/C/man3/strtod.3:141
5086 "If no conversion is performed, zero is returned and the value of I<nptr> is "
5087 "stored in the location referenced by I<endptr>."
5091 #: build/C/man3/strtod.3:155
5093 "If the correct value would cause overflow, plus or minus B<HUGE_VAL> "
5094 "(B<HUGE_VALF>, B<HUGE_VALL>) is returned (according to the sign of the "
5095 "value), and B<ERANGE> is stored in I<errno>. If the correct value would "
5096 "cause underflow, zero is returned and B<ERANGE> is stored in I<errno>."
5100 #: build/C/man3/strtod.3:156 build/C/man3/strtol.3:151 build/C/man3/strtoul.3:155
5106 #: build/C/man3/strtod.3:159
5107 msgid "Overflow or underflow occurred."
5111 #: build/C/man3/strtod.3:171
5113 "The B<strtod>(), B<strtof>(), and B<strtold>() functions are thread-safe "
5114 "with exceptions. These functions can be safely used in multithreaded "
5115 "applications, as long as B<setlocale>(3) is not called to change the locale "
5116 "during their execution."
5120 #: build/C/man3/strtod.3:176
5121 msgid "C89 describes B<strtod>(), C99 describes the other two functions."
5125 #: build/C/man3/strtod.3:185
5127 "Since 0 can legitimately be returned on both success and failure, the "
5128 "calling program should set I<errno> to 0 before the call, and then determine "
5129 "if an error occurred by checking whether I<errno> has a nonzero value after "
5133 #. From glibc 2.8's stdlib/strtod_l.c:
5134 #. We expect it to be a number which is put in the
5135 #. mantissa of the number.
5136 #. It looks as though at least FreeBSD (according to the manual) does
5137 #. something similar.
5138 #. C11 says: "An implementation may use the n-char sequence to determine
5139 #. extra information to be represented in the NaN's significant."
5141 #: build/C/man3/strtod.3:200
5143 "In the glibc implementation, the I<n-char-sequence> that optionally follows "
5144 "\"NAN\" is interpreted as an integer number (with an optional '0' or '0x' "
5145 "prefix to select base 8 or 16) that is to be placed in the mantissa "
5146 "component of the returned value."
5150 #: build/C/man3/strtod.3:205 build/C/man3/strtoul.3:225
5152 "See the example on the B<strtol>(3) manual page; the use of the functions "
5153 "described in this manual page is similar."
5157 #: build/C/man3/strtod.3:213
5159 "B<atof>(3), B<atoi>(3), B<atol>(3), B<nan>(3), B<nanf>(3), B<nanl>(3), "
5160 "B<strtol>(3), B<strtoul>(3)"
5164 #: build/C/man3/strtoimax.3:24
5170 #: build/C/man3/strtoimax.3:27
5171 msgid "strtoimax, strtoumax - convert string to integer"
5175 #: build/C/man3/strtoimax.3:30
5177 msgid "B<#include E<lt>inttypes.hE<gt>>\n"
5181 #: build/C/man3/strtoimax.3:32
5184 "B<intmax_t strtoimax(const char *>I<nptr>B<, char **>I<endptr>B<, int "
5189 #: build/C/man3/strtoimax.3:34
5192 "B<uintmax_t strtoumax(const char *>I<nptr>B<, char **>I<endptr>B<, int "
5197 #: build/C/man3/strtoimax.3:45
5199 "These functions are just like B<strtol>(3) and B<strtoul>(3), except that "
5200 "they return a value of type I<intmax_t> and I<uintmax_t>, respectively."
5204 #: build/C/man3/strtoimax.3:58
5206 "On success, the converted value is returned. If nothing was found to "
5207 "convert, zero is returned. On overflow or underflow B<INTMAX_MAX> or "
5208 "B<INTMAX_MIN> or B<UINTMAX_MAX> is returned, and I<errno> is set to "
5213 #: build/C/man3/strtoimax.3:69
5215 "The B<strtoimax>() and B<strtoumax>() functions are thread-safe with "
5216 "exceptions. These functions can be safely used in multithreaded "
5217 "applications, as long as B<setlocale>(3) is not called to change the locale "
5218 "during their execution."
5222 #: build/C/man3/strtoimax.3:76
5223 msgid "B<imaxabs>(3), B<imaxdiv>(3), B<strtol>(3), B<strtoul>(3), B<wcstoimax>(3)"
5227 #: build/C/man3/strtol.3:31
5233 #: build/C/man3/strtol.3:34
5234 msgid "strtol, strtoll, strtoq - convert a string to a long integer"
5238 #: build/C/man3/strtol.3:39
5241 "B<long int strtol(const char *>I<nptr>B<, char **>I<endptr>B<, int "
5246 #: build/C/man3/strtol.3:42
5249 "B<long long int strtoll(const char *>I<nptr>B<, char **>I<endptr>B<, int "
5254 #: build/C/man3/strtol.3:51
5255 msgid "B<strtoll>():"
5259 #: build/C/man3/strtol.3:54 build/C/man3/strtoul.3:57
5261 "_XOPEN_SOURCE\\ E<gt>=\\ 600 || _BSD_SOURCE || _SVID_SOURCE || "
5262 "_ISOC99_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L;"
5266 #: build/C/man3/strtol.3:68
5268 "The B<strtol>() function converts the initial part of the string in I<nptr> "
5269 "to a long integer value according to the given I<base>, which must be "
5270 "between 2 and 36 inclusive, or be the special value 0."
5274 #: build/C/man3/strtol.3:81 build/C/man3/strtoul.3:89
5276 "The string may begin with an arbitrary amount of white space (as determined "
5277 "by B<isspace>(3)) followed by a single optional \\(aq+\\(aq or \\(aq-\\(aq "
5278 "sign. If I<base> is zero or 16, the string may then include a \"0x\" "
5279 "prefix, and the number will be read in base 16; otherwise, a zero I<base> is "
5280 "taken as 10 (decimal) unless the next character is \\(aq0\\(aq, in which "
5281 "case it is taken as 8 (octal)."
5285 #: build/C/man3/strtol.3:90
5287 "The remainder of the string is converted to a I<long int> value in the "
5288 "obvious manner, stopping at the first character which is not a valid digit "
5289 "in the given base. (In bases above 10, the letter \\(aqA\\(aq in either "
5290 "uppercase or lowercase represents 10, \\(aqB\\(aq represents 11, and so "
5291 "forth, with \\(aqZ\\(aq representing 35.)"
5295 #: build/C/man3/strtol.3:111
5297 "If I<endptr> is not NULL, B<strtol>() stores the address of the first "
5298 "invalid character in I<*endptr>. If there were no digits at all, "
5299 "B<strtol>() stores the original value of I<nptr> in I<*endptr> (and returns "
5300 "0). In particular, if I<*nptr> is not \\(aq\\e0\\(aq but I<**endptr> is "
5301 "\\(aq\\e0\\(aq on return, the entire string is valid."
5305 #: build/C/man3/strtol.3:117
5307 "The B<strtoll>() function works just like the B<strtol>() function but "
5308 "returns a long long integer value."
5312 #: build/C/man3/strtol.3:144
5314 "The B<strtol>() function returns the result of the conversion, unless the "
5315 "value would underflow or overflow. If an underflow occurs, B<strtol>() "
5316 "returns B<LONG_MIN>. If an overflow occurs, B<strtol>() returns "
5317 "B<LONG_MAX>. In both cases, I<errno> is set to B<ERANGE>. Precisely the "
5318 "same holds for B<strtoll>() (with B<LLONG_MIN> and B<LLONG_MAX> instead of "
5319 "B<LONG_MIN> and B<LONG_MAX>)."
5323 #: build/C/man3/strtol.3:151 build/C/man3/strtoul.3:155
5324 msgid "(not in C99) The given I<base> contains an unsupported value."
5328 #: build/C/man3/strtol.3:154 build/C/man3/strtoul.3:158
5329 msgid "The resulting value was out of range."
5333 #: build/C/man3/strtol.3:161 build/C/man3/strtoul.3:165
5335 "The implementation may also set I<errno> to B<EINVAL> in case no conversion "
5336 "was performed (no digits seen, and 0 returned)."
5340 #: build/C/man3/strtol.3:173
5342 "The B<strtol>(), B<strtoll>(), and B<strtoq>() functions are thread-safe "
5343 "with exceptions. These functions can be safely used in multithreaded "
5344 "applications, as long as B<setlocale>(3) is not called to change the locale "
5345 "during their execution."
5349 #: build/C/man3/strtol.3:178
5351 "B<strtol>() conforms to SVr4, 4.3BSD, C89, C99, and POSIX.1-2001, and "
5352 "B<strtoll>() to C99 and POSIX.1-2001."
5356 #: build/C/man3/strtol.3:196
5358 "Since B<strtol>() can legitimately return 0, B<LONG_MAX>, or B<LONG_MIN> "
5359 "(B<LLONG_MAX> or B<LLONG_MIN> for B<strtoll>()) on both success and "
5360 "failure, the calling program should set I<errno> to 0 before the call, and "
5361 "then determine if an error occurred by checking whether I<errno> has a "
5362 "nonzero value after the call."
5366 #: build/C/man3/strtol.3:201
5368 "According to POSIX.1-2001, in locales other than the \"C\" and \"POSIX\", "
5369 "these functions may accept other, implementation-defined numeric strings."
5373 #: build/C/man3/strtol.3:203 build/C/man3/strtoul.3:202
5374 msgid "BSD also has"
5378 #: build/C/man3/strtol.3:207
5381 "B<quad_t strtoq(const char *>I<nptr>B<, char **>I<endptr>B<, int "
5386 #: build/C/man3/strtol.3:216
5388 "with completely analogous definition. Depending on the wordsize of the "
5389 "current architecture, this may be equivalent to B<strtoll>() or to "
5394 #: build/C/man3/strtol.3:230
5396 "The program shown below demonstrates the use of B<strtol>(). The first "
5397 "command-line argument specifies a string from which B<strtol>() should "
5398 "parse a number. The second (optional) argument specifies the base to be "
5399 "used for the conversion. (This argument is converted to numeric form using "
5400 "B<atoi>(3), a function that performs no error checking and has a simpler "
5401 "interface than B<strtol>().) Some examples of the results produced by this "
5402 "program are the following:"
5406 #: build/C/man3/strtol.3:246
5409 "$B< ./a.out 123>\n"
5410 "strtol() returned 123\n"
5411 "$B< ./a.out \\(aq 123\\(aq>\n"
5412 "strtol() returned 123\n"
5413 "$B< ./a.out 123abc>\n"
5414 "strtol() returned 123\n"
5415 "Further characters after number: abc\n"
5416 "$B< ./a.out 123abc 55>\n"
5417 "strtol: Invalid argument\n"
5418 "$B< ./a.out \\(aq\\(aq>\n"
5419 "No digits were found\n"
5420 "$B< ./a.out 4000000000>\n"
5421 "strtol: Numerical result out of range\n"
5425 #: build/C/man3/strtol.3:255
5428 "#include E<lt>stdlib.hE<gt>\n"
5429 "#include E<lt>limits.hE<gt>\n"
5430 "#include E<lt>stdio.hE<gt>\n"
5431 "#include E<lt>errno.hE<gt>\n"
5435 #: build/C/man3/strtol.3:262
5439 "main(int argc, char *argv[])\n"
5442 " char *endptr, *str;\n"
5447 #: build/C/man3/strtol.3:267
5450 " if (argc E<lt> 2) {\n"
5451 " fprintf(stderr, \"Usage: %s str [base]\\en\", argv[0]);\n"
5452 " exit(EXIT_FAILURE);\n"
5457 #: build/C/man3/strtol.3:270
5461 " base = (argc E<gt> 2) ? atoi(argv[2]) : 10;\n"
5465 #: build/C/man3/strtol.3:273
5468 " errno = 0; /* To distinguish success/failure after call */\n"
5469 " val = strtol(str, &endptr, base);\n"
5473 #: build/C/man3/strtol.3:275
5475 msgid " /* Check for various possible errors */\n"
5479 #: build/C/man3/strtol.3:281
5482 " if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))\n"
5483 " || (errno != 0 && val == 0)) {\n"
5484 " perror(\"strtol\");\n"
5485 " exit(EXIT_FAILURE);\n"
5490 #: build/C/man3/strtol.3:286
5493 " if (endptr == str) {\n"
5494 " fprintf(stderr, \"No digits were found\\en\");\n"
5495 " exit(EXIT_FAILURE);\n"
5500 #: build/C/man3/strtol.3:288
5502 msgid " /* If we got here, strtol() successfully parsed a number */\n"
5506 #: build/C/man3/strtol.3:290
5508 msgid " printf(\"strtol() returned %ld\\en\", val);\n"
5512 #: build/C/man3/strtol.3:293
5515 " if (*endptr != \\(aq\\e0\\(aq) /* Not necessarily an "
5517 " printf(\"Further characters after number: %s\\en\", endptr);\n"
5521 #: build/C/man3/strtol.3:302
5522 msgid "B<atof>(3), B<atoi>(3), B<atol>(3), B<strtod>(3), B<strtoul>(3)"
5526 #: build/C/man3/strtoul.3:33
5532 #: build/C/man3/strtoul.3:36
5533 msgid "strtoul, strtoull, strtouq - convert a string to an unsigned long integer"
5537 #: build/C/man3/strtoul.3:42
5540 "B<unsigned long int strtoul(const char *>I<nptr>B<, char **>I<endptr>B<, int "
5545 #: build/C/man3/strtoul.3:45
5548 "B<unsigned long long int strtoull(const char *>I<nptr>B<, char "
5549 "**>I<endptr>B<,>\n"
5550 "B< int >I<base>B<);>\n"
5554 #: build/C/man3/strtoul.3:54
5555 msgid "B<strtoull>():"
5559 #: build/C/man3/strtoul.3:75
5561 "The B<strtoul>() function converts the initial part of the string in "
5562 "I<nptr> to an I<unsigned long int> value according to the given I<base>, "
5563 "which must be between 2 and 36 inclusive, or be the special value 0."
5567 #: build/C/man3/strtoul.3:98
5569 "The remainder of the string is converted to an I<unsigned long int> value in "
5570 "the obvious manner, stopping at the first character which is not a valid "
5571 "digit in the given base. (In bases above 10, the letter \\(aqA\\(aq in "
5572 "either uppercase or lowercase represents 10, \\(aqB\\(aq represents 11, and "
5573 "so forth, with \\(aqZ\\(aq representing 35.)"
5577 #: build/C/man3/strtoul.3:119
5579 "If I<endptr> is not NULL, B<strtoul>() stores the address of the first "
5580 "invalid character in I<*endptr>. If there were no digits at all, "
5581 "B<strtoul>() stores the original value of I<nptr> in I<*endptr> (and "
5582 "returns 0). In particular, if I<*nptr> is not \\(aq\\e0\\(aq but "
5583 "I<**endptr> is \\(aq\\e0\\(aq on return, the entire string is valid."
5587 #: build/C/man3/strtoul.3:127
5589 "The B<strtoull>() function works just like the B<strtoul>() function but "
5590 "returns an I<unsigned long long int> value."
5594 #: build/C/man3/strtoul.3:148
5596 "The B<strtoul>() function returns either the result of the conversion or, "
5597 "if there was a leading minus sign, the negation of the result of the "
5598 "conversion represented as an unsigned value, unless the original "
5599 "(nonnegated) value would overflow; in the latter case, B<strtoul>() returns "
5600 "B<ULONG_MAX> and sets I<errno> to B<ERANGE>. Precisely the same holds for "
5601 "B<strtoull>() (with B<ULLONG_MAX> instead of B<ULONG_MAX>)."
5605 #: build/C/man3/strtoul.3:177
5607 "The B<strtoul>(), B<strtoull>(), and B<strtouq>() functions are thread-safe "
5608 "with exceptions. These functions can be safely used in multithreaded "
5609 "applications, as long as B<setlocale>(3) is not called to change the locale "
5610 "during their execution."
5614 #: build/C/man3/strtoul.3:182
5616 "B<strtoul>() conforms to SVr4, C89, C99, and POSIX-2001, and B<strtoull>() "
5617 "to C99 and POSIX.1-2001."
5621 #: build/C/man3/strtoul.3:196
5623 "Since B<strtoul>() can legitimately return 0 or B<ULONG_MAX> (B<ULLONG_MAX> "
5624 "for B<strtoull>()) on both success and failure, the calling program should "
5625 "set I<errno> to 0 before the call, and then determine if an error occurred "
5626 "by checking whether I<errno> has a nonzero value after the call."
5630 #: build/C/man3/strtoul.3:200
5632 "In locales other than the \"C\" locale, other strings may be accepted. (For "
5633 "example, the thousands separator of the current locale may be supported.)"
5637 #: build/C/man3/strtoul.3:206
5640 "B<u_quad_t strtouq(const char *>I<nptr>B<, char **>I<endptr>B<, int "
5645 #: build/C/man3/strtoul.3:215
5647 "with completely analogous definition. Depending on the wordsize of the "
5648 "current architecture, this may be equivalent to B<strtoull>() or to "
5653 #: build/C/man3/strtoul.3:220
5655 "Negative values are considered valid input and are silently converted to the "
5656 "equivalent I<unsigned long int> value."
5660 #: build/C/man3/strtoul.3:230
5661 msgid "B<atof>(3), B<atoi>(3), B<atol>(3), B<strtod>(3), B<strtol>(3)"
5665 #: build/C/man3/system.3:31
5671 #: build/C/man3/system.3:34
5672 msgid "system - execute a shell command"
5676 #: build/C/man3/system.3:39
5678 msgid "B<int system(const char *>I<command>B<);>\n"
5682 #: build/C/man3/system.3:50
5684 "The B<system>() library function uses B<fork>(2) to create a child process "
5685 "that executes the shell command specified in I<command> using B<execl>(3) "
5690 #: build/C/man3/system.3:52
5692 msgid " execl(\"/bin/sh\", \"sh\", \"-c\", command, (char *) 0);\n"
5696 #: build/C/man3/system.3:55
5697 msgid "B<system>() returns after the command has been completed."
5701 #: build/C/man3/system.3:67
5703 "During execution of the command, B<SIGCHLD> will be blocked, and B<SIGINT> "
5704 "and B<SIGQUIT> will be ignored, in the process that calls B<system>() "
5705 "(these signals will be handled according to their defaults inside the child "
5706 "process that executes I<command>)."
5710 #: build/C/man3/system.3:73
5712 "If I<command> is NULL, then B<system>() returns a status indicating whether "
5713 "a shell is available on the system"
5717 #: build/C/man3/system.3:77
5718 msgid "The return value of B<system>() is one of the following:"
5722 #: build/C/man3/system.3:82
5724 "If I<command> is NULL, then a nonzero value if a shell is available, or 0 if "
5725 "no shell is available."
5729 #: build/C/man3/system.3:86
5731 "If a child process could not be created, or its status could not be "
5732 "retrieved, the return value is -1."
5736 #: build/C/man3/system.3:91
5738 "If a shell could not be executed in the child process, then the return value "
5739 "is as though the child shell terminated by calling B<_exit>(2) with the "
5744 #: build/C/man3/system.3:98
5746 "If all system calls succeed, then the return value is the termination status "
5747 "of the child shell used to execute I<command>. (The termination status of a "
5748 "shell is the termination status of the last command it executes.)"
5752 #: build/C/man3/system.3:107
5754 "In the last two cases, the return value is a \"wait status\" that can be "
5755 "examined using the macros described in B<waitpid>(2). (i.e., B<WIFEXITED>() "
5756 "B<WEXITSTATUS>() and so on)."
5760 #: build/C/man3/system.3:110
5761 msgid "B<system>() does not affect the wait status of any other children."
5765 #: build/C/man3/system.3:115
5766 msgid "The B<system>() function is thread-safe."
5770 #: build/C/man3/system.3:117
5771 msgid "C89, C99, POSIX.1-2001."
5775 #: build/C/man3/system.3:134
5777 "B<system>() provides simplicity and convenience: it handles all of the "
5778 "details of calling B<fork>(2), B<execl>(3), and B<waitpid>(2), as well as "
5779 "the necessary manipulations of signals; in addition, the shell performs the "
5780 "usual substitutions and I/O redirections for I<command>. The main cost of "
5781 "B<system>() is inefficiency: additional system calls are required to create "
5782 "the process that runs the shell and to execute the shell."
5786 #: build/C/man3/system.3:146
5788 "If the B<_XOPEN_SOURCE> feature test macro is defined (before including "
5789 "I<any> header files), then the macros described in B<waitpid>(2) "
5790 "(B<WEXITSTATUS>(), etc.) are made available when including "
5791 "I<E<lt>stdlib.hE<gt>>."
5795 #: build/C/man3/system.3:157
5797 "As mentioned, B<system>() ignores B<SIGINT> and B<SIGQUIT>. This may make "
5798 "programs that call it from a loop uninterruptible, unless they take care "
5799 "themselves to check the exit status of the child. For example:"
5803 #: build/C/man3/system.3:162
5806 " while (something) {\n"
5807 " int ret = system(\"foo\");\n"
5811 #: build/C/man3/system.3:167
5814 " if (WIFSIGNALED(ret) &&\n"
5815 " (WTERMSIG(ret) == SIGINT || WTERMSIG(ret) == SIGQUIT))\n"
5821 #: build/C/man3/system.3:187
5823 "Do not use B<system>() from a program with set-user-ID or set-group-ID "
5824 "privileges, because strange values for some environment variables might be "
5825 "used to subvert system integrity. Use the B<exec>(3) family of functions "
5826 "instead, but not B<execlp>(3) or B<execvp>(3). B<system>() will not, in "
5827 "fact, work properly from programs with set-user-ID or set-group-ID "
5828 "privileges on systems on which I</bin/sh> is bash version 2, since bash 2 "
5829 "drops privileges on startup. (Debian uses a modified bash which does not do "
5830 "this when invoked as B<sh>.)"
5834 #: build/C/man3/system.3:201
5836 "In versions of glibc before 2.1.3, the check for the availability of "
5837 "I</bin/sh> was not actually performed if I<command> was NULL; instead it was "
5838 "always assumed to be available, and B<system>() always returned 1 in this "
5839 "case. Since glibc 2.1.3, this check is performed because, even though "
5840 "POSIX.1-2001 requires a conforming implementation to provide a shell, that "
5841 "shell may not be available or executable if the calling program has "
5842 "previously called B<chroot>(2) (which is not specified by POSIX.1-2001)."
5846 #: build/C/man3/system.3:207
5848 "It is possible for the shell command to terminate with a status of 127, "
5849 "which yields a B<system>() return value that is indistinguishable from the "
5850 "case where a shell could not be executed in the child process."
5854 #: build/C/man3/system.3:214
5856 "B<sh>(1), B<sigaction>(2), B<sigprocmask>(2), B<fork>(2), B<wait>(2), "
5857 "B<exec>(3), B<signal>(7)"
5861 #: build/C/man7/vdso.7:13
5867 #: build/C/man7/vdso.7:16
5868 msgid "vDSO - overview of the virtual ELF dynamic shared object"
5872 #: build/C/man7/vdso.7:18
5873 msgid "B<#include E<lt>sys/auxv.hE<gt>>"
5877 #: build/C/man7/vdso.7:20
5878 msgid "B<void *vdso = (uintptr_t) getauxval(AT_SYSINFO_EHDR);>"
5882 #: build/C/man7/vdso.7:29
5884 "The \"vDSO\" (virtual dynamic shared object) is a small shared library that "
5885 "the kernel automatically maps into the address space of all user-space "
5886 "applications. Applications usually do not need to concern themselves with "
5887 "these details as the vDSO is most commonly called by the C library. This "
5888 "way you can code in the normal way using standard functions and the C "
5889 "library will take care of using any functionality that is available via the "
5894 #: build/C/man7/vdso.7:37
5896 "Why does the vDSO exist at all? There are some system calls the kernel "
5897 "provides that user-space code ends up using frequently, to the point that "
5898 "such calls can dominate overall performance. This is due both to the "
5899 "frequency of the call as well as the context-switch overhead that results "
5900 "from exiting user space and entering the kernel."
5904 #: build/C/man7/vdso.7:42
5906 "The rest of this documentation is geared toward the curious and/or C library "
5907 "writers rather than general developers. If you're trying to call the vDSO "
5908 "in your own application rather than using the C library, you're most likely "
5913 #: build/C/man7/vdso.7:42
5915 msgid "Example background"
5919 #: build/C/man7/vdso.7:56
5921 "Making system calls can be slow. In x86 32-bit systems, you can trigger a "
5922 "software interrupt (I<int $0x80>) to tell the kernel you wish to make a "
5923 "system call. However, this instruction is expensive: it goes through the "
5924 "full interrupt-handling paths in the processor's microcode as well as in the "
5925 "kernel. Newer processors have faster (but backward incompatible) "
5926 "instructions to initiate system calls. Rather than require the C library to "
5927 "figure out if this functionality is available at run time, the C library can "
5928 "use functions provided by the kernel in the vDSO."
5932 #: build/C/man7/vdso.7:63
5934 "Note that the terminology can be confusing. On x86 systems, the vDSO "
5935 "function used to determine the preferred method of making a system call is "
5936 "named \"__kernel_vsyscall\", but on x86_64, the term \"vsyscall\" also "
5937 "refers to an obsolete way to ask the kernel what time it is or what CPU the "
5942 #: build/C/man7/vdso.7:79
5944 "One frequently used system call is B<gettimeofday>(2). This system call is "
5945 "called both directly by user-space applications as well as indirectly by the "
5946 "C library. Think timestamps or timing loops or polling\\(emall of these "
5947 "frequently need to know what time it is right now. This information is also "
5948 "not secret\\(emany application in any privilege mode (root or any "
5949 "unprivileged user) will get the same answer. Thus the kernel arranges for "
5950 "the information required to answer this question to be placed in memory the "
5951 "process can access. Now a call to B<gettimeofday>(2) changes from a system "
5952 "call to a normal function call and a few memory accesses."
5956 #: build/C/man7/vdso.7:79
5958 msgid "Finding the vDSO"
5962 #: build/C/man7/vdso.7:86
5964 "The base address of the vDSO (if one exists) is passed by the kernel to each "
5965 "program in the initial auxiliary vector (see B<getauxval>(3)), via the "
5966 "B<AT_SYSINFO_EHDR> tag."
5970 #: build/C/man7/vdso.7:95
5972 "You must not assume the vDSO is mapped at any particular location in the "
5973 "user's memory map. The base address will usually be randomized at run time "
5974 "every time a new process image is created (at B<execve>(2) time). This is "
5975 "done for security reasons, to prevent \"return-to-libc\" attacks."
5979 #: build/C/man7/vdso.7:104
5981 "For some architectures, there is also an B<AT_SYSINFO> tag. This is used "
5982 "only for locating the vsyscall entry point and is frequently omitted or set "
5983 "to 0 (meaning it's not available). This tag is a throwback to the initial "
5984 "vDSO work (see I<History> below) and its use should be avoided."
5988 #: build/C/man7/vdso.7:104
5994 #: build/C/man7/vdso.7:111
5996 "Since the vDSO is a fully formed ELF image, you can do symbol lookups on "
5997 "it. This allows new symbols to be added with newer kernel releases, and "
5998 "allows the C library to detect available functionality at run time when "
5999 "running under different kernel versions. Oftentimes the C library will do "
6000 "detection with the first call and then cache the result for subsequent "
6005 #: build/C/man7/vdso.7:120
6007 "All symbols are also versioned (using the GNU version format). This allows "
6008 "the kernel to update the function signature without breaking backward "
6009 "compatibility. This means changing the arguments that the function accepts "
6010 "as well as the return value. Thus, when looking up a symbol in the vDSO, "
6011 "you must always include the version to match the ABI you expect."
6015 #: build/C/man7/vdso.7:125
6017 "Typically the vDSO follows the naming convention of prefixing all symbols "
6018 "with \"__vdso_\" or \"__kernel_\" so as to distinguish them from other "
6019 "standard symbols. For example, the \"gettimeofday\" function is named "
6020 "\"__vdso_gettimeofday\"."
6024 #: build/C/man7/vdso.7:129
6026 "You use the standard C calling conventions when calling any of these "
6027 "functions. No need to worry about weird register or stack behavior."
6031 #: build/C/man7/vdso.7:130
6037 #: build/C/man7/vdso.7:134
6039 "When you compile the kernel, it will automatically compile and link the vDSO "
6040 "code for you. You will frequently find it under the architecture-specific "
6045 #: build/C/man7/vdso.7:136
6047 msgid " find arch/$ARCH/ -name '*vdso*.so*' -o -name '*gate*.so*'\n"
6051 #: build/C/man7/vdso.7:137
6057 #: build/C/man7/vdso.7:143
6059 "The name of the vDSO varies across architectures. It will often show up in "
6060 "things like glibc's B<ldd>(1) output. The exact name should not matter to "
6061 "any code, so do not hardcode it."
6065 #: build/C/man7/vdso.7:148
6067 msgid "user ABI\tvDSO name\n"
6071 #: build/C/man7/vdso.7:149 build/C/man7/vdso.7:198 build/C/man7/vdso.7:235 build/C/man7/vdso.7:263 build/C/man7/vdso.7:299 build/C/man7/vdso.7:333 build/C/man7/vdso.7:359 build/C/man7/vdso.7:384 build/C/man7/vdso.7:402 build/C/man7/vdso.7:420 build/C/man7/vdso.7:438 build/C/man7/vdso.7:463 build/C/man7/vdso.7:482
6077 #: build/C/man7/vdso.7:150
6079 msgid "aarch64\tlinux-vdso.so.1\n"
6083 #: build/C/man7/vdso.7:151
6085 msgid "ia64\tlinux-gate.so.1\n"
6089 #: build/C/man7/vdso.7:152
6091 msgid "ppc/32\tlinux-vdso32.so.1\n"
6095 #: build/C/man7/vdso.7:153
6097 msgid "ppc/64\tlinux-vdso64.so.1\n"
6101 #: build/C/man7/vdso.7:154
6103 msgid "s390\tlinux-vdso32.so.1\n"
6107 #: build/C/man7/vdso.7:155
6109 msgid "s390x\tlinux-vdso64.so.1\n"
6113 #: build/C/man7/vdso.7:156
6115 msgid "sh\tlinux-gate.so.1\n"
6119 #: build/C/man7/vdso.7:157
6121 msgid "i386\tlinux-gate.so.1\n"
6125 #: build/C/man7/vdso.7:158
6127 msgid "x86_64\tlinux-vdso.so.1\n"
6131 #: build/C/man7/vdso.7:159
6133 msgid "x86/x32\tlinux-vdso.so.1\n"
6137 #: build/C/man7/vdso.7:165
6139 msgid "ARCHITECTURE-SPECIFIC NOTES"
6143 #: build/C/man7/vdso.7:168
6144 msgid "The subsections below provide architecture-specific notes on the vDSO."
6148 #: build/C/man7/vdso.7:177
6150 "Note that the vDSO that is used is based on the ABI of your user-space code "
6151 "and not the ABI of the kernel. Thus, for example, when you run an i386 "
6152 "32-bit ELF binary, you'll get the same vDSO regardless of whether you run it "
6153 "under an i386 32-bit kernel or under an x86_64 64-bit kernel. Therefore, "
6154 "the name of the user-space ABI should be used to determine which of the "
6155 "sections below is relevant."
6159 #: build/C/man7/vdso.7:177
6161 msgid "ARM functions"
6164 #. See linux/arch/arm/kernel/entry-armv.S
6165 #. See linux/Documentation/arm/kernel_user_helpers.txt
6167 #: build/C/man7/vdso.7:184
6169 "The ARM port has a code page full of utility functions. Since it's just a "
6170 "raw page of code, there is no ELF information for doing symbol lookups or "
6171 "versioning. It does provide support for different versions though."
6175 #: build/C/man7/vdso.7:189
6177 "For information on this code page, it's best to refer to the kernel "
6178 "documentation as it's extremely detailed and covers everything you need to "
6179 "know: I<Documentation/arm/kernel_user_helpers.txt>."
6183 #: build/C/man7/vdso.7:189
6185 msgid "aarch64 functions"
6188 #. See linux/arch/x86/vdso/vdso32.lds.S
6190 #: build/C/man7/vdso.7:192 build/C/man7/vdso.7:229 build/C/man7/vdso.7:353 build/C/man7/vdso.7:378 build/C/man7/vdso.7:396 build/C/man7/vdso.7:414 build/C/man7/vdso.7:432 build/C/man7/vdso.7:476
6191 msgid "The table below lists the symbols exported by the vDSO."
6195 #: build/C/man7/vdso.7:197 build/C/man7/vdso.7:234 build/C/man7/vdso.7:332 build/C/man7/vdso.7:358 build/C/man7/vdso.7:383 build/C/man7/vdso.7:401 build/C/man7/vdso.7:419 build/C/man7/vdso.7:437 build/C/man7/vdso.7:462 build/C/man7/vdso.7:481
6197 msgid "symbol\tversion\n"
6201 #: build/C/man7/vdso.7:199
6203 msgid "__kernel_rt_sigreturn\tLINUX_2.6.39\n"
6207 #: build/C/man7/vdso.7:200
6209 msgid "__kernel_gettimeofday\tLINUX_2.6.39\n"
6213 #: build/C/man7/vdso.7:201
6215 msgid "__kernel_clock_gettime\tLINUX_2.6.39\n"
6219 #: build/C/man7/vdso.7:202
6221 msgid "__kernel_clock_getres\tLINUX_2.6.39\n"
6225 #: build/C/man7/vdso.7:208
6227 msgid "bfin (Blackfin) functions"
6230 #. See linux/arch/blackfin/kernel/fixed_code.S
6231 #. See http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:fixed-code
6233 #: build/C/man7/vdso.7:220
6235 "As this CPU lacks a memory management unit (MMU), it doesn't set up a vDSO "
6236 "in the normal sense. Instead, it maps at boot time a few raw functions into "
6237 "a fixed location in memory. User-space applications then call directly into "
6238 "that region. There is no provision for backward compatibility beyond "
6239 "sniffing raw opcodes, but as this is an embedded CPU, it can get away with "
6240 "things\\(emsome of the object formats it runs aren't even ELF based (they're "
6245 #: build/C/man7/vdso.7:223
6247 "For information on this code page, it's best to refer to the public "
6252 #: build/C/man7/vdso.7:225
6253 msgid "http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:fixed-code"
6257 #: build/C/man7/vdso.7:225
6259 msgid "ia64 (Itanium) functions"
6263 #: build/C/man7/vdso.7:236
6265 msgid "__kernel_sigtramp\tLINUX_2.5\n"
6269 #: build/C/man7/vdso.7:237
6271 msgid "__kernel_syscall_via_break\tLINUX_2.5\n"
6275 #: build/C/man7/vdso.7:238
6277 msgid "__kernel_syscall_via_epc\tLINUX_2.5\n"
6281 #: build/C/man7/vdso.7:257
6283 "The Itanium port is somewhat tricky. In addition to the vDSO above, it also "
6284 "has \"light-weight system calls\" (also known as \"fast syscalls\" or "
6285 "\"fsys\"). You can invoke these via the I<__kernel_syscall_via_epc> vDSO "
6286 "helper. The system calls listed here have the same semantics as if you "
6287 "called them directly via B<syscall>(2), so refer to the relevant "
6288 "documentation for each. The table below lists the functions available via "
6293 #: build/C/man7/vdso.7:262
6299 #: build/C/man7/vdso.7:264
6301 msgid "clock_gettime\n"
6305 #: build/C/man7/vdso.7:265
6311 #: build/C/man7/vdso.7:266
6317 #: build/C/man7/vdso.7:267
6323 #: build/C/man7/vdso.7:268
6325 msgid "gettimeofday\n"
6329 #: build/C/man7/vdso.7:269
6331 msgid "set_tid_address\n"
6335 #: build/C/man7/vdso.7:275
6337 msgid "parisc (hppa) functions"
6340 #. See linux/arch/parisc/kernel/syscall.S
6341 #. See linux/Documentation/parisc/registers
6343 #: build/C/man7/vdso.7:286
6345 "The parisc port has a code page full of utility functions called a gateway "
6346 "page. Rather than use the normal ELF auxiliary vector approach, it passes "
6347 "the address of the page to the process via the SR2 register. The "
6348 "permissions on the page are such that merely executing those addresses "
6349 "automatically executes with kernel privileges and not in user space. This "
6350 "is done to match the way HP-UX works."
6354 #: build/C/man7/vdso.7:291
6356 "Since it's just a raw page of code, there is no ELF information for doing "
6357 "symbol lookups or versioning. Simply call into the appropriate offset via "
6358 "the branch instruction, for example:"
6362 #: build/C/man7/vdso.7:293
6364 msgid " ble E<lt>offsetE<gt>(%sr2, %r0)\n"
6368 #: build/C/man7/vdso.7:298
6370 msgid "offset\tfunction\n"
6374 #: build/C/man7/vdso.7:300
6376 msgid "00b0\tlws_entry\n"
6380 #: build/C/man7/vdso.7:301
6382 msgid "00e0\tset_thread_pointer\n"
6386 #: build/C/man7/vdso.7:302
6388 msgid "0100\tlinux_gateway_entry (syscall)\n"
6392 #: build/C/man7/vdso.7:303
6394 msgid "0268\tsyscall_nosys\n"
6398 #: build/C/man7/vdso.7:304
6400 msgid "0274\ttracesys\n"
6404 #: build/C/man7/vdso.7:305
6406 msgid "0324\ttracesys_next\n"
6410 #: build/C/man7/vdso.7:306
6412 msgid "0368\ttracesys_exit\n"
6416 #: build/C/man7/vdso.7:307
6418 msgid "03a0\ttracesys_sigexit\n"
6422 #: build/C/man7/vdso.7:308
6424 msgid "03b8\tlws_start\n"
6428 #: build/C/man7/vdso.7:309
6430 msgid "03dc\tlws_exit_nosys\n"
6434 #: build/C/man7/vdso.7:310
6436 msgid "03e0\tlws_exit\n"
6440 #: build/C/man7/vdso.7:311
6442 msgid "03e4\tlws_compare_and_swap64\n"
6446 #: build/C/man7/vdso.7:312
6448 msgid "03e8\tlws_compare_and_swap\n"
6452 #: build/C/man7/vdso.7:313
6454 msgid "0404\tcas_wouldblock\n"
6458 #: build/C/man7/vdso.7:314
6460 msgid "0410\tcas_action\n"
6464 #: build/C/man7/vdso.7:320
6466 msgid "ppc/32 functions"
6469 #. See linux/arch/powerpc/kernel/vdso32/vdso32.lds.S
6471 #: build/C/man7/vdso.7:327
6473 "The table below lists the symbols exported by the vDSO. The functions "
6474 "marked with a I<*> are available only when the kernel is a PowerPC64 "
6479 #: build/C/man7/vdso.7:334 build/C/man7/vdso.7:360
6481 msgid "__kernel_clock_getres\tLINUX_2.6.15\n"
6485 #: build/C/man7/vdso.7:335 build/C/man7/vdso.7:361
6487 msgid "__kernel_clock_gettime\tLINUX_2.6.15\n"
6491 #: build/C/man7/vdso.7:336 build/C/man7/vdso.7:362
6493 msgid "__kernel_datapage_offset\tLINUX_2.6.15\n"
6497 #: build/C/man7/vdso.7:337 build/C/man7/vdso.7:363
6499 msgid "__kernel_get_syscall_map\tLINUX_2.6.15\n"
6503 #: build/C/man7/vdso.7:338 build/C/man7/vdso.7:364
6505 msgid "__kernel_get_tbfreq\tLINUX_2.6.15\n"
6509 #: build/C/man7/vdso.7:339
6511 msgid "__kernel_getcpu I<*>\tLINUX_2.6.15\n"
6515 #: build/C/man7/vdso.7:340 build/C/man7/vdso.7:366
6517 msgid "__kernel_gettimeofday\tLINUX_2.6.15\n"
6521 #: build/C/man7/vdso.7:341
6523 msgid "__kernel_sigtramp_rt32\tLINUX_2.6.15\n"
6527 #: build/C/man7/vdso.7:342
6529 msgid "__kernel_sigtramp32\tLINUX_2.6.15\n"
6533 #: build/C/man7/vdso.7:343 build/C/man7/vdso.7:368
6535 msgid "__kernel_sync_dicache\tLINUX_2.6.15\n"
6539 #: build/C/man7/vdso.7:344 build/C/man7/vdso.7:369
6541 msgid "__kernel_sync_dicache_p5\tLINUX_2.6.15\n"
6545 #: build/C/man7/vdso.7:350
6547 msgid "ppc/64 functions"
6551 #: build/C/man7/vdso.7:365
6553 msgid "__kernel_getcpu\tLINUX_2.6.15\n"
6557 #: build/C/man7/vdso.7:367
6559 msgid "__kernel_sigtramp_rt64\tLINUX_2.6.15\n"
6563 #: build/C/man7/vdso.7:375
6565 msgid "s390 functions"
6569 #: build/C/man7/vdso.7:385 build/C/man7/vdso.7:403
6571 msgid "__kernel_clock_getres\tLINUX_2.6.29\n"
6575 #: build/C/man7/vdso.7:386 build/C/man7/vdso.7:404
6577 msgid "__kernel_clock_gettime\tLINUX_2.6.29\n"
6581 #: build/C/man7/vdso.7:387 build/C/man7/vdso.7:405
6583 msgid "__kernel_gettimeofday\tLINUX_2.6.29\n"
6587 #: build/C/man7/vdso.7:393
6589 msgid "s390x functions"
6593 #: build/C/man7/vdso.7:411
6595 msgid "sh (SuperH) functions"
6599 #: build/C/man7/vdso.7:421
6601 msgid "__kernel_rt_sigreturn\tLINUX_2.6\n"
6605 #: build/C/man7/vdso.7:422
6607 msgid "__kernel_sigreturn\tLINUX_2.6\n"
6611 #: build/C/man7/vdso.7:423
6613 msgid "__kernel_vsyscall\tLINUX_2.6\n"
6617 #: build/C/man7/vdso.7:429
6619 msgid "i386 functions"
6623 #: build/C/man7/vdso.7:439
6625 msgid "__kernel_sigreturn\tLINUX_2.5\n"
6629 #: build/C/man7/vdso.7:440
6631 msgid "__kernel_rt_sigreturn\tLINUX_2.5\n"
6635 #: build/C/man7/vdso.7:441
6637 msgid "__kernel_vsyscall\tLINUX_2.5\n"
6640 #. Added in 7a59ed415f5b57469e22e41fc4188d5399e0b194 and updated
6641 #. in 37c975545ec63320789962bf307f000f08fabd48.
6643 #: build/C/man7/vdso.7:444
6645 msgid "__vdso_clock_gettime\tLINUX_2.6 (exported since Linux 3.15)\n"
6649 #: build/C/man7/vdso.7:445
6651 msgid "__vdso_gettimeofday\tLINUX_2.6 (exported since Linux 3.15)\n"
6655 #: build/C/man7/vdso.7:446
6657 msgid "__vdso_time\tLINUX_2.6 (exported since Linux 3.15)\n"
6661 #: build/C/man7/vdso.7:452
6663 msgid "x86_64 functions"
6666 #. See linux/arch/x86/vdso/vdso.lds.S
6668 #: build/C/man7/vdso.7:457
6670 "The table below lists the symbols exported by the vDSO. All of these "
6671 "symbols are also available without the \"__vdso_\" prefix, but you should "
6672 "ignore those and stick to the names below."
6676 #: build/C/man7/vdso.7:464 build/C/man7/vdso.7:483
6678 msgid "__vdso_clock_gettime\tLINUX_2.6\n"
6682 #: build/C/man7/vdso.7:465 build/C/man7/vdso.7:484
6684 msgid "__vdso_getcpu\tLINUX_2.6\n"
6688 #: build/C/man7/vdso.7:466 build/C/man7/vdso.7:485
6690 msgid "__vdso_gettimeofday\tLINUX_2.6\n"
6694 #: build/C/man7/vdso.7:467 build/C/man7/vdso.7:486
6696 msgid "__vdso_time\tLINUX_2.6\n"
6700 #: build/C/man7/vdso.7:473
6702 msgid "x86/x32 functions"
6706 #: build/C/man7/vdso.7:492
6712 #: build/C/man7/vdso.7:499
6714 "The vDSO was originally just a single function\\(emthe vsyscall. In older "
6715 "kernels, you might see that name in a process's memory map rather than "
6716 "\"vdso\". Over time, people realized that this mechanism was a great way to "
6717 "pass more functionality to user space, so it was reconceived as a vDSO in "
6718 "the current format."
6722 #: build/C/man7/vdso.7:503
6723 msgid "B<syscalls>(2), B<getauxval>(3), B<proc>(5)"
6727 #: build/C/man7/vdso.7:505
6728 msgid "The documents, examples, and source code in the Linux source code tree:"
6732 #: build/C/man7/vdso.7:511
6735 "Documentation/ABI/stable/vdso\n"
6736 "Documentation/ia64/fsys.txt\n"
6737 "Documentation/vDSO/* (includes examples of using the vDSO)\n"
6741 #: build/C/man7/vdso.7:513
6743 msgid "find arch/ -iname '*vdso*' -o -iname '*gate*'\n"
6747 #: build/C/man3/wcstombs.3:16
6753 #: build/C/man3/wcstombs.3:19
6754 msgid "wcstombs - convert a wide-character string to a multibyte string"
6758 #: build/C/man3/wcstombs.3:24
6761 "B<size_t wcstombs(char *>I<dest>B<, const wchar_t *>I<src>B<, size_t "
6766 #: build/C/man3/wcstombs.3:42
6768 "If I<dest> is not NULL, the B<wcstombs>() function converts the "
6769 "wide-character string I<src> to a multibyte string starting at I<dest>. At "
6770 "most I<n> bytes are written to I<dest>. The conversion starts in the "
6771 "initial state. The conversion can stop for three reasons:"
6775 #: build/C/man3/wcstombs.3:48
6777 "1. A wide character has been encountered that can not be represented as a "
6778 "multibyte sequence (according to the current locale). In this case, "
6779 "I<(size_t)\\ -1> is returned."
6783 #: build/C/man3/wcstombs.3:53
6785 "2. The length limit forces a stop. In this case, the number of bytes "
6786 "written to I<dest> is returned, but the shift state at this point is lost."
6790 #: build/C/man3/wcstombs.3:60
6792 "3. The wide-character string has been completely converted, including the "
6793 "terminating null wide character (L\\(aq\\e0\\(aq). In this case, the "
6794 "conversion ends in the initial state. The number of bytes written to "
6795 "I<dest>, excluding the terminating null byte (\\(aq\\e0\\(aq), is returned."
6799 #: build/C/man3/wcstombs.3:66
6801 "The programmer must ensure that there is room for at least I<n> bytes at "
6806 #: build/C/man3/wcstombs.3:74
6808 "If I<dest> is NULL, I<n> is ignored, and the conversion proceeds as above, "
6809 "except that the converted bytes are not written out to memory, and no length "
6814 #: build/C/man3/wcstombs.3:79
6816 "In order to avoid the case 2 above, the programmer should make sure I<n> is "
6817 "greater than or equal to I<wcstombs(NULL,src,0)+1>."
6821 #: build/C/man3/wcstombs.3:89
6823 "The B<wcstombs>() function returns the number of bytes that make up the "
6824 "converted part of a multibyte sequence, not including the terminating null "
6825 "byte. If a wide character was encountered which could not be converted, "
6826 "I<(size_t)\\ -1> is returned."
6830 #: build/C/man3/wcstombs.3:98
6832 "The behavior of B<wcstombs>() depends on the B<LC_CTYPE> category of the "
6837 #: build/C/man3/wcstombs.3:103
6839 "The function B<wcsrtombs>(3) provides a thread safe interface to the same "
6844 #: build/C/man3/wcstombs.3:108
6845 msgid "B<mblen>(3), B<mbtowc>(3), B<mbstowcs>(3), B<wcsrtombs>(3) B<wctom>(3)"
6849 #: build/C/man3/wctomb.3:16
6855 #: build/C/man3/wctomb.3:19
6856 msgid "wctomb - convert a wide character to a multibyte sequence"
6860 #: build/C/man3/wctomb.3:24
6862 msgid "B<int wctomb(char *>I<s>B<, wchar_t >I<wc>B<);>\n"
6866 #: build/C/man3/wctomb.3:45
6868 "If I<s> is not NULL, the B<wctomb>() function converts the wide character "
6869 "I<wc> to its multibyte representation and stores it at the beginning of the "
6870 "character array pointed to by I<s>. It updates the shift state, which is "
6871 "stored in a static anonymous variable known only to the B<wctomb>() "
6872 "function, and returns the length of said multibyte representation, that is, "
6873 "the number of bytes written at I<s>."
6877 #: build/C/man3/wctomb.3:51
6879 "The programmer must ensure that there is room for at least B<MB_CUR_MAX> "
6883 #. The Dinkumware doc and the Single UNIX specification say this, but
6884 #. glibc doesn't implement this.
6886 #: build/C/man3/wctomb.3:63
6888 "If I<s> is NULL, the B<wctomb>() function resets the shift state, known "
6889 "only to this function, to the initial state, and returns nonzero if the "
6890 "encoding has nontrivial shift state, or zero if the encoding is stateless."
6894 #: build/C/man3/wctomb.3:77
6896 "If I<s> is not NULL, the B<wctomb>() function returns the number of bytes "
6897 "that have been written to the byte array at I<s>. If I<wc> can not be "
6898 "represented as a multibyte sequence (according to the current locale), -1 is "
6903 #: build/C/man3/wctomb.3:84
6905 "If I<s> is NULL, the B<wctomb>() function returns nonzero if the encoding "
6906 "has nontrivial shift state, or zero if the encoding is stateless."
6910 #: build/C/man3/wctomb.3:89
6911 msgid "The B<wctomb>() function is not thread-safe."
6915 #: build/C/man3/wctomb.3:98
6917 "The behavior of B<wctomb>() depends on the B<LC_CTYPE> category of the "
6922 #: build/C/man3/wctomb.3:103
6924 "The function B<wcrtomb>(3) provides a better interface to the same "
6929 #: build/C/man3/wctomb.3:109
6931 "B<MB_CUR_MAX>(3), B<mblen>(3), B<mbstowcs>(3), B<mbtowc>(3), B<wcrtomb>(3), "