msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2012-05-28 07:17+0900\n"
+"POT-Creation-Date: 2015-02-04 23:33+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: TH
-#: build/C/man3/MB_CUR_MAX.3:15
+#: build/C/man3/MB_CUR_MAX.3:17
#, no-wrap
msgid "MB_CUR_MAX"
msgstr ""
#. type: TH
-#: build/C/man3/MB_CUR_MAX.3:15 build/C/man3/MB_LEN_MAX.3:15
+#: build/C/man3/MB_CUR_MAX.3:17 build/C/man3/MB_LEN_MAX.3:17
#, no-wrap
msgid "1999-07-04"
msgstr ""
#. type: TH
-#: build/C/man3/MB_CUR_MAX.3:15 build/C/man3/MB_LEN_MAX.3:15 build/C/man2/_exit.2:29 build/C/man3/atexit.3:31 build/C/man3/clearenv.3:24 build/C/man3/exit.3:23 build/C/man3/getloadavg.3:32 build/C/man3/strtod.3:43
+#: 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 build/C/man2/getrandom.2:27
#, no-wrap
msgid "Linux"
msgstr ""
#. type: TH
-#: build/C/man3/MB_CUR_MAX.3:15 build/C/man3/MB_LEN_MAX.3:15 build/C/man2/_exit.2:29 build/C/man3/a64l.3:6 build/C/man3/atexit.3:31 build/C/man3/atof.3:29 build/C/man3/atoi.3:31 build/C/man3/canonicalize_file_name.3:5 build/C/man3/cfree.3:23 build/C/man3/clearenv.3:24 build/C/man3/drand48.3:28 build/C/man3/drand48_r.3:25 build/C/man3/ecvt.3:30 build/C/man3/ecvt_r.3:28 build/C/man3/exit.3:23 build/C/man3/gcvt.3:28 build/C/man3/getenv.3:31 build/C/man3/getloadavg.3:32 build/C/man3/getsubopt.3:23 build/C/man3/malloc.3:28 build/C/man3/mblen.3:14 build/C/man3/mbstowcs.3:14 build/C/man3/mbtowc.3:14 build/C/man3/mkdtemp.3:24 build/C/man3/mkstemp.3:33 build/C/man3/mktemp.3:32 build/C/man3/on_exit.3:29 build/C/man3/putenv.3:34 build/C/man3/qecvt.3:26 build/C/man3/rand.3:39 build/C/man3/random.3:31 build/C/man3/random_r.3:24 build/C/man3/rpmatch.3:27 build/C/man3/setenv.3:35 build/C/man3/strtod.3:43 build/C/man3/strtoimax.3:23 build/C/man3/strtol.3:29 build/C/man3/strtoul.3:31 build/C/man3/system.3:28 build/C/man3/wcstombs.3:14 build/C/man3/wctomb.3:14
+#: 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 build/C/man2/getrandom.2:27
#, no-wrap
msgid "Linux Programmer's Manual"
msgstr ""
#. type: SH
-#: build/C/man3/MB_CUR_MAX.3:16 build/C/man3/MB_LEN_MAX.3:16 build/C/man2/_exit.2:30 build/C/man3/a64l.3:7 build/C/man3/atexit.3:32 build/C/man3/atof.3:30 build/C/man3/atoi.3:32 build/C/man3/canonicalize_file_name.3:6 build/C/man3/cfree.3:24 build/C/man3/clearenv.3:25 build/C/man3/drand48.3:29 build/C/man3/drand48_r.3:26 build/C/man3/ecvt.3:31 build/C/man3/ecvt_r.3:29 build/C/man3/exit.3:24 build/C/man3/gcvt.3:29 build/C/man3/getenv.3:32 build/C/man3/getloadavg.3:33 build/C/man3/getsubopt.3:24 build/C/man3/malloc.3:29 build/C/man3/mblen.3:15 build/C/man3/mbstowcs.3:15 build/C/man3/mbtowc.3:15 build/C/man3/mkdtemp.3:25 build/C/man3/mkstemp.3:34 build/C/man3/mktemp.3:33 build/C/man3/on_exit.3:30 build/C/man3/putenv.3:35 build/C/man3/qecvt.3:27 build/C/man3/rand.3:40 build/C/man3/random.3:32 build/C/man3/random_r.3:25 build/C/man3/rpmatch.3:28 build/C/man3/setenv.3:36 build/C/man3/strtod.3:44 build/C/man3/strtoimax.3:24 build/C/man3/strtol.3:30 build/C/man3/strtoul.3:32 build/C/man3/system.3:29 build/C/man3/wcstombs.3:15 build/C/man3/wctomb.3:15
+#: 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 build/C/man2/getrandom.2:28
#, no-wrap
msgid "NAME"
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_CUR_MAX.3:18
+#: build/C/man3/MB_CUR_MAX.3:20
msgid "MB_CUR_MAX - maximum length of a multibyte character in the current locale"
msgstr ""
#. type: SH
-#: build/C/man3/MB_CUR_MAX.3:18 build/C/man3/MB_LEN_MAX.3:18 build/C/man2/_exit.2:32 build/C/man3/a64l.3:9 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:8 build/C/man3/cfree.3:26 build/C/man3/clearenv.3:27 build/C/man3/drand48.3:32 build/C/man3/drand48_r.3:30 build/C/man3/ecvt.3:33 build/C/man3/ecvt_r.3:31 build/C/man3/exit.3:26 build/C/man3/gcvt.3:31 build/C/man3/getenv.3:34 build/C/man3/getloadavg.3:35 build/C/man3/getsubopt.3:26 build/C/man3/malloc.3:31 build/C/man3/mblen.3:17 build/C/man3/mbstowcs.3:17 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:28 build/C/man3/rpmatch.3:30 build/C/man3/setenv.3:38 build/C/man3/strtod.3:46 build/C/man3/strtoimax.3:26 build/C/man3/strtol.3:32 build/C/man3/strtoul.3:34 build/C/man3/system.3:31 build/C/man3/wcstombs.3:17 build/C/man3/wctomb.3:17
+#: 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 build/C/man2/getrandom.2:30
#, no-wrap
msgid "SYNOPSIS"
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_CUR_MAX.3:21 build/C/man3/atexit.3:37 build/C/man3/atof.3:35 build/C/man3/atoi.3:37 build/C/man3/cfree.3:30 build/C/man3/clearenv.3:30 build/C/man3/drand48.3:35 build/C/man3/drand48_r.3:33 build/C/man3/ecvt_r.3:34 build/C/man3/exit.3:29 build/C/man3/gcvt.3:34 build/C/man3/getenv.3:37 build/C/man3/malloc.3:34 build/C/man3/mblen.3:20 build/C/man3/mbstowcs.3:20 build/C/man3/mbtowc.3:20 build/C/man3/mkdtemp.3:30 build/C/man3/mkstemp.3:39 build/C/man3/mktemp.3:38 build/C/man3/on_exit.3:35 build/C/man3/putenv.3:40 build/C/man3/rand.3:45 build/C/man3/random.3:37 build/C/man3/random_r.3:31 build/C/man3/rpmatch.3:33 build/C/man3/setenv.3:41 build/C/man3/strtol.3:35 build/C/man3/strtoul.3:37 build/C/man3/system.3:34 build/C/man3/wcstombs.3:20 build/C/man3/wctomb.3:20
+#: 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
#, no-wrap
msgid "B<#include E<lt>stdlib.hE<gt>>\n"
msgstr ""
#. type: SH
-#: build/C/man3/MB_CUR_MAX.3:22 build/C/man3/MB_LEN_MAX.3:22 build/C/man2/_exit.2:56 build/C/man3/a64l.3:30 build/C/man3/atexit.3:40 build/C/man3/atof.3:38 build/C/man3/atoi.3:62 build/C/man3/canonicalize_file_name.3:14 build/C/man3/cfree.3:51 build/C/man3/clearenv.3:41 build/C/man3/drand48.3:73 build/C/man3/drand48_r.3:81 build/C/man3/ecvt.3:67 build/C/man3/ecvt_r.3:62 build/C/man3/exit.3:32 build/C/man3/gcvt.3:62 build/C/man3/getenv.3:40 build/C/man3/getloadavg.3:42 build/C/man3/getsubopt.3:48 build/C/man3/malloc.3:40 build/C/man3/mblen.3:23 build/C/man3/mbstowcs.3:23 build/C/man3/mbtowc.3:23 build/C/man3/mkdtemp.3:53 build/C/man3/mkstemp.3:74 build/C/man3/mktemp.3:64 build/C/man3/on_exit.3:46 build/C/man3/putenv.3:52 build/C/man3/qecvt.3:51 build/C/man3/rand.3:60 build/C/man3/random.3:62 build/C/man3/random_r.3:56 build/C/man3/rpmatch.3:44 build/C/man3/setenv.3:59 build/C/man3/strtod.3:71 build/C/man3/strtoimax.3:34 build/C/man3/strtol.3:57 build/C/man3/strtoul.3:60 build/C/man3/system.3:37 build/C/man3/wcstombs.3:23 build/C/man3/wctomb.3:23
+#: 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 build/C/man2/getrandom.2:34
#, no-wrap
msgid "DESCRIPTION"
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_CUR_MAX.3:29
+#: build/C/man3/MB_CUR_MAX.3:31
msgid ""
"The B<MB_CUR_MAX> macro defines an integer expression giving the maximum "
"number of bytes needed to represent a single wide character in the current "
msgstr ""
#. type: SH
-#: build/C/man3/MB_CUR_MAX.3:29 build/C/man3/MB_LEN_MAX.3:27 build/C/man2/_exit.2:79 build/C/man3/atexit.3:66 build/C/man3/atof.3:53 build/C/man3/atoi.3:89 build/C/man3/cfree.3:95 build/C/man3/clearenv.3:48 build/C/man3/drand48_r.3:94 build/C/man3/ecvt.3:97 build/C/man3/ecvt_r.3:84 build/C/man3/exit.3:80 build/C/man3/gcvt.3:70 build/C/man3/getenv.3:49 build/C/man3/getloadavg.3:53 build/C/man3/getsubopt.3:108 build/C/man3/malloc.3:127 build/C/man3/mblen.3:58 build/C/man3/mbstowcs.3:58 build/C/man3/mbtowc.3:64 build/C/man3/mkdtemp.3:66 build/C/man3/mkstemp.3:136 build/C/man3/mktemp.3:75 build/C/man3/on_exit.3:67 build/C/man3/putenv.3:65 build/C/man3/rand.3:116 build/C/man3/random.3:116 build/C/man3/random_r.3:98 build/C/man3/rpmatch.3:64 build/C/man3/setenv.3:84 build/C/man3/strtod.3:126 build/C/man3/strtoimax.3:44 build/C/man3/strtol.3:99 build/C/man3/strtoul.3:108 build/C/man3/system.3:52 build/C/man3/wcstombs.3:59 build/C/man3/wctomb.3:50
+#: 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 build/C/man2/getrandom.2:123
#, no-wrap
msgid "RETURN VALUE"
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_CUR_MAX.3:33
+#: build/C/man3/MB_CUR_MAX.3:35
msgid ""
"An integer in the range [1, B<MB_LEN_MAX>]. The value 1 denotes traditional "
"8-bit encoded characters."
msgstr ""
#. type: SH
-#: build/C/man3/MB_CUR_MAX.3:33 build/C/man3/MB_LEN_MAX.3:29 build/C/man2/_exit.2:81 build/C/man3/a64l.3:59 build/C/man3/atexit.3:71 build/C/man3/atof.3:55 build/C/man3/atoi.3:91 build/C/man3/canonicalize_file_name.3:19 build/C/man3/cfree.3:111 build/C/man3/clearenv.3:58 build/C/man3/drand48.3:202 build/C/man3/drand48_r.3:96 build/C/man3/ecvt.3:108 build/C/man3/ecvt_r.3:86 build/C/man3/exit.3:84 build/C/man3/gcvt.3:75 build/C/man3/getenv.3:54 build/C/man3/getloadavg.3:63 build/C/man3/getsubopt.3:127 build/C/man3/malloc.3:166 build/C/man3/mblen.3:68 build/C/man3/mbstowcs.3:68 build/C/man3/mbtowc.3:76 build/C/man3/mkdtemp.3:84 build/C/man3/mkstemp.3:176 build/C/man3/mktemp.3:88 build/C/man3/on_exit.3:72 build/C/man3/putenv.3:74 build/C/man3/qecvt.3:70 build/C/man3/rand.3:127 build/C/man3/random.3:135 build/C/man3/random_r.3:123 build/C/man3/rpmatch.3:85 build/C/man3/setenv.3:107 build/C/man3/strtod.3:158 build/C/man3/strtoimax.3:57 build/C/man3/strtol.3:137 build/C/man3/strtoul.3:140 build/C/man3/system.3:76 build/C/man3/wcstombs.3:68 build/C/man3/wctomb.3:64
+#: 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 build/C/man2/getrandom.2:171
#, no-wrap
msgid "CONFORMING TO"
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_CUR_MAX.3:35 build/C/man3/MB_LEN_MAX.3:31 build/C/man3/strtoimax.3:59
+#: build/C/man3/MB_CUR_MAX.3:37 build/C/man3/MB_LEN_MAX.3:33 build/C/man3/strtoimax.3:71
msgid "C99, POSIX.1-2001."
msgstr ""
#. type: SH
-#: build/C/man3/MB_CUR_MAX.3:35 build/C/man3/MB_LEN_MAX.3:42 build/C/man2/_exit.2:124 build/C/man3/a64l.3:81 build/C/man3/atexit.3:156 build/C/man3/atof.3:57 build/C/man3/atoi.3:111 build/C/man3/canonicalize_file_name.3:21 build/C/man3/cfree.3:116 build/C/man3/clearenv.3:95 build/C/man3/drand48.3:208 build/C/man3/drand48_r.3:98 build/C/man3/ecvt.3:126 build/C/man3/ecvt_r.3:93 build/C/man3/exit.3:165 build/C/man3/gcvt.3:84 build/C/man3/getenv.3:77 build/C/man3/getloadavg.3:67 build/C/man3/getsubopt.3:224 build/C/man3/malloc.3:257 build/C/man3/mblen.3:82 build/C/man3/mbstowcs.3:82 build/C/man3/mbtowc.3:91 build/C/man3/mkdtemp.3:89 build/C/man3/mkstemp.3:211 build/C/man3/mktemp.3:111 build/C/man3/on_exit.3:79 build/C/man3/putenv.3:114 build/C/man3/qecvt.3:81 build/C/man3/rand.3:215 build/C/man3/random.3:163 build/C/man3/random_r.3:127 build/C/man3/rpmatch.3:127 build/C/man3/setenv.3:130 build/C/man3/strtod.3:177 build/C/man3/strtoimax.3:59 build/C/man3/strtol.3:260 build/C/man3/strtoul.3:188 build/C/man3/system.3:151 build/C/man3/wcstombs.3:82 build/C/man3/wctomb.3:79
+#: 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 build/C/man2/getrandom.2:326
#, no-wrap
msgid "SEE ALSO"
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_CUR_MAX.3:42
+#: build/C/man3/MB_CUR_MAX.3:44
msgid ""
"B<MB_LEN_MAX>(3), B<mblen>(3), B<mbstowcs>(3), B<mbtowc>(3), B<wcstombs>(3), "
"B<wctomb>(3)"
msgstr ""
#. type: SH
-#: build/C/man3/MB_CUR_MAX.3:42 build/C/man3/MB_LEN_MAX.3:44 build/C/man2/_exit.2:136 build/C/man3/a64l.3:85 build/C/man3/atexit.3:160 build/C/man3/atof.3:63 build/C/man3/atoi.3:116 build/C/man3/canonicalize_file_name.3:23 build/C/man3/cfree.3:118 build/C/man3/clearenv.3:101 build/C/man3/drand48.3:211 build/C/man3/drand48_r.3:102 build/C/man3/ecvt.3:132 build/C/man3/ecvt_r.3:97 build/C/man3/exit.3:172 build/C/man3/gcvt.3:88 build/C/man3/getenv.3:83 build/C/man3/getloadavg.3:70 build/C/man3/getsubopt.3:226 build/C/man3/malloc.3:279 build/C/man3/mblen.3:84 build/C/man3/mbstowcs.3:85 build/C/man3/mbtowc.3:95 build/C/man3/mkdtemp.3:96 build/C/man3/mkstemp.3:217 build/C/man3/mktemp.3:116 build/C/man3/on_exit.3:83 build/C/man3/putenv.3:120 build/C/man3/qecvt.3:86 build/C/man3/rand.3:218 build/C/man3/random.3:168 build/C/man3/random_r.3:131 build/C/man3/rpmatch.3:133 build/C/man3/setenv.3:135 build/C/man3/strtod.3:183 build/C/man3/strtoimax.3:65 build/C/man3/strtol.3:266 build/C/man3/strtoul.3:194 build/C/man3/system.3:156 build/C/man3/wcstombs.3:85 build/C/man3/wctomb.3:83
+#: build/C/man3/MB_CUR_MAX.3:44 build/C/man3/MB_LEN_MAX.3:46 build/C/man2/_exit.2:136 build/C/man3/a64l.3:97 build/C/man3/atexit.3:165 build/C/man3/atof.3:73 build/C/man3/atoi.3:124 build/C/man3/canonicalize_file_name.3:78 build/C/man3/cfree.3:119 build/C/man3/clearenv.3:102 build/C/man3/drand48.3:265 build/C/man3/drand48_r.3:118 build/C/man3/ecvt.3:141 build/C/man3/ecvt_r.3:99 build/C/man3/exit.3:190 build/C/man3/gcvt.3:90 build/C/man3/getauxval.3:236 build/C/man3/getenv.3:137 build/C/man3/getloadavg.3:77 build/C/man3/getsubopt.3:234 build/C/man3/malloc.3:285 build/C/man3/mblen.3:108 build/C/man3/mbstowcs.3:222 build/C/man3/mbtowc.3:135 build/C/man3/mkdtemp.3:103 build/C/man3/mkstemp.3:248 build/C/man3/mktemp.3:123 build/C/man3/on_exit.3:91 build/C/man3/putenv.3:124 build/C/man3/qecvt.3:112 build/C/man3/rand.3:220 build/C/man3/random.3:203 build/C/man3/random_r.3:145 build/C/man3/rpmatch.3:150 build/C/man3/setenv.3:158 build/C/man3/strtod.3:214 build/C/man3/strtoimax.3:77 build/C/man3/strtol.3:303 build/C/man3/strtoul.3:231 build/C/man3/system.3:215 build/C/man7/vdso.7:515 build/C/man3/wcstombs.3:109 build/C/man3/wctomb.3:110 build/C/man2/getrandom.2:330
#, no-wrap
msgid "COLOPHON"
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_CUR_MAX.3:49 build/C/man3/MB_LEN_MAX.3:51 build/C/man2/_exit.2:143 build/C/man3/a64l.3:92 build/C/man3/atexit.3:167 build/C/man3/atof.3:70 build/C/man3/atoi.3:123 build/C/man3/canonicalize_file_name.3:30 build/C/man3/cfree.3:125 build/C/man3/clearenv.3:108 build/C/man3/drand48.3:218 build/C/man3/drand48_r.3:109 build/C/man3/ecvt.3:139 build/C/man3/ecvt_r.3:104 build/C/man3/exit.3:179 build/C/man3/gcvt.3:95 build/C/man3/getenv.3:90 build/C/man3/getloadavg.3:77 build/C/man3/getsubopt.3:233 build/C/man3/malloc.3:286 build/C/man3/mblen.3:91 build/C/man3/mbstowcs.3:92 build/C/man3/mbtowc.3:102 build/C/man3/mkdtemp.3:103 build/C/man3/mkstemp.3:224 build/C/man3/mktemp.3:123 build/C/man3/on_exit.3:90 build/C/man3/putenv.3:127 build/C/man3/qecvt.3:93 build/C/man3/rand.3:225 build/C/man3/random.3:175 build/C/man3/random_r.3:138 build/C/man3/rpmatch.3:140 build/C/man3/setenv.3:142 build/C/man3/strtod.3:190 build/C/man3/strtoimax.3:72 build/C/man3/strtol.3:273 build/C/man3/strtoul.3:201 build/C/man3/system.3:163 build/C/man3/wcstombs.3:92 build/C/man3/wctomb.3:90
+#: build/C/man3/MB_CUR_MAX.3:52 build/C/man3/MB_LEN_MAX.3:54 build/C/man2/_exit.2:144 build/C/man3/a64l.3:105 build/C/man3/atexit.3:173 build/C/man3/atof.3:81 build/C/man3/atoi.3:132 build/C/man3/canonicalize_file_name.3:86 build/C/man3/cfree.3:127 build/C/man3/clearenv.3:110 build/C/man3/drand48.3:273 build/C/man3/drand48_r.3:126 build/C/man3/ecvt.3:149 build/C/man3/ecvt_r.3:107 build/C/man3/exit.3:198 build/C/man3/gcvt.3:98 build/C/man3/getauxval.3:244 build/C/man3/getenv.3:145 build/C/man3/getloadavg.3:85 build/C/man3/getsubopt.3:242 build/C/man3/malloc.3:293 build/C/man3/mblen.3:116 build/C/man3/mbstowcs.3:230 build/C/man3/mbtowc.3:143 build/C/man3/mkdtemp.3:111 build/C/man3/mkstemp.3:256 build/C/man3/mktemp.3:131 build/C/man3/on_exit.3:99 build/C/man3/putenv.3:132 build/C/man3/qecvt.3:120 build/C/man3/rand.3:228 build/C/man3/random.3:211 build/C/man3/random_r.3:153 build/C/man3/rpmatch.3:158 build/C/man3/setenv.3:166 build/C/man3/strtod.3:222 build/C/man3/strtoimax.3:85 build/C/man3/strtol.3:311 build/C/man3/strtoul.3:239 build/C/man3/system.3:223 build/C/man7/vdso.7:523 build/C/man3/wcstombs.3:117 build/C/man3/wctomb.3:118 build/C/man2/getrandom.2:338
msgid ""
-"This page is part of release 3.41 of the Linux I<man-pages> project. A "
-"description of the project, and information about reporting bugs, can be "
-"found at http://www.kernel.org/doc/man-pages/."
+"This page is part of release 3.79 of the Linux I<man-pages> project. A "
+"description of the project, information about reporting bugs, and the latest "
+"version of this page, can be found at "
+"\\%http://www.kernel.org/doc/man-pages/."
msgstr ""
#. type: TH
-#: build/C/man3/MB_LEN_MAX.3:15
+#: build/C/man3/MB_LEN_MAX.3:17
#, no-wrap
msgid "MB_LEN_MAX"
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_LEN_MAX.3:18
+#: build/C/man3/MB_LEN_MAX.3:20
msgid "MB_LEN_MAX - maximum multibyte length of a character across all locales"
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_LEN_MAX.3:21
+#: build/C/man3/MB_LEN_MAX.3:23
#, no-wrap
msgid "B<#include E<lt>limits.hE<gt>>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_LEN_MAX.3:27
+#: build/C/man3/MB_LEN_MAX.3:29
msgid ""
"The B<MB_LEN_MAX> macro is the upper bound for the number of bytes needed to "
"represent a single wide character, across all locales."
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_LEN_MAX.3:29
+#: build/C/man3/MB_LEN_MAX.3:31
msgid "A constant integer greater than zero."
msgstr ""
#. type: SH
-#: build/C/man3/MB_LEN_MAX.3:31 build/C/man2/_exit.2:86 build/C/man3/a64l.3:61 build/C/man3/atexit.3:73 build/C/man3/atoi.3:101 build/C/man3/clearenv.3:72 build/C/man3/drand48.3:204 build/C/man3/ecvt.3:120 build/C/man3/ecvt_r.3:88 build/C/man3/exit.3:86 build/C/man3/getenv.3:56 build/C/man3/getsubopt.3:129 build/C/man3/malloc.3:168 build/C/man3/mblen.3:70 build/C/man3/mbstowcs.3:70 build/C/man3/mbtowc.3:78 build/C/man3/mkstemp.3:189 build/C/man3/mktemp.3:92 build/C/man3/putenv.3:76 build/C/man3/qecvt.3:76 build/C/man3/rand.3:139 build/C/man3/random.3:137 build/C/man3/setenv.3:109 build/C/man3/strtod.3:163 build/C/man3/strtol.3:142 build/C/man3/strtoul.3:145 build/C/man3/system.3:78 build/C/man3/wcstombs.3:70 build/C/man3/wctomb.3:66
+#: 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 build/C/man2/getrandom.2:173
#, no-wrap
msgid "NOTES"
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_LEN_MAX.3:42
+#: build/C/man3/MB_LEN_MAX.3:44
msgid ""
"The entities B<MB_LEN_MAX> and I<sizeof(wchar_t)> are totally unrelated. In "
"glibc, B<MB_LEN_MAX> is typically 6 while I<sizeof(wchar_t)> is 4."
msgstr ""
#. type: Plain text
-#: build/C/man3/MB_LEN_MAX.3:44
+#: build/C/man3/MB_LEN_MAX.3:46
msgid "B<MB_CUR_MAX>(3)"
msgstr ""
msgstr ""
#. type: TH
-#: build/C/man2/_exit.2:29 build/C/man3/a64l.3:6 build/C/man3/atoi.3:31 build/C/man3/ecvt.3:30 build/C/man3/gcvt.3:28 build/C/man3/mktemp.3:32 build/C/man3/qecvt.3:26 build/C/man3/random.3:31 build/C/man3/strtod.3:43 build/C/man3/strtol.3:29
+#: build/C/man2/_exit.2:29 build/C/man2/getrandom.2:27
#, no-wrap
-msgid "2010-09-20"
+msgid "2015-01-22"
msgstr ""
#. type: Plain text
msgstr ""
#. type: Plain text
-#: build/C/man2/_exit.2:38 build/C/man3/a64l.3:11 build/C/man3/canonicalize_file_name.3:12 build/C/man3/ecvt.3:35 build/C/man3/getsubopt.3:28 build/C/man3/qecvt.3:31 build/C/man3/strtod.3:48
+#: 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
msgid "B<#include E<lt>stdlib.hE<gt>>"
msgstr ""
msgstr ""
#. type: Plain text
-#: build/C/man2/_exit.2:44 build/C/man3/a64l.3:19 build/C/man3/atoi.3:50 build/C/man3/cfree.3:47 build/C/man3/clearenv.3:37 build/C/man3/drand48.3:58 build/C/man3/drand48_r.3:66 build/C/man3/ecvt.3:45 build/C/man3/ecvt_r.3:51 build/C/man3/gcvt.3:41 build/C/man3/getsubopt.3:35 build/C/man3/mkdtemp.3:37 build/C/man3/mkstemp.3:52 build/C/man3/mktemp.3:45 build/C/man3/on_exit.3:42 build/C/man3/putenv.3:48 build/C/man3/qecvt.3:43 build/C/man3/rand.3:56 build/C/man3/random.3:50 build/C/man3/random_r.3:45 build/C/man3/rpmatch.3:40 build/C/man3/setenv.3:50 build/C/man3/strtod.3:58 build/C/man3/strtol.3:45 build/C/man3/strtoul.3:48
+#: 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
msgid "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
msgstr ""
msgstr ""
#. type: Plain text
-#: build/C/man2/_exit.2:51 build/C/man3/strtod.3:66
+#: build/C/man2/_exit.2:51 build/C/man3/strtod.3:68
msgid ""
"_XOPEN_SOURCE\\ E<gt>=\\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ "
"200112L;"
msgstr ""
#. type: Plain text
-#: build/C/man2/_exit.2:54 build/C/man3/atoi.3:60 build/C/man3/strtod.3:69 build/C/man3/strtol.3:55 build/C/man3/strtoul.3:58
+#: 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
msgid "or I<cc\\ -std=c99>"
msgstr ""
"B<_exit>(), is implementation-dependent."
msgstr ""
+#. type: SS
+#: build/C/man2/_exit.2:117
+#, no-wrap
+msgid "C library/kernel ABI differences"
+msgstr ""
+
#. type: Plain text
#: build/C/man2/_exit.2:124
msgid ""
msgstr ""
#. type: TH
-#: build/C/man3/a64l.3:6
+#: build/C/man3/a64l.3:9
#, no-wrap
msgid "A64L"
msgstr ""
+#. type: TH
+#: build/C/man3/a64l.3:9 build/C/man3/gcvt.3:30
+#, no-wrap
+msgid "2014-05-28"
+msgstr ""
+
#. type: Plain text
-#: build/C/man3/a64l.3:9
+#: build/C/man3/a64l.3:12
msgid "a64l, l64a - convert between long and base-64"
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:13
-msgid "B<long a64l(char *>I<str64>B<);>"
+#: build/C/man3/a64l.3:16
+msgid "B<long a64l(const char *>I<str64>B<);>"
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:15
+#: build/C/man3/a64l.3:18
msgid "B<char *l64a(long >I<value>B<);>"
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:23
+#: build/C/man3/a64l.3:26
msgid "B<a64l>(), B<l64a>():"
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:28 build/C/man3/ecvt.3:64
+#: build/C/man3/a64l.3:31 build/C/man3/ecvt.3:66
msgid ""
"_SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
"_XOPEN_SOURCE_EXTENDED"
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:45
+#: build/C/man3/a64l.3:48
msgid ""
"These functions provide a conversion between 32-bit long integers and "
"little-endian base-64 ASCII strings (of length zero to six). If the string "
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:47
+#: build/C/man3/a64l.3:50
msgid "The 64 digits in the base-64 system are:"
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:55
+#: build/C/man3/a64l.3:58
#, no-wrap
msgid ""
"\\&\\(aq.\\(aq\trepresents a 0\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:59
+#: build/C/man3/a64l.3:62
msgid "So 123 = 59*64^0 + 1*64^1 = \"v/\"."
msgstr ""
+#. type: SH
+#: 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
+#, no-wrap
+msgid "ATTRIBUTES"
+msgstr ""
+
+#. type: SS
+#: 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
+#, no-wrap
+msgid "Multithreading (see pthreads(7))"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/a64l.3:67
+msgid "The B<l64a>() function is not thread-safe."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/a64l.3:71
+msgid "The B<a64l>() function is thread-safe."
+msgstr ""
+
#. type: Plain text
-#: build/C/man3/a64l.3:61 build/C/man3/getsubopt.3:129
+#: build/C/man3/a64l.3:73 build/C/man3/getsubopt.3:136
msgid "POSIX.1-2001."
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:66
+#: build/C/man3/a64l.3:78
msgid ""
"The value returned by B<l64a>() may be a pointer to a static buffer, "
"possibly overwritten by later calls."
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:75
+#: build/C/man3/a64l.3:87
msgid ""
"The behavior of B<l64a>() is undefined when I<value> is negative. If "
"I<value> is zero, it returns an empty string."
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:78
+#: build/C/man3/a64l.3:90
msgid ""
"These functions are broken in glibc before 2.2.5 (puts most significant "
"digit first)."
msgstr ""
#. type: Plain text
-#: build/C/man3/a64l.3:81
+#: build/C/man3/a64l.3:93
msgid "This is not the encoding used by B<uuencode>(1)."
msgstr ""
#. .BR itoa (3),
#. type: Plain text
-#: build/C/man3/a64l.3:85
+#: build/C/man3/a64l.3:97
msgid "B<uuencode>(1), B<strtoul>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/atexit.3:31
+#: build/C/man3/atexit.3:33
#, no-wrap
msgid "ATEXIT"
msgstr ""
#. type: TH
-#: build/C/man3/atexit.3:31 build/C/man3/on_exit.3:29
+#: build/C/man3/atexit.3:33
#, no-wrap
msgid "2008-12-05"
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:34
+#: build/C/man3/atexit.3:36
msgid "atexit - register a function to be called at normal process termination"
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:39
+#: build/C/man3/atexit.3:41
#, no-wrap
msgid "B<int atexit(void (*>I<function>B<)(void));>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:49
+#: build/C/man3/atexit.3:54
msgid ""
"The B<atexit>() function registers the given I<function> to be called at "
"normal process termination, either via B<exit>(3) or via return from the "
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:52 build/C/man3/on_exit.3:60
+#: build/C/man3/atexit.3:57 build/C/man3/on_exit.3:69
msgid ""
"The same function may be registered multiple times: it is called once for "
"each registration."
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:58
+#: build/C/man3/atexit.3:63
msgid ""
"POSIX.1-2001 requires that an implementation allow at least B<ATEXIT_MAX> "
"(32) such functions to be registered. The actual limit supported by an "
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:66 build/C/man3/on_exit.3:67
+#: build/C/man3/atexit.3:71 build/C/man3/on_exit.3:76
msgid ""
"When a child process is created via B<fork>(2), it inherits copies of its "
"parent's registrations. Upon a successful call to one of the B<exec>(3) "
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:71
+#: build/C/man3/atexit.3:76
msgid ""
"The B<atexit>() function returns the value 0 if successful; otherwise it "
"returns a nonzero value."
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:73
+#: build/C/man3/atexit.3:78
msgid "SVr4, 4.3BSD, C89, C99, POSIX.1-2001."
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:80
+#: build/C/man3/atexit.3:85
msgid ""
"Functions registered using B<atexit>() (and B<on_exit>(3)) are not called "
"if a process terminates abnormally because of the delivery of a signal."
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:87
+#: build/C/man3/atexit.3:92
msgid ""
"If one of the functions registered functions calls B<_exit>(2), then any "
"remaining functions are not invoked, and the other process termination steps "
#. Glibc does "the Right Thing" -- invocation of the remaining
#. exit handlers carries on as normal.
#. type: Plain text
-#: build/C/man3/atexit.3:104
+#: build/C/man3/atexit.3:109
msgid ""
"POSIX.1-2001 says that the result of calling B<exit>(3) more than once "
"(i.e., calling B<exit>(3) within a function registered using B<atexit>()) "
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:113
+#: build/C/man3/atexit.3:118
msgid ""
"The B<atexit>() and B<on_exit>(3) functions register functions on the same "
"list: at normal process termination, the registered functions are invoked in "
#. In glibc, things seem to be handled okay
#. type: Plain text
-#: build/C/man3/atexit.3:119
+#: build/C/man3/atexit.3:124
msgid ""
"POSIX.1-2001 says that the result is undefined if B<longjmp>(3) is used to "
"terminate execution of one of the functions registered B<atexit>()."
msgstr ""
#. type: SS
-#: build/C/man3/atexit.3:119
+#: build/C/man3/atexit.3:124
#, no-wrap
-msgid "Linux Notes"
+msgid "Linux notes"
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:126
+#: build/C/man3/atexit.3:131
msgid ""
"Since glibc 2.2.3, B<atexit>() (and B<on_exit>(3)) can be used within a "
"shared library to establish functions that are called when the shared "
msgstr ""
#. type: SH
-#: build/C/man3/atexit.3:126 build/C/man3/getsubopt.3:136 build/C/man3/rand.3:158 build/C/man3/rpmatch.3:102 build/C/man3/strtod.3:172 build/C/man3/strtol.3:179 build/C/man3/strtoul.3:183
+#: 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
#, no-wrap
msgid "EXAMPLE"
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:131
+#: build/C/man3/atexit.3:136
#, no-wrap
msgid ""
"#include E<lt>stdio.hE<gt>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:137
+#: build/C/man3/atexit.3:142
#, no-wrap
msgid ""
"void\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:143
+#: build/C/man3/atexit.3:148
#, no-wrap
msgid ""
"int\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:146
+#: build/C/man3/atexit.3:151
#, no-wrap
msgid ""
" a = sysconf(_SC_ATEXIT_MAX);\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:152
+#: build/C/man3/atexit.3:157
#, no-wrap
msgid ""
" i = atexit(bye);\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:155 build/C/man3/getsubopt.3:223 build/C/man3/rand.3:213 build/C/man3/strtol.3:259
+#: 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
#, no-wrap
msgid ""
" exit(EXIT_SUCCESS);\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/atexit.3:160
+#: build/C/man3/atexit.3:165
msgid "B<_exit>(2), B<exit>(3), B<on_exit>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/atof.3:29
+#: build/C/man3/atof.3:31
#, no-wrap
msgid "ATOF"
msgstr ""
#. type: TH
-#: build/C/man3/atof.3:29
+#: build/C/man3/atof.3:31 build/C/man3/strtoimax.3:24
#, no-wrap
-msgid "1993-03-29"
+msgid "2014-01-22"
msgstr ""
#. type: TH
-#: build/C/man3/atof.3:29 build/C/man3/atoi.3:31 build/C/man3/canonicalize_file_name.3:5 build/C/man3/drand48_r.3:25 build/C/man3/ecvt_r.3:28 build/C/man3/getenv.3:31 build/C/man3/getsubopt.3:23 build/C/man3/malloc.3:28 build/C/man3/mblen.3:14 build/C/man3/mbstowcs.3:14 build/C/man3/mbtowc.3:14 build/C/man3/mkdtemp.3:24 build/C/man3/mkstemp.3:33 build/C/man3/mktemp.3:32 build/C/man3/on_exit.3:29 build/C/man3/putenv.3:34 build/C/man3/qecvt.3:26 build/C/man3/random.3:31 build/C/man3/random_r.3:24 build/C/man3/rpmatch.3:27 build/C/man3/setenv.3:35 build/C/man3/strtol.3:29 build/C/man3/strtoul.3:31 build/C/man3/wcstombs.3:14 build/C/man3/wctomb.3:14
+#: 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
#, no-wrap
msgid "GNU"
msgstr ""
#. type: Plain text
-#: build/C/man3/atof.3:32
+#: build/C/man3/atof.3:34
msgid "atof - convert a string to a double"
msgstr ""
#. type: Plain text
-#: build/C/man3/atof.3:37
+#: build/C/man3/atof.3:39
#, no-wrap
msgid "B<double atof(const char *>I<nptr>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/atof.3:45
+#: build/C/man3/atof.3:47
msgid ""
"The B<atof>() function converts the initial portion of the string pointed "
"to by I<nptr> to I<double>. The behavior is the same as"
msgstr ""
#. type: Plain text
-#: build/C/man3/atof.3:48
-msgid "strtod(nptr, (char **) NULL);"
+#: build/C/man3/atof.3:50
+msgid "strtod(nptr, NULL);"
msgstr ""
#. type: Plain text
-#: build/C/man3/atof.3:53
+#: build/C/man3/atof.3:55
msgid "except that B<atof>() does not detect errors."
msgstr ""
#. type: Plain text
-#: build/C/man3/atof.3:55 build/C/man3/atoi.3:91
+#: build/C/man3/atof.3:57 build/C/man3/atoi.3:88
msgid "The converted value."
msgstr ""
#. type: Plain text
-#: build/C/man3/atof.3:57 build/C/man3/getenv.3:56
+#: build/C/man3/atof.3:65
+msgid ""
+"The B<atof>() function is thread-safe with exceptions. It can be safely "
+"used in multithreaded applications, as long as B<setlocale>(3) is not "
+"called to change the locale during its execution."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/atof.3:67
msgid "SVr4, POSIX.1-2001, 4.3BSD, C89, C99."
msgstr ""
#. type: Plain text
-#: build/C/man3/atof.3:63
+#: build/C/man3/atof.3:73
msgid "B<atoi>(3), B<atol>(3), B<strtod>(3), B<strtol>(3), B<strtoul>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/atoi.3:31
+#: build/C/man3/atoi.3:33
#, no-wrap
msgid "ATOI"
msgstr ""
-#. type: Plain text
-#: build/C/man3/atoi.3:34
-msgid "atoi, atol, atoll, atoq - convert a string to an integer"
+#. type: TH
+#: 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
+#, no-wrap
+msgid "2014-08-19"
msgstr ""
#. type: Plain text
-#: build/C/man3/atoi.3:39
-#, no-wrap
-msgid "B<int atoi(const char *>I<nptr>B<);>\n"
+#: build/C/man3/atoi.3:36
+msgid "atoi, atol, atoll - convert a string to an integer"
msgstr ""
#. type: Plain text
#: build/C/man3/atoi.3:41
#, no-wrap
-msgid "B<long atol(const char *>I<nptr>B<);>\n"
+msgid "B<int atoi(const char *>I<nptr>B<);>\n"
msgstr ""
#. type: Plain text
#: build/C/man3/atoi.3:43
#, no-wrap
-msgid "B<long long atoll(const char *>I<nptr>B<);>\n"
+msgid "B<long atol(const char *>I<nptr>B<);>\n"
msgstr ""
#. type: Plain text
#: build/C/man3/atoi.3:45
#, no-wrap
-msgid "B<long long atoq(const char *>I<nptr>B<);>\n"
+msgid "B<long long atoll(const char *>I<nptr>B<);>\n"
msgstr ""
#. type: Plain text
#. type: Plain text
#: build/C/man3/atoi.3:72
-msgid "strtol(nptr, (char **) NULL, 10);"
+msgid "strtol(nptr, NULL, 10);"
msgstr ""
#. type: Plain text
msgstr ""
#. type: Plain text
-#: build/C/man3/atoi.3:89
+#: build/C/man3/atoi.3:86
msgid ""
"The B<atol>() and B<atoll>() functions behave the same as B<atoi>(), "
"except that they convert the initial portion of the string to their return "
-"type of I<long> or I<long long>. B<atoq>() is an obsolete name for "
-"B<atoll>()."
+"type of I<long> or I<long long>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/atoi.3:100
+msgid ""
+"The B<atoi>(), B<atol>(), and B<atoll>() functions are thread-safe with "
+"exceptions. These functions can be safely used in multithreaded "
+"applications, as long as B<setlocale>(3) is not called to change the locale "
+"during their execution."
msgstr ""
#. type: Plain text
-#: build/C/man3/atoi.3:101
+#: build/C/man3/atoi.3:108
msgid ""
"SVr4, POSIX.1-2001, 4.3BSD, C99. C89 and POSIX.1-1996 include the functions "
-"B<atoi>() and B<atol>() only. B<atoq>() is a GNU extension."
+"B<atoi>() and B<atol>() only."
msgstr ""
+#. The
+#. .BR atoll ()
+#. function is present in glibc 2 since version 2.0.2, but
+#. not in libc4 or libc5.
#. type: Plain text
-#: build/C/man3/atoi.3:111
+#: build/C/man3/atoi.3:119
msgid ""
-"The nonstandard B<atoq>() function is not present in libc 4.6.27 or glibc "
-"2, but is present in libc5 and libc 4.7 (though only as an inline function "
-"in I<E<lt>stdlib.hE<gt>> until libc 5.4.44). The B<atoll>() function is "
-"present in glibc 2 since version 2.0.2, but not in libc4 or libc5."
+"Linux libc provided B<atoq>() as an obsolete name for B<atoll>(); B<atoq>() "
+"is not provided by glibc."
msgstr ""
#. type: Plain text
-#: build/C/man3/atoi.3:116
+#: build/C/man3/atoi.3:124
msgid "B<atof>(3), B<strtod>(3), B<strtol>(3), B<strtoul>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/canonicalize_file_name.3:5
+#: build/C/man3/canonicalize_file_name.3:26
#, no-wrap
msgid "CANONICALIZE_FILE_NAME"
msgstr ""
#. type: TH
-#: build/C/man3/canonicalize_file_name.3:5
+#: build/C/man3/canonicalize_file_name.3:26
#, no-wrap
-msgid "2005-07-14"
+msgid "2013-05-11"
msgstr ""
#. type: Plain text
-#: build/C/man3/canonicalize_file_name.3:8
-msgid "canonicalize_file_name - return the canonicalized filename"
+#: build/C/man3/canonicalize_file_name.3:29
+msgid "canonicalize_file_name - return the canonicalized absolute pathname"
msgstr ""
#. type: Plain text
-#: build/C/man3/canonicalize_file_name.3:10
+#: build/C/man3/canonicalize_file_name.3:31
msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
msgstr ""
#. type: Plain text
-#: build/C/man3/canonicalize_file_name.3:14
+#: build/C/man3/canonicalize_file_name.3:35
msgid "B<char *canonicalize_file_name(const char *>I<path>B<);>"
msgstr ""
#. type: Plain text
-#: build/C/man3/canonicalize_file_name.3:19
+#: build/C/man3/canonicalize_file_name.3:49
+msgid ""
+"The B<canonicalize_file_name>() function returns a null-terminated string "
+"containing the canonicalized absolute pathname corresponding to I<path>. In "
+"the returned string, symbolic links are resolved, as are I<.> and I<..> "
+"pathname components. Consecutive slash (I</>) characters are replaced by a "
+"single slash."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/canonicalize_file_name.3:55
+msgid ""
+"The returned string is dynamically allocated by B<canonicalize_file_name>() "
+"and the caller should deallocate it with B<free>(3) when it is no longer "
+"required."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/canonicalize_file_name.3:59
+msgid "The call I<canonicalize_file_name(path)> is equivalent to the call:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/canonicalize_file_name.3:61
+#, no-wrap
+msgid " realpath(path, NULL);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/canonicalize_file_name.3:70
msgid ""
-"The call I<canonicalize_file_name(path)> is equivalent to the call "
-"I<realpath(path,\\ NULL)>."
+"On success, B<canonicalize_file_name>() returns a null-terminated string. "
+"On error (e.g., a pathname component is unreadable or does not exist), "
+"B<canonicalize_file_name>() returns NULL and sets I<errno> to indicate the "
+"error."
+msgstr ""
+
+#. type: SH
+#: 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 build/C/man2/getrandom.2:141
+#, no-wrap
+msgid "ERRORS"
msgstr ""
#. type: Plain text
-#: build/C/man3/canonicalize_file_name.3:21
-msgid "The function is a GNU extension."
+#: build/C/man3/canonicalize_file_name.3:73
+msgid "See B<realpath>(3)."
msgstr ""
#. type: Plain text
-#: build/C/man3/canonicalize_file_name.3:23
-msgid "B<realpath>(3)"
+#: build/C/man3/canonicalize_file_name.3:75
+msgid "This function is a GNU extension."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/canonicalize_file_name.3:78
+msgid "B<readlink>(2), B<realpath>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/cfree.3:23
+#: build/C/man3/cfree.3:24
#, no-wrap
msgid "CFREE"
msgstr ""
#. type: TH
-#: build/C/man3/cfree.3:23 build/C/man3/drand48.3:28 build/C/man3/drand48_r.3:25 build/C/man3/ecvt_r.3:28 build/C/man3/putenv.3:34 build/C/man3/rpmatch.3:27
+#: build/C/man3/cfree.3:24 build/C/man3/ecvt_r.3:30 build/C/man3/rpmatch.3:29
#, no-wrap
msgid "2007-07-26"
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:26
+#: build/C/man3/cfree.3:27
msgid "cfree - free allocated memory"
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:33
+#: build/C/man3/cfree.3:34
#, no-wrap
msgid ""
"/* In SunOS 4 */\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:36
+#: build/C/man3/cfree.3:37
#, no-wrap
msgid ""
"/* In glibc or FreeBSD libcompat */\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:39
+#: build/C/man3/cfree.3:40
#, no-wrap
msgid ""
"/* In SCO OpenServer */\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:42
+#: build/C/man3/cfree.3:43
#, no-wrap
msgid ""
"/* In Solaris watchmalloc.so.1 */\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:51
+#: build/C/man3/cfree.3:52
msgid "B<cfree>(): _BSD_SOURCE || _SVID_SOURCE"
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:56
+#: build/C/man3/cfree.3:57
msgid "This function should never be used. Use B<free>(3) instead."
msgstr ""
#. type: SS
-#: build/C/man3/cfree.3:56
+#: build/C/man3/cfree.3:57
#, no-wrap
msgid "1-arg cfree"
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:62
+#: build/C/man3/cfree.3:63
msgid ""
"In glibc, the function B<cfree>() is a synonym for B<free>(3), \"added for "
"compatibility with SunOS\"."
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:68
+#: build/C/man3/cfree.3:69
msgid ""
"Other systems have other functions with this name. The declaration is "
"sometimes in I<E<lt>stdlib.hE<gt>> and sometimes in I<E<lt>malloc.hE<gt>>."
msgstr ""
#. type: SS
-#: build/C/man3/cfree.3:68
+#: build/C/man3/cfree.3:69
#, no-wrap
msgid "3-arg cfree"
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:73
+#: build/C/man3/cfree.3:74
msgid ""
"Some SCO and Solaris versions have malloc libraries with a 3-argument "
"B<cfree>(), apparently as an analog to B<calloc>(3)."
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:75
+#: build/C/man3/cfree.3:76
msgid "If you need it while porting something, add"
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:78
+#: build/C/man3/cfree.3:79
msgid "#define cfree(p, n, s) free((p))"
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:81
+#: build/C/man3/cfree.3:82
msgid "to your file."
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:90
+#: build/C/man3/cfree.3:91
msgid ""
"A frequently asked question is \"Can I use B<free>(3) to free memory "
"allocated with B<calloc>(3), or do I need B<cfree>()?\" Answer: use "
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:95
+#: build/C/man3/cfree.3:96
msgid ""
"An SCO manual writes: \"The cfree routine is provided for compliance to the "
"iBCSe2 standard and simply calls free. The num and size arguments to cfree "
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:111
+#: build/C/man3/cfree.3:112
msgid ""
"The SunOS version of B<cfree>() (which is a synonym for B<free>(3)) "
"returns 1 on success and 0 on failure. In case of error, I<errno> is set to "
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:116
+#: build/C/man3/cfree.3:117
msgid ""
"The 3-argument version of B<cfree>() as used by SCO conforms to the iBCSe2 "
"standard: Intel386 Binary Compatibility Specification, Edition 2."
msgstr ""
#. type: Plain text
-#: build/C/man3/cfree.3:118
+#: build/C/man3/cfree.3:119
msgid "B<malloc>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/clearenv.3:24
+#: build/C/man3/clearenv.3:26
#, no-wrap
msgid "CLEARENV"
msgstr ""
-#. type: TH
-#: build/C/man3/clearenv.3:24
-#, no-wrap
-msgid "2010-10-04"
-msgstr ""
-
#. type: Plain text
-#: build/C/man3/clearenv.3:27
+#: build/C/man3/clearenv.3:29
msgid "clearenv - clear the environment"
msgstr ""
#. type: Plain text
-#: build/C/man3/clearenv.3:32
+#: build/C/man3/clearenv.3:34
#, no-wrap
msgid "B<int clearenv(void);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/clearenv.3:41
+#: build/C/man3/clearenv.3:43
msgid "B<clearenv>(): _SVID_SOURCE || _BSD_SOURCE"
msgstr ""
#. type: Plain text
-#: build/C/man3/clearenv.3:48
+#: build/C/man3/clearenv.3:50
msgid ""
"The B<clearenv>() function clears the environment of all name-value pairs "
"and sets the value of the external variable I<environ> to NULL."
#. Most versions of UNIX return -1 on error, or do not even have errors.
#. Glibc info and the Watcom C library document "a nonzero value".
#. type: Plain text
-#: build/C/man3/clearenv.3:55
+#: build/C/man3/clearenv.3:57
msgid ""
"The B<clearenv>() function returns zero on success, and a nonzero value on "
"failure."
msgstr ""
#. type: SH
-#: build/C/man3/clearenv.3:55 build/C/man3/getloadavg.3:61 build/C/man3/mkdtemp.3:82 build/C/man3/mkstemp.3:169
+#: 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 build/C/man2/getrandom.2:168
#, no-wrap
msgid "VERSIONS"
msgstr ""
#. type: Plain text
-#: build/C/man3/clearenv.3:58
-msgid "Not in libc4, libc5. In glibc since glibc 2.0."
+#: build/C/man3/clearenv.3:59
+msgid "Available since glibc 2.0."
msgstr ""
#. type: Plain text
-#: build/C/man3/clearenv.3:72
+#: build/C/man3/clearenv.3:73
msgid ""
"Various UNIX variants (DG/UX, HP-UX, QNX, ...). POSIX.9 (bindings for "
"FORTRAN77). POSIX.1-1996 did not accept B<clearenv>() and B<putenv>(3), "
"but changed its mind and scheduled these functions for some later issue of "
-"this standard (cf. B.4.6.1). However, POSIX.1-2001 only adds B<putenv>(3), "
+"this standard (cf. B.4.6.1). However, POSIX.1-2001 adds only B<putenv>(3), "
"and rejected B<clearenv>()."
msgstr ""
#. type: Plain text
-#: build/C/man3/clearenv.3:76
+#: build/C/man3/clearenv.3:77
msgid ""
"Used in security-conscious applications. If it is unavailable the "
"assignment"
msgstr ""
#. type: Plain text
-#: build/C/man3/clearenv.3:79
+#: build/C/man3/clearenv.3:80
#, no-wrap
msgid " environ = NULL;\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/clearenv.3:82
+#: build/C/man3/clearenv.3:83
msgid "will probably do."
msgstr ""
#. .LP
#. HP-UX has a ENOMEM error return.
#. type: Plain text
-#: build/C/man3/clearenv.3:95
+#: build/C/man3/clearenv.3:96
msgid ""
"The DG/UX and Tru64 man pages write: If I<environ> has been modified by "
"anything other than the B<putenv>(3), B<getenv>(3), or B<clearenv>() "
msgstr ""
#. type: Plain text
-#: build/C/man3/clearenv.3:101
+#: build/C/man3/clearenv.3:102
msgid "B<getenv>(3), B<putenv>(3), B<setenv>(3), B<unsetenv>(3), B<environ>(7)"
msgstr ""
#. type: TH
-#: build/C/man3/drand48.3:28
+#: build/C/man3/drand48.3:30
#, no-wrap
msgid "DRAND48"
msgstr ""
+#. type: TH
+#: build/C/man3/drand48.3:30
+#, no-wrap
+msgid "2014-09-21"
+msgstr ""
+
#. type: Plain text
-#: build/C/man3/drand48.3:32
+#: build/C/man3/drand48.3:34
msgid ""
"drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, "
"lcong48 - generate uniformly distributed pseudo-random numbers"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:37
+#: build/C/man3/drand48.3:39
#, no-wrap
msgid "B<double drand48(void);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:39
+#: build/C/man3/drand48.3:41
#, no-wrap
msgid "B<double erand48(unsigned short >I<xsubi>B<[3]);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:41
+#: build/C/man3/drand48.3:43
#, no-wrap
msgid "B<long int lrand48(void);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:43
+#: build/C/man3/drand48.3:45
#, no-wrap
msgid "B<long int nrand48(unsigned short >I<xsubi>B<[3]);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:45
+#: build/C/man3/drand48.3:47
#, no-wrap
msgid "B<long int mrand48(void);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:47
+#: build/C/man3/drand48.3:49
#, no-wrap
msgid "B<long int jrand48(unsigned short >I<xsubi>B<[3]);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:49
+#: build/C/man3/drand48.3:51
#, no-wrap
msgid "B<void srand48(long int >I<seedval>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:51
+#: build/C/man3/drand48.3:53
#, no-wrap
msgid "B<unsigned short *seed48(unsigned short >I<seed16v>B<[3]);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:53
+#: build/C/man3/drand48.3:55
#, no-wrap
msgid "B<void lcong48(unsigned short >I<param>B<[7]);>\n"
msgstr ""
#. .BR seed48 (),
#. .BR lcong48 ():
#. type: Plain text
-#: build/C/man3/drand48.3:72
+#: build/C/man3/drand48.3:74
msgid "All functions shown above: _SVID_SOURCE || _XOPEN_SOURCE"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:76
+#: build/C/man3/drand48.3:78
msgid ""
"These functions generate pseudo-random numbers using the linear congruential "
"algorithm and 48-bit integer arithmetic."
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:84
+#: build/C/man3/drand48.3:86
msgid ""
"The B<drand48>() and B<erand48>() functions return nonnegative "
"double-precision floating-point values uniformly distributed between [0.0, "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:91
+#: build/C/man3/drand48.3:93
msgid ""
"The B<lrand48>() and B<nrand48>() functions return nonnegative long "
"integers uniformly distributed between 0 and 2^31."
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:98
+#: build/C/man3/drand48.3:100
msgid ""
"The B<mrand48>() and B<jrand48>() functions return signed long integers "
"uniformly distributed between -2^31 and 2^31."
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:117
+#: build/C/man3/drand48.3:119
msgid ""
"The B<srand48>(), B<seed48>() and B<lcong48>() functions are "
"initialization functions, one of which should be called before using "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:120
+#: build/C/man3/drand48.3:123
msgid ""
"All the functions work by generating a sequence of 48-bit integers, I<Xi>, "
"according to the linear congruential formula:"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:124
+#: build/C/man3/drand48.3:127
#, no-wrap
msgid "B<Xn+1 = (aXn + c) mod m, where n E<gt>= 0>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:131
+#: build/C/man3/drand48.3:140
msgid ""
"The parameter I<m> = 2^48, hence 48-bit integer arithmetic is performed. "
"Unless B<lcong48>() is called, I<a> and I<c> are given by:"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:136
+#: build/C/man3/drand48.3:145
#, no-wrap
msgid ""
"B<a = 0x5DEECE66D>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:152
+#: build/C/man3/drand48.3:165
msgid ""
"The value returned by any of the functions B<drand48>(), B<erand48>(), "
"B<lrand48>(), B<nrand48>(), B<mrand48>() or B<jrand48>() is computed by "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:171
+#: build/C/man3/drand48.3:191
msgid ""
"The functions B<drand48>(), B<lrand48>() and B<mrand48>() store the last "
"48-bit I<Xi> generated in an internal buffer. The functions B<erand48>(), "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:178
+#: build/C/man3/drand48.3:200
msgid ""
"The initializer function B<srand48>() sets the high order 32-bits of I<Xi> "
"to the argument I<seedval>. The low order 16-bits are set to the arbitrary "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:187
+#: build/C/man3/drand48.3:214
msgid ""
"The initializer function B<seed48>() sets the value of I<Xi> to the 48-bit "
"value specified in the array argument I<seed16v>. The previous value of "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:202
+#: build/C/man3/drand48.3:245
msgid ""
"The initialization function B<lcong48>() allows the user to specify initial "
"values for I<Xi>, I<a> and I<c>. Array argument elements I<param[0-2]> "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:204
-msgid "SVr4, POSIX.1-2001."
+#: build/C/man3/drand48.3:260
+msgid ""
+"The B<drand48>(), B<erand48>(), B<lrand48>(), B<nrand48>(), B<mrand48>(), "
+"B<jrand48>(), B<srand48>(), B<seed48>(), and B<lcong48>() functions record "
+"global state information for the random number generator, so they are not "
+"thread-safe."
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:208
-msgid ""
-"These functions are declared obsolete by SVID 3, which states that "
-"B<rand>(3) should be used instead."
+#: build/C/man3/drand48.3:262
+msgid "SVr4, POSIX.1-2001."
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48.3:211
+#: build/C/man3/drand48.3:265
msgid "B<rand>(3), B<random>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/drand48_r.3:25
+#: build/C/man3/drand48_r.3:27
#, no-wrap
msgid "DRAND48_R"
msgstr ""
+#. type: TH
+#: build/C/man3/drand48_r.3:27
+#, no-wrap
+msgid "2013-09-09"
+msgstr ""
+
#. type: Plain text
-#: build/C/man3/drand48_r.3:30
+#: build/C/man3/drand48_r.3:32
msgid ""
"drand48_r, erand48_r, lrand48_r, nrand48_r, mrand48_r, jrand48_r, srand48_r, "
"seed48_r, lcong48_r - generate uniformly distributed pseudo-random numbers "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:35
+#: build/C/man3/drand48_r.3:37
#, no-wrap
msgid "B<int drand48_r(struct drand48_data *>I<buffer>B<, double *>I<result>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:37
+#: build/C/man3/drand48_r.3:39
#, no-wrap
msgid "B<int erand48_r(unsigned short >I<xsubi>B<[3]>I<,>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:39
+#: build/C/man3/drand48_r.3:41
#, no-wrap
msgid "B< struct drand48_data *>I<buffer>B<, double *>I<result>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:41
+#: build/C/man3/drand48_r.3:43
#, no-wrap
msgid ""
"B<int lrand48_r(struct drand48_data *>I<buffer>B<, long int "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:43
+#: build/C/man3/drand48_r.3:45
#, no-wrap
msgid "B<int nrand48_r(unsigned short int >I<xsubi[3]>B<,>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:45 build/C/man3/drand48_r.3:51
+#: build/C/man3/drand48_r.3:47 build/C/man3/drand48_r.3:53
#, no-wrap
msgid ""
"B< struct drand48_data *>I<buffer>B<, long int "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:47
+#: build/C/man3/drand48_r.3:49
#, no-wrap
msgid ""
"B<int mrand48_r(struct drand48_data *>I<buffer>B<,long int "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:49
+#: build/C/man3/drand48_r.3:51
#, no-wrap
msgid "B<int jrand48_r(unsigned short int >I<xsubi[3]>B<,>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:53
+#: build/C/man3/drand48_r.3:55
#, no-wrap
msgid ""
"B<int srand48_r(long int >I<seedval>B<, struct drand48_data "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:55
+#: build/C/man3/drand48_r.3:57
#, no-wrap
msgid "B<int seed48_r(unsigned short int >I<seed16v[3]>B<,>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:57
+#: build/C/man3/drand48_r.3:59
#, no-wrap
msgid "B< struct drand48_data *>I<buffer>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:59
+#: build/C/man3/drand48_r.3:61
#, no-wrap
msgid "B<int lcong48_r(unsigned short int >I<param[7]>B<,>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:61
+#: build/C/man3/drand48_r.3:63
#, no-wrap
msgid "B< struct drand48_data *>I<buffer>B<);>\n"
msgstr ""
#. .BR seed48_r (),
#. .BR lcong48_r ():
#. type: Plain text
-#: build/C/man3/drand48_r.3:80
+#: build/C/man3/drand48_r.3:82
msgid "All functions shown above: _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE"
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:87
+#: build/C/man3/drand48_r.3:89
msgid ""
"These functions are the reentrant analogs of the functions described in "
"B<drand48>(3). Instead of modifying the global random generator state, they "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:94
+#: build/C/man3/drand48_r.3:96
msgid ""
"Before the first use, this struct must be initialized, for example, by "
"filling it with zeros, or by calling one of the functions B<srand48_r>(), "
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:96
+#: build/C/man3/drand48_r.3:98
msgid "The return value is 0."
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:98
+#: build/C/man3/drand48_r.3:112
+msgid ""
+"The B<drand48_r>(), B<erand48_r>(), B<lrand48_r>(), B<nrand48_r>(), "
+"B<mrand48_r>(), B<jrand48_r>(), B<srand48_r>(), B<seed48_r>(), and "
+"B<lcong48_r>() functions are thread-safe."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/drand48_r.3:114
msgid "These functions are GNU extensions and are not portable."
msgstr ""
#. type: Plain text
-#: build/C/man3/drand48_r.3:102 build/C/man3/random_r.3:131
+#: build/C/man3/drand48_r.3:118 build/C/man3/random_r.3:145
msgid "B<drand48>(3), B<rand>(3), B<random>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/ecvt.3:30
+#: build/C/man3/ecvt.3:32
#, no-wrap
msgid "ECVT"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt.3:33
+#: build/C/man3/ecvt.3:35
msgid "ecvt, fcvt - convert a floating-point number to a string"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt.3:38
+#: build/C/man3/ecvt.3:40
msgid ""
"B<char *ecvt(double >I<number>B<, int >I<ndigits>B<, int *>I<decpt>B<,> "
"B<int *>I<sign>B<);>"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt.3:41
+#: build/C/man3/ecvt.3:43
msgid ""
"B<char *fcvt(double >I<number>B<, int >I<ndigits>B<, int *>I<decpt>B<,> "
"B<int *>I<sign>B<);>"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt.3:49
+#: build/C/man3/ecvt.3:51
msgid "B<ecvt>(), B<fcvt>():"
msgstr ""
#. type: TP
-#: build/C/man3/ecvt.3:52 build/C/man3/gcvt.3:47 build/C/man3/mktemp.3:51
+#: build/C/man3/ecvt.3:54 build/C/man3/gcvt.3:49 build/C/man3/mktemp.3:53
#, no-wrap
msgid "Since glibc 2.12:"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt.3:59 build/C/man3/gcvt.3:54
+#: build/C/man3/ecvt.3:61 build/C/man3/gcvt.3:56
#, no-wrap
msgid ""
"_SVID_SOURCE ||\n"
msgstr ""
#. type: TP
-#: build/C/man3/ecvt.3:60 build/C/man3/gcvt.3:55 build/C/man3/mktemp.3:57
+#: build/C/man3/ecvt.3:62 build/C/man3/gcvt.3:57 build/C/man3/mktemp.3:59
#, no-wrap
msgid "Before glibc 2.12:"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt.3:90
+#: build/C/man3/ecvt.3:92
msgid ""
"The B<ecvt>() function converts I<number> to a null-terminated string of "
"I<ndigits> digits (where I<ndigits> is reduced to a system-specific limit "
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt.3:97
+#: build/C/man3/ecvt.3:99
msgid ""
"The B<fcvt>() function is identical to B<ecvt>(), except that I<ndigits> "
"specifies the number of digits after the decimal point."
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt.3:108
+#: build/C/man3/ecvt.3:110
msgid ""
"Both the B<ecvt>() and B<fcvt>() functions return a pointer to a static "
"string containing the ASCII representation of I<number>. The static string "
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt.3:120
+#: build/C/man3/ecvt.3:117
+msgid "The B<ecvt>() and B<fcvt>() functions are not thread-safe."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/ecvt.3:129
msgid ""
"SVr2; marked as LEGACY in POSIX.1-2001. POSIX.1-2008 removes the "
"specifications of B<ecvt>() and B<fcvt>(), recommending the use of "
"B<sprintf>(3) instead (though B<snprintf>(3) may be preferable)."
msgstr ""
+#. Linux libc4 and libc5 specified the type of
+#. .I ndigits
+#. as
+#. .IR size_t .
#. type: Plain text
-#: build/C/man3/ecvt.3:126
-msgid ""
-"Linux libc4 and libc5 specified the type of I<ndigits> as I<size_t>. Not "
-"all locales use a point as the radix character (\"decimal point\")."
+#: build/C/man3/ecvt.3:135
+msgid "Not all locales use a point as the radix character (\"decimal point\")."
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt.3:132
+#: build/C/man3/ecvt.3:141
msgid "B<ecvt_r>(3), B<gcvt>(3), B<qecvt>(3), B<setlocale>(3), B<sprintf>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/ecvt_r.3:28
+#: build/C/man3/ecvt_r.3:30
#, no-wrap
msgid "ECVT_R"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:31
+#: build/C/man3/ecvt_r.3:33
msgid ""
"ecvt_r, fcvt_r, qecvt_r, qfcvt_r - convert a floating-point number to a "
"string"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:37
+#: build/C/man3/ecvt_r.3:39
#, no-wrap
msgid ""
"B<int ecvt_r(double >I<number>B<, int >I<ndigits>B<, int *>I<decpt>B<,>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:40
+#: build/C/man3/ecvt_r.3:42
#, no-wrap
msgid ""
"B<int fcvt_r(double >I<number>B<, int >I<ndigits>B<, int *>I<decpt>B<,>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:43
+#: build/C/man3/ecvt_r.3:45
#, no-wrap
msgid ""
"B<int qecvt_r(long double >I<number>B<, int >I<ndigits>B<, int "
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:46
+#: build/C/man3/ecvt_r.3:48
#, no-wrap
msgid ""
"B<int qfcvt_r(long double >I<number>B<, int >I<ndigits>B<, int "
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:58
+#: build/C/man3/ecvt_r.3:60
msgid "B<ecvt_r>(), B<fcvt_r>(), B<qecvt_r>(), B<qfcvt_r>():"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:60
+#: build/C/man3/ecvt_r.3:62
msgid "_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500"
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:84
+#: build/C/man3/ecvt_r.3:86
msgid ""
-"The functions B<ecvt_r>(), B<fcvt_r>(), B<qecvt_r>() and B<qfcvt_r>() are "
-"identical to B<ecvt>(3), B<fcvt>(3), B<qecvt>(3) and B<qfcvt>(3), "
+"The functions B<ecvt_r>(), B<fcvt_r>(), B<qecvt_r>(), and B<qfcvt_r>() are "
+"identical to B<ecvt>(3), B<fcvt>(3), B<qecvt>(3), and B<qfcvt>(3), "
"respectively, except that they do not return their result in a static "
"buffer, but instead use the supplied I<buf> of size I<len>. See B<ecvt>(3) "
"and B<qecvt>(3)."
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:86
+#: build/C/man3/ecvt_r.3:88
msgid "These functions return 0 on success, and -1 otherwise."
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:88
+#: build/C/man3/ecvt_r.3:90
msgid "These functions are GNU extensions."
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:93 build/C/man3/qecvt.3:81
+#: build/C/man3/ecvt_r.3:95
msgid "These functions are obsolete. Instead, B<sprintf>(3) is recommended."
msgstr ""
#. type: Plain text
-#: build/C/man3/ecvt_r.3:97
+#: build/C/man3/ecvt_r.3:99
msgid "B<ecvt>(3), B<qecvt>(3), B<sprintf>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/exit.3:23
+#: build/C/man3/exit.3:29
#, no-wrap
msgid "EXIT"
msgstr ""
#. type: TH
-#: build/C/man3/exit.3:23 build/C/man3/setenv.3:35
+#: build/C/man3/exit.3:29 build/C/man3/random_r.3:26
#, no-wrap
-msgid "2009-09-20"
+msgid "2014-03-25"
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:26
+#: build/C/man3/exit.3:32
msgid "exit - cause normal process termination"
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:31
+#: build/C/man3/exit.3:37
#, no-wrap
msgid "B<void exit(int >I<status>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:39
+#: build/C/man3/exit.3:45
msgid ""
"The B<exit>() function causes normal process termination and the value of "
"I<status & 0377> is returned to the parent (see B<wait>(2))."
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:66
+#: build/C/man3/exit.3:72
msgid ""
"All functions registered with B<atexit>(3) and B<on_exit>(3) are called, "
"in the reverse order of their registration. (It is possible for one of "
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:73
+#: build/C/man3/exit.3:79
msgid ""
"All open B<stdio>(3) streams are flushed and closed. Files created by "
"B<tmpfile>(3) are removed."
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:80
+#: build/C/man3/exit.3:86
msgid ""
"The C standard specifies two constants, B<EXIT_SUCCESS> and B<EXIT_FAILURE>, "
"that may be passed to B<exit>() to indicate successful or unsuccessful "
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:84
+#: build/C/man3/exit.3:90
msgid "The B<exit>() function does not return."
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:86
+#: build/C/man3/exit.3:96
+msgid ""
+"The B<exit>() function uses a global variable that is not protected, so it "
+"is not thread-safe."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/exit.3:98
msgid "SVr4, 4.3BSD, POSIX.1-2001, C89, C99."
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:97
+#: build/C/man3/exit.3:115
msgid ""
"It is undefined what happens if one of the functions registered using "
-"B<atexit>(3) and B<on_exit>(3) calls either B<exit>() or B<longjmp>(3)."
+"B<atexit>(3) and B<on_exit>(3) calls either B<exit>() or B<longjmp>(3). "
+"Note that a call to B<execve>(2) removes registrations created using "
+"B<atexit>(3) and B<on_exit>(3)."
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:106
+#: build/C/man3/exit.3:124
msgid ""
"The use of B<EXIT_SUCCESS> and B<EXIT_FAILURE> is slightly more portable (to "
"non-UNIX environments) than the use of 0 and some nonzero value like 1 or "
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:109
+#: build/C/man3/exit.3:127
msgid ""
"BSD has attempted to standardize exit codes; see the file "
"I<E<lt>sysexits.hE<gt>>."
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:134
+#: build/C/man3/exit.3:152
msgid ""
"After B<exit>(), the exit status must be transmitted to the parent process. "
"There are three cases. If the parent has set B<SA_NOCLDWAIT>, or has set "
"the B<SIGCHLD> handler to B<SIG_IGN>, the status is discarded. If the "
-"parent was waiting on the child it is notified of the exit status. In both "
+"parent was waiting on the child, it is notified of the exit status. In both "
"cases the exiting process dies immediately. If the parent has not indicated "
"that it is not interested in the exit status, but is not waiting, the "
"exiting process turns into a \"zombie\" process (which is nothing but a "
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:144
+#: build/C/man3/exit.3:162
msgid ""
"If the implementation supports the B<SIGCHLD> signal, this signal is sent to "
"the parent. If the parent has set B<SA_NOCLDWAIT>, it is undefined whether "
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:153
+#: build/C/man3/exit.3:171
msgid ""
"If the process is a session leader and its controlling terminal is the "
"controlling terminal of the session, then each process in the foreground "
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:165
+#: build/C/man3/exit.3:183
msgid ""
"If the exit of the process causes a process group to become orphaned, and if "
"any member of the newly orphaned process group is stopped, then a B<SIGHUP> "
msgstr ""
#. type: Plain text
-#: build/C/man3/exit.3:172
+#: build/C/man3/exit.3:190
msgid ""
"B<_exit>(2), B<setpgid>(2), B<wait>(2), B<atexit>(3), B<on_exit>(3), "
"B<tmpfile>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/gcvt.3:28
+#: build/C/man3/gcvt.3:30
#, no-wrap
msgid "GCVT"
msgstr ""
#. type: Plain text
-#: build/C/man3/gcvt.3:31
+#: build/C/man3/gcvt.3:33
msgid "gcvt - convert a floating-point number to a string"
msgstr ""
#. type: Plain text
-#: build/C/man3/gcvt.3:36
+#: build/C/man3/gcvt.3:38
#, no-wrap
-msgid "B<char *gcvt(double >I<number>B<, size_t >I<ndigit>B<, char *>I<buf>B<);>\n"
+msgid "B<char *gcvt(double >I<number>B<, int >I<ndigit>B<, char *>I<buf>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/gcvt.3:44
+#: build/C/man3/gcvt.3:46
msgid "B<gcvt>():"
msgstr ""
#. type: Plain text
-#: build/C/man3/gcvt.3:59
+#: build/C/man3/gcvt.3:61
msgid ""
"_SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE && "
"_XOPEN_SOURCE_EXTENDED"
msgstr ""
#. type: Plain text
-#: build/C/man3/gcvt.3:70
+#: build/C/man3/gcvt.3:72
msgid ""
"The B<gcvt>() function converts I<number> to a minimal length "
"null-terminated ASCII string and stores the result in I<buf>. It produces "
msgstr ""
#. type: Plain text
-#: build/C/man3/gcvt.3:75
+#: build/C/man3/gcvt.3:77
msgid ""
"The B<gcvt>() function returns the address of the string pointed to by "
"I<buf>."
msgstr ""
#. type: Plain text
-#: build/C/man3/gcvt.3:84
+#: build/C/man3/gcvt.3:86
msgid ""
"Marked as LEGACY in POSIX.1-2001. POSIX.1-2008 removes the specification of "
"B<gcvt>(), recommending the use of B<sprintf>(3) instead (though "
msgstr ""
#. type: Plain text
-#: build/C/man3/gcvt.3:88
+#: build/C/man3/gcvt.3:90
msgid "B<ecvt>(3), B<fcvt>(3), B<sprintf>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/getenv.3:31
+#: build/C/man3/getauxval.3:29
#, no-wrap
-msgid "GETENV"
+msgid "GETAUXVAL"
msgstr ""
-#. type: TH
-#: build/C/man3/getenv.3:31
-#, no-wrap
-msgid "2008-03-17"
+#. type: Plain text
+#: build/C/man3/getauxval.3:32
+msgid "getauxval - retrieve a value from the auxiliary vector"
msgstr ""
#. type: Plain text
-#: build/C/man3/getenv.3:34
-msgid "getenv - get an environment variable"
+#: build/C/man3/getauxval.3:35
+#, no-wrap
+msgid "B<#include E<lt>sys/auxv.hE<gt>>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/getenv.3:39
+#: build/C/man3/getauxval.3:37
#, no-wrap
-msgid "B<char *getenv(const char *>I<name>B<);>\n"
+msgid "B<unsigned long getauxval(unsigned long >I<type>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/getenv.3:49
+#: build/C/man3/getauxval.3:45
msgid ""
-"The B<getenv>() function searches the environment list to find the "
-"environment variable I<name>, and returns a pointer to the corresponding "
-"I<value> string."
+"The B<getauxval>() function retrieves values from the auxiliary vector, a "
+"mechanism that the kernel's ELF binary loader uses to pass certain "
+"information to user space when a program is executed."
msgstr ""
#. type: Plain text
-#: build/C/man3/getenv.3:54
+#: build/C/man3/getauxval.3:53
msgid ""
-"The B<getenv>() function returns a pointer to the value in the environment, "
-"or NULL if there is no match."
+"Each entry in the auxiliary vector consists of a pair of values: a type that "
+"identifies what this entry represents, and a value for that type. Given the "
+"argument I<type>, B<getauxval>() returns the corresponding value."
msgstr ""
#. type: Plain text
-#: build/C/man3/getenv.3:58
-msgid "The strings in the environment list are of the form I<name=value>."
+#: build/C/man3/getauxval.3:60
+msgid ""
+"The value returned for each I<type> is given in the following list. Not all "
+"I<type> values are present on all architectures."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getenv.3:64
-msgid ""
-"As typically implemented, B<getenv>() returns a pointer to a string within "
-"the environment list. The caller must take care not to modify this string, "
-"since that would change the environment of the process."
+#. type: TP
+#: build/C/man3/getauxval.3:60
+#, no-wrap
+msgid "B<AT_BASE>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getenv.3:77
-msgid ""
-"The implementation of B<getenv>() is not required to be reentrant. The "
-"string pointed to by the return value of B<getenv>() may be statically "
-"allocated, and can be modified by a subsequent call to B<getenv>(), "
-"B<putenv>(3), B<setenv>(3), or B<unsetenv>(3)."
+#: build/C/man3/getauxval.3:63
+msgid "The base address of the program interpreter (usually, the dynamic linker)."
+msgstr ""
+
+#. type: TP
+#: build/C/man3/getauxval.3:63
+#, no-wrap
+msgid "B<AT_BASE_PLATFORM>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getenv.3:83
-msgid "B<clearenv>(3), B<putenv>(3), B<setenv>(3), B<unsetenv>(3), B<environ>(7)"
+#: build/C/man3/getauxval.3:68
+msgid ""
+"A string identifying the real platform; may differ from B<AT_PLATFORM> "
+"(PowerPC only)."
msgstr ""
-#. type: TH
-#: build/C/man3/getloadavg.3:32
+#. type: TP
+#: build/C/man3/getauxval.3:68
#, no-wrap
-msgid "GETLOADAVG"
+msgid "B<AT_CLKTCK>"
msgstr ""
-#. type: TH
-#: build/C/man3/getloadavg.3:32
+#. type: Plain text
+#: build/C/man3/getauxval.3:75
+msgid ""
+"The frequency with which B<times>(2) counts. This value can also be "
+"obtained via I<sysconf(_SC_CLK_TCK)>."
+msgstr ""
+
+#. type: TP
+#: build/C/man3/getauxval.3:75
#, no-wrap
-msgid "2007-12-08"
+msgid "B<AT_DCACHEBSIZE>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getloadavg.3:35
-msgid "getloadavg - get system load averages"
+#: build/C/man3/getauxval.3:78
+msgid "The data cache block size."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getloadavg.3:39
+#. type: TP
+#: build/C/man3/getauxval.3:78
#, no-wrap
-msgid ""
-"B<#define _BSD_SOURCE> /* See feature_test_macros(7) */\n"
-"B<#include E<lt>stdlib.hE<gt>>\n"
+msgid "B<AT_EGID>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getloadavg.3:41
+#: build/C/man3/getauxval.3:81
+msgid "The effective group ID of the thread."
+msgstr ""
+
+#. type: TP
+#: build/C/man3/getauxval.3:81
#, no-wrap
-msgid "B<int getloadavg(double >I<loadavg[]>B<, int >I<nelem>B<);>\n"
+msgid "B<AT_ENTRY>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getloadavg.3:53
-msgid ""
-"The B<getloadavg>() function returns the number of processes in the system "
-"run queue averaged over various periods of time. Up to I<nelem> samples are "
-"retrieved and assigned to successive elements of I<loadavg>[]. The system "
-"imposes a maximum of 3 samples, representing averages over the last 1, 5, "
-"and 15 minutes, respectively."
+#: build/C/man3/getauxval.3:84
+msgid "The entry address of the executable."
msgstr ""
-#. .SH HISTORY
-#. The
-#. BR getloadavg ()
-#. function appeared in
-#. 4.3BSD Reno .
-#. type: Plain text
-#: build/C/man3/getloadavg.3:61
-msgid ""
-"If the load average was unobtainable, -1 is returned; otherwise, the number "
-"of samples actually retrieved is returned."
+#. type: TP
+#: build/C/man3/getauxval.3:84
+#, no-wrap
+msgid "B<AT_EUID>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getloadavg.3:63
-msgid "This function is available in glibc since version 2.2."
+#: build/C/man3/getauxval.3:87
+msgid "The effective user ID of the thread."
msgstr ""
-#. mdoc seems to have a bug - there must be no newline here
-#. type: Plain text
-#: build/C/man3/getloadavg.3:67
-msgid "Not in POSIX.1-2001. Present on the BSDs and Solaris."
+#. type: TP
+#: build/C/man3/getauxval.3:87
+#, no-wrap
+msgid "B<AT_EXECFD>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getloadavg.3:70
-msgid "B<uptime>(1), B<proc>(5)"
+#: build/C/man3/getauxval.3:90
+msgid "File descriptor of program."
msgstr ""
-#. type: TH
-#: build/C/man3/getsubopt.3:23
+#. type: TP
+#: build/C/man3/getauxval.3:90
#, no-wrap
-msgid "GETSUBOPT"
+msgid "B<AT_EXECFN>"
msgstr ""
-#. type: TH
-#: build/C/man3/getsubopt.3:23 build/C/man3/mkdtemp.3:24
+#. type: Plain text
+#: build/C/man3/getauxval.3:93
+msgid "Pathname used to execute program."
+msgstr ""
+
+#. type: TP
+#: build/C/man3/getauxval.3:93
#, no-wrap
-msgid "2010-09-26"
+msgid "B<AT_FLAGS>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:26
-msgid "getsubopt - parse suboption arguments from a string"
+#: build/C/man3/getauxval.3:96
+msgid "Flags (unused)."
+msgstr ""
+
+#. type: TP
+#: build/C/man3/getauxval.3:96
+#, no-wrap
+msgid "B<AT_FPUCW>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:31
+#: build/C/man3/getauxval.3:101
msgid ""
-"B<int getsubopt(char **>I<optionp>B<, char * const *>I<tokens>B<, char "
-"**>I<valuep>B<);>"
+"Used FPU control word (SuperH architecture only). This gives some "
+"information about the FPU initialization performed by the kernel."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getsubopt.3:38
-msgid "B<getsubopt>():"
+#. type: TP
+#: build/C/man3/getauxval.3:101
+#, no-wrap
+msgid "B<AT_GID>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:43
-msgid "_XOPEN_SOURCE\\ E<gt>= 500 || _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
+#: build/C/man3/getauxval.3:104
+msgid "The real group ID of the thread."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getsubopt.3:45
-msgid "|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
+#. type: TP
+#: build/C/man3/getauxval.3:104
+#, no-wrap
+msgid "B<AT_HWCAP>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:62
+#: build/C/man3/getauxval.3:114
msgid ""
-"B<getsubopt>() parses the list of comma-separated suboptions provided in "
-"I<optionp>. (Such a suboption list is typically produced when B<getopt>(3) "
-"is used to parse a command line; see for example the I<-o> option of "
-"B<mount>(8).) Each suboption may include an associated value, which is "
-"separated from the suboption name by an equal sign. The following is an "
-"example of the kind of string that might be passed in I<optionp>:"
+"A pointer to a multibyte mask of bits whose settings indicate detailed "
+"processor capabilities. The contents of the bit mask are hardware dependent "
+"(for example, see the kernel source file "
+"I<arch/x86/include/asm/cpufeature.h> for details relating to the Intel x86 "
+"architecture). A human-readable version of the same information is "
+"available via I</proc/cpuinfo>."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getsubopt.3:65
-msgid "B<ro,name=xyz>"
+#. type: TP
+#: build/C/man3/getauxval.3:114
+#, no-wrap
+msgid "B<AT_ICACHEBSIZE>"
msgstr ""
+#. .TP
+#. .BR AT_IGNORE
+#. .TP
+#. .BR AT_IGNOREPPC
+#. .TP
+#. .BR AT_NOTELF
#. type: Plain text
-#: build/C/man3/getsubopt.3:75
-msgid ""
-"The I<tokens> argument is a pointer to a NULL-terminated array of pointers "
-"to the tokens that B<getsubopt>() will look for in I<optionp>. The tokens "
-"should be distinct, null-terminated strings containing at least one "
-"character, with no embedded equal signs or commas."
+#: build/C/man3/getauxval.3:123
+msgid "The instruction cache block size."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getsubopt.3:96
-msgid ""
-"Each call to B<getsubopt>() returns information about the next unprocessed "
-"suboption in I<optionp>. The first equal sign in a suboption (if any) is "
-"interpreted as a separator between the name and the value of that "
-"suboption. The value extends to the next comma, or (for the last suboption) "
-"to the end of the string. If the name of the suboption matches a known name "
-"from I<tokens>, and a value string was found, B<getsubopt>() sets "
-"I<*valuep> to the address of that string. The first comma in I<optionp> is "
-"overwritten with a null byte, so I<*valuep> is precisely the \"value "
-"string\" for that suboption."
+#. type: TP
+#: build/C/man3/getauxval.3:123
+#, no-wrap
+msgid "B<AT_PAGESZ>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:100
-msgid ""
-"If the suboption is recognized, but no value string was found, I<*valuep> is "
-"set to NULL."
+#: build/C/man3/getauxval.3:127
+msgid "The system page size (the same value returned by I<sysconf(_SC_PAGESIZE)>)."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getsubopt.3:108
-msgid ""
-"When B<getsubopt>() returns, I<optionp> points to the next suboption, or to "
-"the null byte (\\(aq\\e0\\(aq) at the end of the string if the last "
-"suboption was just processed."
+#. type: TP
+#: build/C/man3/getauxval.3:127
+#, no-wrap
+msgid "B<AT_PHDR>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:120
-msgid ""
-"If the first suboption in I<optionp> is recognized, B<getsubopt>() returns "
-"the index of the matching suboption element in I<tokens>. Otherwise, -1 is "
-"returned and I<*valuep> is the entire I<name>B<[=>I<value>B<]> string."
+#: build/C/man3/getauxval.3:130
+msgid "The address of the program headers of the executable."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getsubopt.3:127
-msgid ""
-"Since I<*optionp> is changed, the first suboption before the call to "
-"B<getsubopt>() is not (necessarily) the same as the first suboption after "
-"B<getsubopt>()."
+#. type: TP
+#: build/C/man3/getauxval.3:130
+#, no-wrap
+msgid "B<AT_PHENT>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:136
-msgid ""
-"Since B<getsubopt>() overwrites any commas it finds in the string "
-"I<*optionp>, that string must be writable; it cannot be a string constant."
+#: build/C/man3/getauxval.3:133
+msgid "The size of program header entry."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getsubopt.3:138
-msgid "The following program expects suboptions following a \"-o\" option."
+#. type: TP
+#: build/C/man3/getauxval.3:133
+#, no-wrap
+msgid "B<AT_PHNUM>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:144
+#: build/C/man3/getauxval.3:136
+msgid "The number of program headers."
+msgstr ""
+
+#. type: TP
+#: build/C/man3/getauxval.3:136
#, no-wrap
-msgid ""
-"#define _XOPEN_SOURCE 500\n"
-"#include E<lt>stdlib.hE<gt>\n"
-"#include E<lt>assert.hE<gt>\n"
-"#include E<lt>stdio.hE<gt>\n"
+msgid "B<AT_PLATFORM>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:161
-#, no-wrap
+#: build/C/man3/getauxval.3:143
msgid ""
-"int main(int argc, char **argv)\n"
-"{\n"
-" enum {\n"
-" RO_OPT = 0,\n"
-" RW_OPT,\n"
-" NAME_OPT\n"
-" };\n"
-" char *const token[] = {\n"
-" [RO_OPT] = \"ro\",\n"
-" [RW_OPT] = \"rw\",\n"
-" [NAME_OPT] = \"name\",\n"
-" NULL\n"
-" };\n"
-" char *subopts;\n"
-" char *value;\n"
-" int opt;\n"
+"A pointer to a string that identifies the hardware platform that the program "
+"is running on. The dynamic linker uses this in the interpretation of "
+"I<rpath> values."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getsubopt.3:166
+#. type: TP
+#: build/C/man3/getauxval.3:143
#, no-wrap
-msgid ""
-" int readonly = 0;\n"
-" int readwrite = 0;\n"
-" char *name = NULL;\n"
-" int errfnd = 0;\n"
+msgid "B<AT_RANDOM>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:172
+#: build/C/man3/getauxval.3:146
+msgid "The address of sixteen bytes containing a random value."
+msgstr ""
+
+#. type: TP
+#: build/C/man3/getauxval.3:146
#, no-wrap
-msgid ""
-" while ((opt = getopt(argc, argv, \"o:\")) != -1) {\n"
-" switch (opt) {\n"
-" case \\(aqo\\(aq:\n"
-" subopts = optarg;\n"
-" while (*subopts != \\(aq\\e0\\(aq && !errfnd) {\n"
+msgid "B<AT_SECURE>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:177
-#, no-wrap
+#: build/C/man3/getauxval.3:158
msgid ""
-" switch (getsubopt(&subopts, token, &value)) {\n"
-" case RO_OPT:\n"
-" readonly = 1;\n"
-" break;\n"
+"Has a nonzero value if this executable should be treated securely. Most "
+"commonly, a nonzero value indicates that the process is executing a "
+"set-user-ID or set-group-ID program; alternatively, a nonzero value may be "
+"triggered by a Linux Security Module. When this value is nonzero, the "
+"dynamic linker disables the use of certain environment variables (see "
+"B<ld-linux.so>(8)) and glibc changes other aspects of its behavior. (See "
+"also B<secure_getenv>(3).)"
msgstr ""
-#. type: Plain text
-#: build/C/man3/getsubopt.3:181
+#. type: TP
+#: build/C/man3/getauxval.3:158
#, no-wrap
-msgid ""
-" case RW_OPT:\n"
-" readwrite = 1;\n"
-" break;\n"
+msgid "B<AT_SYSINFO>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:189
-#, no-wrap
+#: build/C/man3/getauxval.3:162
msgid ""
-" case NAME_OPT:\n"
-" if (value == NULL) {\n"
-" fprintf(stderr, \"Missing value for \"\n"
-" \"suboption \\(aq%s\\(aq\\en\", "
-"token[NAME_OPT]);\n"
-" errfnd = 1;\n"
-" continue;\n"
-" }\n"
+"The entry point to the system call function in the vDSO. Not present/needed "
+"on all architectures (e.g., absent on x86-64)."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getsubopt.3:192
+#. type: TP
+#: build/C/man3/getauxval.3:162
#, no-wrap
-msgid ""
-" name = value;\n"
-" break;\n"
+msgid "B<AT_SYSINFO_EHDR>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:206
-#, no-wrap
+#: build/C/man3/getauxval.3:167
msgid ""
-" default:\n"
-" fprintf(stderr, \"No match found \"\n"
-" \"for token: /%s/\\en\", value);\n"
-" errfnd = 1;\n"
-" break;\n"
-" }\n"
-" }\n"
-" if (readwrite && readonly) {\n"
-" fprintf(stderr, \"Only one of \\(aq%s\\(aq and \\(aq%s\\(aq can "
-"be \"\n"
-" \"specified\\en\", token[RO_OPT], token[RW_OPT]);\n"
-" errfnd = 1;\n"
-" }\n"
-" break;\n"
+"The address of a page containing the virtual Dynamic Shared Object (vDSO) "
+"that the kernel creates in order to provide fast implementations of certain "
+"system calls."
msgstr ""
-#. type: Plain text
-#: build/C/man3/getsubopt.3:211
+#. type: TP
+#: build/C/man3/getauxval.3:167
#, no-wrap
-msgid ""
-" default:\n"
-" errfnd = 1;\n"
-" }\n"
-" }\n"
+msgid "B<AT_UCACHEBSIZE>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:218
+#: build/C/man3/getauxval.3:170
+msgid "The unified cache block size."
+msgstr ""
+
+#. type: TP
+#: build/C/man3/getauxval.3:170
#, no-wrap
-msgid ""
-" if (errfnd || argc == 1) {\n"
-" fprintf(stderr, \"\\enUsage: %s -o E<lt>suboptstringE<gt>\\en\", "
-"argv[0]);\n"
-" fprintf(stderr, \"suboptions are \\(aqro\\(aq, \\(aqrw\\(aq, \"\n"
-" \"and \\(aqname=E<lt>valueE<gt>\\(aq\\en\");\n"
-" exit(EXIT_FAILURE);\n"
-" }\n"
+msgid "B<AT_UID>"
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:220
-#, no-wrap
-msgid " /* Remainder of program... */\n"
+#: build/C/man3/getauxval.3:173
+msgid "The real user ID of the thread."
msgstr ""
#. type: Plain text
-#: build/C/man3/getsubopt.3:226
-msgid "B<getopt>(3)"
+#: build/C/man3/getauxval.3:181
+msgid ""
+"On success, B<getauxval>() returns the value corresponding to I<type>. If "
+"I<type> is not found, 0 is returned."
msgstr ""
-#. type: TH
-#: build/C/man3/malloc.3:28
+#. type: TP
+#: build/C/man3/getauxval.3:182
#, no-wrap
-msgid "MALLOC"
+msgid "B<ENOENT> (since glibc 2.19)"
msgstr ""
-#. type: TH
-#: build/C/man3/malloc.3:28
-#, no-wrap
-msgid "2012-05-10"
+#. commit b9ab448f980e296eac21ac65f53783967cc6037b
+#. type: Plain text
+#: build/C/man3/getauxval.3:188
+msgid "No entry corresponding to I<type> could be found in the auxiliary vector."
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:31
-msgid "malloc, free, calloc, realloc - Allocate and free dynamic memory"
+#: build/C/man3/getauxval.3:192
+msgid "The B<getauxval>() function was added to glibc in version 2.16."
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:39
-#, no-wrap
-msgid ""
-"B<void *malloc(size_t >I<size>B<);>\n"
-"B<void free(void >I<*ptr>B<);>\n"
-"B<void *calloc(size_t >I<nmemb>B<, size_t >I<size>B<);>\n"
-"B<void *realloc(void >I<*ptr>B<, size_t >I<size>B<);>\n"
+#: build/C/man3/getauxval.3:197
+msgid "The B<getauxval>() function is thread-safe."
msgstr ""
-#. glibc does this:
#. type: Plain text
-#: build/C/man3/malloc.3:56
-msgid ""
-"The B<malloc>() function allocates I<size> bytes and returns a pointer to "
-"the allocated memory. I<The memory is not initialized>. If I<size> is 0, "
-"then B<malloc>() returns either NULL, or a unique pointer value that can "
-"later be successfully passed to B<free>()."
+#: build/C/man3/getauxval.3:199
+msgid "This function is a nonstandard glibc extension."
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:72
+#: build/C/man3/getauxval.3:208
msgid ""
-"The B<free>() function frees the memory space pointed to by I<ptr>, which "
-"must have been returned by a previous call to B<malloc>(), B<calloc>() or "
-"B<realloc>(). Otherwise, or if I<free(ptr)> has already been called before, "
-"undefined behavior occurs. If I<ptr> is NULL, no operation is performed."
+"The primary consumer of the information in the auxiliary vector is the "
+"dynamic linker B<ld-linux.so>(8). The auxiliary vector is a convenient and "
+"efficient shortcut that allows the kernel to communicate a certain set of "
+"standard information that the dynamic linker usually or always needs. In "
+"some cases, the same information could be obtained by system calls, but "
+"using the auxiliary vector is cheaper."
msgstr ""
-#. glibc does this:
#. type: Plain text
-#: build/C/man3/malloc.3:91
+#: build/C/man3/getauxval.3:214
msgid ""
-"The B<calloc>() function allocates memory for an array of I<nmemb> elements "
-"of I<size> bytes each and returns a pointer to the allocated memory. The "
-"memory is set to zero. If I<nmemb> or I<size> is 0, then B<calloc>() "
-"returns either NULL, or a unique pointer value that can later be "
-"successfully passed to B<free>()."
+"The auxiliary vector resides just above the argument list and environment in "
+"the process address space. The auxiliary vector supplied to a program can "
+"be viewed by setting the B<LD_SHOW_AUXV> environment variable when running a "
+"program:"
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:127
-msgid ""
-"The B<realloc>() function changes the size of the memory block pointed to "
-"by I<ptr> to I<size> bytes. The contents will be unchanged in the range "
-"from the start of the region up to the minimum of the old and new sizes. If "
-"the new size is larger than the old size, the added memory will I<not> be "
-"initialized. If I<ptr> is NULL, then the call is equivalent to "
-"I<malloc(size)>, for all values of I<size>; if I<size> is equal to zero, and "
-"I<ptr> is not NULL, then the call is equivalent to I<free(ptr)>. Unless "
-"I<ptr> is NULL, it must have been returned by an earlier call to "
-"B<malloc>(), B<calloc>() or B<realloc>(). If the area pointed to was "
-"moved, a I<free(ptr)> is done."
+#: build/C/man3/getauxval.3:216
+#, no-wrap
+msgid " $ LD_SHOW_AUXV=1 sleep 1\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:147
+#: build/C/man3/getauxval.3:223
msgid ""
-"The B<malloc>() and B<calloc>() functions return a pointer to the "
-"allocated memory that is suitably aligned for any kind of variable. On "
-"error, these functions return NULL. NULL may also be returned by a "
-"successful call to B<malloc>() with a I<size> of zero, or by a successful "
-"call to B<calloc>() with I<nmemb> or I<size> equal to zero."
+"The auxiliary vector of any process can (subject to file permissions) be "
+"obtained via I</proc/PID/auxv>; see B<proc>(5) for more information."
msgstr ""
-#. type: Plain text
-#: build/C/man3/malloc.3:151
-msgid "The B<free>() function returns no value."
+#. type: SH
+#: 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 build/C/man2/getrandom.2:319
+#, no-wrap
+msgid "BUGS"
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:166
+#: build/C/man3/getauxval.3:232
msgid ""
-"The B<realloc>() function returns a pointer to the newly allocated memory, "
-"which is suitably aligned for any kind of variable and may be different from "
-"I<ptr>, or NULL if the request fails. If I<size> was equal to 0, either "
-"NULL or a pointer suitable to be passed to B<free>() is returned. If "
-"B<realloc>() fails the original block is left untouched; it is not freed or "
-"moved."
+"Before the addition of the B<ENOENT> error in glibc 2.19, there was no way "
+"to unambiguously distinguish the case where I<type> could not be found from "
+"the case where the value corresponding to I<type> was zero."
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:168
-msgid "C89, C99."
+#: build/C/man3/getauxval.3:236
+msgid "B<secure_getenv>(3), B<vdso>(7), B<ld-linux.so>(8)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/getenv.3:33
+#, no-wrap
+msgid "GETENV"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/getenv.3:33
+#, no-wrap
+msgid "2012-08-14"
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:184
-msgid ""
-"By default, Linux follows an optimistic memory allocation strategy. This "
-"means that when B<malloc>() returns non-NULL there is no guarantee that the "
-"memory really is available. In case it turns out that the system is out of "
-"memory, one or more processes will be killed by the OOM killer. For more "
-"information, see the description of I</proc/sys/vm/overcommit_memory> and "
-"I</proc/sys/vm/oom_adj> in B<proc>(5), and the kernel source file "
-"I<Documentation/vm/overcommit-accounting>."
+#: build/C/man3/getenv.3:36
+msgid "getenv, secure_getenv - get an environment variable"
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:205
-msgid ""
-"Normally, B<malloc>() allocates memory from the heap, and adjusts the size "
-"of the heap as required, using B<sbrk>(2). When allocating blocks of memory "
-"larger than B<MMAP_THRESHOLD> bytes, the glibc B<malloc>() implementation "
-"allocates the memory as a private anonymous mapping using B<mmap>(2). "
-"B<MMAP_THRESHOLD> is 128 kB by default, but is adjustable using "
-"B<mallopt>(3). Allocations performed using B<mmap>(2) are unaffected by "
-"the B<RLIMIT_DATA> resource limit (see B<getrlimit>(2))."
+#: build/C/man3/getenv.3:41
+#, no-wrap
+msgid "B<char *getenv(const char *>I<name>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:223
-msgid ""
-"To avoid corruption in multithreaded applications, mutexes are used "
-"internally to protect the memory-management data structures employed by "
-"these functions. In a multithreaded application in which threads "
-"simultaneously allocate and free memory, there could be contention for these "
-"mutexes. To scalably handle memory allocation in multithreaded "
-"applications, glibc creates additional I<memory allocation arenas> if mutex "
-"contention is detected. Each arena is a large region of memory that is "
-"internally allocated by the system (using B<brk>(2) or B<mmap>(2)), and "
-"managed with its own mutexes."
+#: build/C/man3/getenv.3:43
+#, no-wrap
+msgid "B<char *secure_getenv(const char *>I<name>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:241
-msgid ""
-"The UNIX 98 standard requires B<malloc>(), B<calloc>(), and B<realloc>() to "
-"set I<errno> to B<ENOMEM> upon failure. Glibc assumes that this is done "
-"(and the glibc versions of these routines do this); if you use a private "
-"malloc implementation that does not set I<errno>, then certain library "
-"routines may fail without having a reason in I<errno>."
+#: build/C/man3/getenv.3:52
+msgid "B<secure_getenv>(): _GNU_SOURCE"
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:250
+#: build/C/man3/getenv.3:61
msgid ""
-"Crashes in B<malloc>(), B<calloc>(), B<realloc>(), or B<free>() are almost "
-"always related to heap corruption, such as overflowing an allocated chunk or "
-"freeing the same pointer twice."
+"The B<getenv>() function searches the environment list to find the "
+"environment variable I<name>, and returns a pointer to the corresponding "
+"I<value> string."
msgstr ""
#. type: Plain text
-#: build/C/man3/malloc.3:257
+#: build/C/man3/getenv.3:69
msgid ""
-"Recent versions of Linux libc (later than 5.4.23) and glibc (2.x) include a "
-"B<malloc>() implementation which is tunable via environment variables. For "
-"details, see B<mallopt>(3)."
+"The GNU-specific B<secure_getenv>() function is just like B<getenv>() "
+"except that it returns NULL in cases where \"secure execution\" is "
+"required. Secure execution is required if one of the following conditions "
+"was true when the program run by the calling process was loaded:"
+msgstr ""
+
+#. type: IP
+#: 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 build/C/man2/getrandom.2:176 build/C/man2/getrandom.2:184 build/C/man2/getrandom.2:322
+#, no-wrap
+msgid "*"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:74
+msgid ""
+"the process's effective user ID did not match its real user ID or the "
+"process's effective group ID did not match its real group ID (typically this "
+"is the result of executing a set-user-ID or set-group-ID program);"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:76
+msgid "the effective capability bit was set on the executable file; or"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:78
+msgid "the process has a nonempty permitted capability set."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:81
+msgid ""
+"Secure execution may also required if triggered by some Linux security "
+"modules."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:88
+msgid ""
+"The B<secure_getenv>() function is intended for use in general-purpose "
+"libraries to avoid vulnerabilities that could occur if set-user-ID or "
+"set-group-ID programs accidentally trusted the environment."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:93
+msgid ""
+"The B<getenv>() function returns a pointer to the value in the environment, "
+"or NULL if there is no match."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:96
+msgid "B<secure_getenv>() first appeared in glibc 2.17."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:99
+msgid "B<getenv>(): SVr4, POSIX.1-2001, 4.3BSD, C89, C99."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:102
+msgid "B<secure_getenv>() is a GNU extension."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:104
+msgid "The strings in the environment list are of the form I<name=value>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:110
+msgid ""
+"As typically implemented, B<getenv>() returns a pointer to a string within "
+"the environment list. The caller must take care not to modify this string, "
+"since that would change the environment of the process."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:123
+msgid ""
+"The implementation of B<getenv>() is not required to be reentrant. The "
+"string pointed to by the return value of B<getenv>() may be statically "
+"allocated, and can be modified by a subsequent call to B<getenv>(), "
+"B<putenv>(3), B<setenv>(3), or B<unsetenv>(3)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:129
+msgid ""
+"The \"secure execution\" mode of B<secure_getenv>() is controlled by the "
+"B<AT_SECURE> flag contained in the auxiliary vector passed from the kernel "
+"to user space."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getenv.3:137
+msgid ""
+"B<clearenv>(3), B<getauxval>(3), B<putenv>(3), B<setenv>(3), B<unsetenv>(3), "
+"B<capabilities>(7), B<environ>(7)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/getloadavg.3:34
+#, no-wrap
+msgid "GETLOADAVG"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/getloadavg.3:34
+#, no-wrap
+msgid "2014-04-01"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getloadavg.3:37
+msgid "getloadavg - get system load averages"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getloadavg.3:41
+#, no-wrap
+msgid ""
+"B<#define _BSD_SOURCE> /* See feature_test_macros(7) */\n"
+"B<#include E<lt>stdlib.hE<gt>>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getloadavg.3:43
+#, no-wrap
+msgid "B<int getloadavg(double >I<loadavg[]>B<, int >I<nelem>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getloadavg.3:55
+msgid ""
+"The B<getloadavg>() function returns the number of processes in the system "
+"run queue averaged over various periods of time. Up to I<nelem> samples are "
+"retrieved and assigned to successive elements of I<loadavg>[]. The system "
+"imposes a maximum of 3 samples, representing averages over the last 1, 5, "
+"and 15 minutes, respectively."
+msgstr ""
+
+#. .SH HISTORY
+#. The
+#. BR getloadavg ()
+#. function appeared in
+#. 4.3BSD Reno .
+#. type: Plain text
+#: build/C/man3/getloadavg.3:63
+msgid ""
+"If the load average was unobtainable, -1 is returned; otherwise, the number "
+"of samples actually retrieved is returned."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getloadavg.3:65
+msgid "This function is available in glibc since version 2.2."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getloadavg.3:70
+msgid "The B<getloadavg>() function is thread-safe."
+msgstr ""
+
+#. mdoc seems to have a bug - there must be no newline here
+#. type: Plain text
+#: build/C/man3/getloadavg.3:74
+msgid "Not in POSIX.1-2001. Present on the BSDs and Solaris."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getloadavg.3:77
+msgid "B<uptime>(1), B<proc>(5)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/getsubopt.3:25
+#, no-wrap
+msgid "GETSUBOPT"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/getsubopt.3:25
+#, no-wrap
+msgid "2014-04-08"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:28
+msgid "getsubopt - parse suboption arguments from a string"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:33
+msgid ""
+"B<int getsubopt(char **>I<optionp>B<, char * const *>I<tokens>B<, char "
+"**>I<valuep>B<);>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:40
+msgid "B<getsubopt>():"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:45
+msgid "_XOPEN_SOURCE\\ E<gt>= 500 || _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:47
+msgid "|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:64
+msgid ""
+"B<getsubopt>() parses the list of comma-separated suboptions provided in "
+"I<optionp>. (Such a suboption list is typically produced when B<getopt>(3) "
+"is used to parse a command line; see for example the I<-o> option of "
+"B<mount>(8).) Each suboption may include an associated value, which is "
+"separated from the suboption name by an equal sign. The following is an "
+"example of the kind of string that might be passed in I<optionp>:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:67
+msgid "B<ro,name=xyz>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:77
+msgid ""
+"The I<tokens> argument is a pointer to a NULL-terminated array of pointers "
+"to the tokens that B<getsubopt>() will look for in I<optionp>. The tokens "
+"should be distinct, null-terminated strings containing at least one "
+"character, with no embedded equal signs or commas."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:98
+msgid ""
+"Each call to B<getsubopt>() returns information about the next unprocessed "
+"suboption in I<optionp>. The first equal sign in a suboption (if any) is "
+"interpreted as a separator between the name and the value of that "
+"suboption. The value extends to the next comma, or (for the last suboption) "
+"to the end of the string. If the name of the suboption matches a known name "
+"from I<tokens>, and a value string was found, B<getsubopt>() sets "
+"I<*valuep> to the address of that string. The first comma in I<optionp> is "
+"overwritten with a null byte, so I<*valuep> is precisely the \"value "
+"string\" for that suboption."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:102
+msgid ""
+"If the suboption is recognized, but no value string was found, I<*valuep> is "
+"set to NULL."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:110
+msgid ""
+"When B<getsubopt>() returns, I<optionp> points to the next suboption, or to "
+"the null byte (\\(aq\\e0\\(aq) at the end of the string if the last "
+"suboption was just processed."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:122
+msgid ""
+"If the first suboption in I<optionp> is recognized, B<getsubopt>() returns "
+"the index of the matching suboption element in I<tokens>. Otherwise, -1 is "
+"returned and I<*valuep> is the entire I<name>B<[=>I<value>B<]> string."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:129
+msgid ""
+"Since I<*optionp> is changed, the first suboption before the call to "
+"B<getsubopt>() is not (necessarily) the same as the first suboption after "
+"B<getsubopt>()."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:134
+msgid "The B<getsubopt>() function is thread-safe."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:143
+msgid ""
+"Since B<getsubopt>() overwrites any commas it finds in the string "
+"I<*optionp>, that string must be writable; it cannot be a string constant."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:145
+msgid "The following program expects suboptions following a \"-o\" option."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:151
+#, no-wrap
+msgid ""
+"#define _XOPEN_SOURCE 500\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>assert.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:169
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char **argv)\n"
+"{\n"
+" enum {\n"
+" RO_OPT = 0,\n"
+" RW_OPT,\n"
+" NAME_OPT\n"
+" };\n"
+" char *const token[] = {\n"
+" [RO_OPT] = \"ro\",\n"
+" [RW_OPT] = \"rw\",\n"
+" [NAME_OPT] = \"name\",\n"
+" NULL\n"
+" };\n"
+" char *subopts;\n"
+" char *value;\n"
+" int opt;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:174
+#, no-wrap
+msgid ""
+" int readonly = 0;\n"
+" int readwrite = 0;\n"
+" char *name = NULL;\n"
+" int errfnd = 0;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:180
+#, no-wrap
+msgid ""
+" while ((opt = getopt(argc, argv, \"o:\")) != -1) {\n"
+" switch (opt) {\n"
+" case \\(aqo\\(aq:\n"
+" subopts = optarg;\n"
+" while (*subopts != \\(aq\\e0\\(aq && !errfnd) {\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:185
+#, no-wrap
+msgid ""
+" switch (getsubopt(&subopts, token, &value)) {\n"
+" case RO_OPT:\n"
+" readonly = 1;\n"
+" break;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:189
+#, no-wrap
+msgid ""
+" case RW_OPT:\n"
+" readwrite = 1;\n"
+" break;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:197
+#, no-wrap
+msgid ""
+" case NAME_OPT:\n"
+" if (value == NULL) {\n"
+" fprintf(stderr, \"Missing value for \"\n"
+" \"suboption \\(aq%s\\(aq\\en\", "
+"token[NAME_OPT]);\n"
+" errfnd = 1;\n"
+" continue;\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:200
+#, no-wrap
+msgid ""
+" name = value;\n"
+" break;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:214
+#, no-wrap
+msgid ""
+" default:\n"
+" fprintf(stderr, \"No match found \"\n"
+" \"for token: /%s/\\en\", value);\n"
+" errfnd = 1;\n"
+" break;\n"
+" }\n"
+" }\n"
+" if (readwrite && readonly) {\n"
+" fprintf(stderr, \"Only one of \\(aq%s\\(aq and \\(aq%s\\(aq can "
+"be \"\n"
+" \"specified\\en\", token[RO_OPT], token[RW_OPT]);\n"
+" errfnd = 1;\n"
+" }\n"
+" break;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:219
+#, no-wrap
+msgid ""
+" default:\n"
+" errfnd = 1;\n"
+" }\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:226
+#, no-wrap
+msgid ""
+" if (errfnd || argc == 1) {\n"
+" fprintf(stderr, \"\\enUsage: %s -o E<lt>suboptstringE<gt>\\en\", "
+"argv[0]);\n"
+" fprintf(stderr, \"suboptions are \\(aqro\\(aq, \\(aqrw\\(aq, \"\n"
+" \"and \\(aqname=E<lt>valueE<gt>\\(aq\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:228
+#, no-wrap
+msgid " /* Remainder of program... */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/getsubopt.3:234
+msgid "B<getopt>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/malloc.3:33
+#, no-wrap
+msgid "MALLOC"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/malloc.3:33
+#, no-wrap
+msgid "2014-05-21"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:36
+msgid "malloc, free, calloc, realloc - allocate and free dynamic memory"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:44
+#, no-wrap
+msgid ""
+"B<void *malloc(size_t >I<size>B<);>\n"
+"B<void free(void >I<*ptr>B<);>\n"
+"B<void *calloc(size_t >I<nmemb>B<, size_t >I<size>B<);>\n"
+"B<void *realloc(void >I<*ptr>B<, size_t >I<size>B<);>\n"
+msgstr ""
+
+#. glibc does this:
+#. type: Plain text
+#: build/C/man3/malloc.3:61
+msgid ""
+"The B<malloc>() function allocates I<size> bytes and returns a pointer to "
+"the allocated memory. I<The memory is not initialized>. If I<size> is 0, "
+"then B<malloc>() returns either NULL, or a unique pointer value that can "
+"later be successfully passed to B<free>()."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:77
+msgid ""
+"The B<free>() function frees the memory space pointed to by I<ptr>, which "
+"must have been returned by a previous call to B<malloc>(), B<calloc>(), or "
+"B<realloc>(). Otherwise, or if I<free(ptr)> has already been called before, "
+"undefined behavior occurs. If I<ptr> is NULL, no operation is performed."
+msgstr ""
+
+#. glibc does this:
+#. type: Plain text
+#: build/C/man3/malloc.3:96
+msgid ""
+"The B<calloc>() function allocates memory for an array of I<nmemb> elements "
+"of I<size> bytes each and returns a pointer to the allocated memory. The "
+"memory is set to zero. If I<nmemb> or I<size> is 0, then B<calloc>() "
+"returns either NULL, or a unique pointer value that can later be "
+"successfully passed to B<free>()."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:132
+msgid ""
+"The B<realloc>() function changes the size of the memory block pointed to "
+"by I<ptr> to I<size> bytes. The contents will be unchanged in the range "
+"from the start of the region up to the minimum of the old and new sizes. If "
+"the new size is larger than the old size, the added memory will I<not> be "
+"initialized. If I<ptr> is NULL, then the call is equivalent to "
+"I<malloc(size)>, for all values of I<size>; if I<size> is equal to zero, and "
+"I<ptr> is not NULL, then the call is equivalent to I<free(ptr)>. Unless "
+"I<ptr> is NULL, it must have been returned by an earlier call to "
+"B<malloc>(), B<calloc>() or B<realloc>(). If the area pointed to was "
+"moved, a I<free(ptr)> is done."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:152
+msgid ""
+"The B<malloc>() and B<calloc>() functions return a pointer to the "
+"allocated memory, which is suitably aligned for any built-in type. On "
+"error, these functions return NULL. NULL may also be returned by a "
+"successful call to B<malloc>() with a I<size> of zero, or by a successful "
+"call to B<calloc>() with I<nmemb> or I<size> equal to zero."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:156
+msgid "The B<free>() function returns no value."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:171
+msgid ""
+"The B<realloc>() function returns a pointer to the newly allocated memory, "
+"which is suitably aligned for any built-in type and may be different from "
+"I<ptr>, or NULL if the request fails. If I<size> was equal to 0, either "
+"NULL or a pointer suitable to be passed to B<free>() is returned. If "
+"B<realloc>() fails, the original block is left untouched; it is not freed "
+"or moved."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:173
+msgid "C89, C99."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:189
+msgid ""
+"By default, Linux follows an optimistic memory allocation strategy. This "
+"means that when B<malloc>() returns non-NULL there is no guarantee that the "
+"memory really is available. In case it turns out that the system is out of "
+"memory, one or more processes will be killed by the OOM killer. For more "
+"information, see the description of I</proc/sys/vm/overcommit_memory> and "
+"I</proc/sys/vm/oom_adj> in B<proc>(5), and the Linux kernel source file "
+"I<Documentation/vm/overcommit-accounting>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:210
+msgid ""
+"Normally, B<malloc>() allocates memory from the heap, and adjusts the size "
+"of the heap as required, using B<sbrk>(2). When allocating blocks of memory "
+"larger than B<MMAP_THRESHOLD> bytes, the glibc B<malloc>() implementation "
+"allocates the memory as a private anonymous mapping using B<mmap>(2). "
+"B<MMAP_THRESHOLD> is 128 kB by default, but is adjustable using "
+"B<mallopt>(3). Allocations performed using B<mmap>(2) are unaffected by "
+"the B<RLIMIT_DATA> resource limit (see B<getrlimit>(2))."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:228
+msgid ""
+"To avoid corruption in multithreaded applications, mutexes are used "
+"internally to protect the memory-management data structures employed by "
+"these functions. In a multithreaded application in which threads "
+"simultaneously allocate and free memory, there could be contention for these "
+"mutexes. To scalably handle memory allocation in multithreaded "
+"applications, glibc creates additional I<memory allocation arenas> if mutex "
+"contention is detected. Each arena is a large region of memory that is "
+"internally allocated by the system (using B<brk>(2) or B<mmap>(2)), and "
+"managed with its own mutexes."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:246
+msgid ""
+"The UNIX 98 standard requires B<malloc>(), B<calloc>(), and B<realloc>() to "
+"set I<errno> to B<ENOMEM> upon failure. Glibc assumes that this is done "
+"(and the glibc versions of these routines do this); if you use a private "
+"malloc implementation that does not set I<errno>, then certain library "
+"routines may fail without having a reason in I<errno>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:255
+msgid ""
+"Crashes in B<malloc>(), B<calloc>(), B<realloc>(), or B<free>() are almost "
+"always related to heap corruption, such as overflowing an allocated chunk or "
+"freeing the same pointer twice."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:261
+msgid ""
+"The B<malloc>() implementation is tunable via environment variables; see "
+"B<mallopt>(3) for details."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/malloc.3:285
+msgid ""
+"B<brk>(2), B<mmap>(2), B<alloca>(3), B<malloc_get_state>(3), "
+"B<malloc_info>(3), B<malloc_trim>(3), B<malloc_usable_size>(3), "
+"B<mallopt>(3), B<mcheck>(3), B<mtrace>(3), B<posix_memalign>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/mblen.3:16
+#, no-wrap
+msgid "MBLEN"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/mblen.3:16
+#, no-wrap
+msgid "2013-06-21"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mblen.3:19
+msgid "mblen - determine number of bytes in next multibyte character"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mblen.3:24
+#, no-wrap
+msgid "B<int mblen(const char *>I<s>B<, size_t >I<n>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mblen.3:43
+msgid ""
+"If I<s> is not NULL, the B<mblen>() function inspects at most I<n> bytes of "
+"the multibyte string starting at I<s> and extracts the next complete "
+"multibyte character. It uses a static anonymous shift state known only to "
+"the B<mblen>() function. If the multibyte character is not the null wide "
+"character, it returns the number of bytes that were consumed from I<s>. If "
+"the multibyte character is the null wide character, it returns 0."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mblen.3:57
+msgid ""
+"If the I<n> bytes starting at I<s> do not contain a complete multibyte "
+"character, B<mblen>() returns -1. This can happen even if I<n> is greater "
+"than or equal to I<MB_CUR_MAX>, if the multibyte string contains redundant "
+"shift sequences."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mblen.3:64
+msgid ""
+"If the multibyte string starting at I<s> contains an invalid multibyte "
+"sequence before the next complete character, B<mblen>() also returns -1."
+msgstr ""
+
+#. The Dinkumware doc and the Single UNIX specification say this, but
+#. glibc doesn't implement this.
+#. type: Plain text
+#: build/C/man3/mblen.3:75
+msgid ""
+"If I<s> is NULL, the B<mblen>() function resets the shift state, known to "
+"only this function, to the initial state, and returns nonzero if the "
+"encoding has nontrivial shift state, or zero if the encoding is stateless."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mblen.3:87
+msgid ""
+"The B<mblen>() function returns the number of bytes parsed from the "
+"multibyte sequence starting at I<s>, if a non-null wide character was "
+"recognized. It returns 0, if a null wide character was recognized. It "
+"returns -1, if an invalid multibyte sequence was encountered or if it "
+"couldn't parse a complete multibyte character."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mblen.3:92
+msgid "The B<mblen>() function is not thread-safe."
+msgstr ""
+
+#. type: Plain text
+#: 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
+msgid "C99."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mblen.3:101
+msgid ""
+"The behavior of B<mblen>() depends on the B<LC_CTYPE> category of the "
+"current locale."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mblen.3:106
+msgid ""
+"The function B<mbrlen>(3) provides a better interface to the same "
+"functionality."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mblen.3:108
+msgid "B<mbrlen>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/mbstowcs.3:18
+#, no-wrap
+msgid "MBSTOWCS"
+msgstr ""
+
+#. type: TH
+#: 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
+#, no-wrap
+msgid "2014-03-18"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:21
+msgid "mbstowcs - convert a multibyte string to a wide-character string"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:26
+#, no-wrap
+msgid ""
+"B<size_t mbstowcs(wchar_t *>I<dest>B<, const char *>I<src>B<, size_t "
+">I<n>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:45
+msgid ""
+"If I<dest> is not NULL, the B<mbstowcs>() function converts the multibyte "
+"string I<src> to a wide-character string starting at I<dest>. At most I<n> "
+"wide characters are written to I<dest>. The conversion starts in the "
+"initial state. The conversion can stop for three reasons:"
+msgstr ""
+
+#. type: IP
+#: build/C/man3/mbstowcs.3:45
+#, no-wrap
+msgid "1."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:50
+msgid ""
+"An invalid multibyte sequence has been encountered. In this case, "
+"I<(size_t)\\ -1> is returned."
+msgstr ""
+
+#. type: IP
+#: build/C/man3/mbstowcs.3:50
+#, no-wrap
+msgid "2."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:58
+msgid ""
+"I<n> non-L\\(aq\\e0\\(aq wide characters have been stored at I<dest>. In "
+"this case, the number of wide characters written to I<dest> is returned, but "
+"the shift state at this point is lost."
+msgstr ""
+
+#. type: IP
+#: build/C/man3/mbstowcs.3:58
+#, no-wrap
+msgid "3."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:64
+msgid ""
+"The multibyte string has been completely converted, including the "
+"terminating null wide character (\\(aq\\e0\\(aq). In this case, the number "
+"of wide characters written to I<dest>, excluding the terminating null wide "
+"character, is returned."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:70
+msgid ""
+"The programmer must ensure that there is room for at least I<n> wide "
+"characters at I<dest>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:78
+msgid ""
+"If I<dest> is NULL, I<n> is ignored, and the conversion proceeds as above, "
+"except that the converted wide characters are not written out to memory, and "
+"that no length limit exists."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:84
+msgid ""
+"In order to avoid the case 2 above, the programmer should make sure I<n> is "
+"greater than or equal to I<mbstowcs(NULL,src,0)+1>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:94
+msgid ""
+"The B<mbstowcs>() function returns the number of wide characters that make "
+"up the converted part of the wide-character string, not including the "
+"terminating null wide character. If an invalid multibyte sequence was "
+"encountered, I<(size_t)\\ -1> is returned."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:103
+msgid ""
+"The behavior of B<mbstowcs>() depends on the B<LC_CTYPE> category of the "
+"current locale."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:108
+msgid ""
+"The function B<mbsrtowcs>(3) provides a better interface to the same "
+"functionality."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:113
+msgid ""
+"The program below illustrates the use of B<mbstowcs>(), as well as some of "
+"the wide character classification functions. An example run is the "
+"following:"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:120
+#, no-wrap
+msgid ""
+"$ ./t_mbstowcs de_DE.UTF-8 Grüße!\n"
+"Length of source string (excluding terminator):\n"
+" 8 bytes\n"
+" 6 multibyte characters\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:128
+#, no-wrap
+msgid ""
+"Wide character string is: Grüße! (6 characters)\n"
+" G alpha upper\n"
+" r alpha lower\n"
+" ü alpha lower\n"
+" ß alpha lower\n"
+" e alpha lower\n"
+" ! !alpha\n"
+msgstr ""
+
+#. type: SS
+#: build/C/man3/mbstowcs.3:130 build/C/man3/strtol.3:248
+#, no-wrap
+msgid "Program source"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:137
+#, no-wrap
+msgid ""
+"#include E<lt>locale.hE<gt>\n"
+"#include E<lt>wchar.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:144
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" size_t mbslen; /* Number of multibyte characters in source */\n"
+" wchar_t *wcs; /* Pointer to converted wide character string */\n"
+" wchar_t *wp;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:149
+#, no-wrap
+msgid ""
+" if (argc E<lt> 3) {\n"
+" fprintf(stderr, \"Usage: %s E<lt>localeE<gt> E<lt>stringE<gt>\\en\", "
+"argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:151
+#, no-wrap
+msgid " /* Apply the specified locale */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:156
+#, no-wrap
+msgid ""
+" if (setlocale(LC_ALL, argv[1]) == NULL) {\n"
+" perror(\"setlocale\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:159
+#, no-wrap
+msgid ""
+" /* Calculate the length required to hold argv[2] converted to\n"
+" a wide character string */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:165
+#, no-wrap
+msgid ""
+" mbslen = mbstowcs(NULL, argv[2], 0);\n"
+" if (mbslen == (size_t) -1) {\n"
+" perror(\"mbstowcs\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:167
+#, no-wrap
+msgid " /* Describe the source string to the user */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:171
+#, no-wrap
+msgid ""
+" printf(\"Length of source string (excluding terminator):\\en\");\n"
+" printf(\" %zu bytes\\en\", strlen(argv[2]));\n"
+" printf(\" %zu multibyte characters\\en\\en\", mbslen);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:174
+#, no-wrap
+msgid ""
+" /* Allocate wide character string of the desired size. Add 1\n"
+" to allow for terminating null wide character (L\\(aq\\e0\\(aq). */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:180
+#, no-wrap
+msgid ""
+" wcs = calloc(mbslen + 1, sizeof(wchar_t));\n"
+" if (wcs == NULL) {\n"
+" perror(\"calloc\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:183
+#, no-wrap
+msgid ""
+" /* Convert the multibyte character string in argv[2] to a\n"
+" wide character string */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:188
+#, no-wrap
+msgid ""
+" if (mbstowcs(wcs, argv[2], mbslen + 1) == (size_t) -1) {\n"
+" perror(\"mbstowcs\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:191
+#, no-wrap
+msgid ""
+" printf(\"Wide character string is: %ls (%zu characters)\\en\",\n"
+" wcs, mbslen);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:194
+#, no-wrap
+msgid ""
+" /* Now do some inspection of the classes of the characters in\n"
+" the wide character string */\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:197
+#, no-wrap
+msgid ""
+" for (wp = wcs; *wp != 0; wp++) {\n"
+" printf(\" %lc \", (wint_t) *wp);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:201
+#, no-wrap
+msgid ""
+" if (!iswalpha(*wp))\n"
+" printf(\"!\");\n"
+" printf(\"alpha \");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:205
+#, no-wrap
+msgid ""
+" if (iswalpha(*wp)) {\n"
+" if (iswupper(*wp))\n"
+" printf(\"upper \");\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:209
+#, no-wrap
+msgid ""
+" if (iswlower(*wp))\n"
+" printf(\"lower \");\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:212
+#, no-wrap
+msgid ""
+" putchar(\\(aq\\en\\(aq);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbstowcs.3:222
+msgid "B<mblen>(3), B<mbsrtowcs>(3), B<mbtowc>(3), B<wctomb>(3), B<wcstombs>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/mbtowc.3:16
+#, no-wrap
+msgid "MBTOWC"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbtowc.3:19
+msgid "mbtowc - convert a multibyte sequence to a wide character"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbtowc.3:24
+#, no-wrap
+msgid "B<int mbtowc(wchar_t *>I<pwc>B<, const char *>I<s>B<, size_t >I<n>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbtowc.3:50
+msgid ""
+"The main case for this function is when I<s> is not NULL and I<pwc> is not "
+"NULL. In this case, the B<mbtowc>() function inspects at most I<n> bytes "
+"of the multibyte string starting at I<s>, extracts the next complete "
+"multibyte character, converts it to a wide character and stores it at "
+"I<*pwc>. It updates an internal shift state known only to the B<mbtowc>() "
+"function. If I<s> does not point to a null byte (\\(aq\\e0\\(aq), it "
+"returns the number of bytes that were consumed from I<s>, otherwise it "
+"returns 0."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbtowc.3:64
+msgid ""
+"If the I<n> bytes starting at I<s> do not contain a complete multibyte "
+"character, or if they contain an invalid multibyte sequence, B<mbtowc>() "
+"returns -1. This can happen even if I<n> E<gt>= I<MB_CUR_MAX>, if the "
+"multibyte string contains redundant shift sequences."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbtowc.3:74
+msgid ""
+"A different case is when I<s> is not NULL but I<pwc> is NULL. In this case, "
+"the B<mbtowc>() function behaves as above, except that it does not store "
+"the converted wide character in memory."
+msgstr ""
+
+#. The Dinkumware doc and the Single UNIX specification say this, but
+#. glibc doesn't implement this.
+#. type: Plain text
+#: build/C/man3/mbtowc.3:93
+msgid ""
+"A third case is when I<s> is NULL. In this case, I<pwc> and I<n> are "
+"ignored. The B<mbtowc>() function resets the shift state, only known to "
+"this function, to the initial state, and returns nonzero if the encoding has "
+"nontrivial shift state, or zero if the encoding is stateless."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbtowc.3:105
+msgid ""
+"If I<s> is not NULL, the B<mbtowc>() function returns the number of "
+"consumed bytes starting at I<s>, or 0 if I<s> points to a null byte, or -1 "
+"upon failure."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbtowc.3:113
+msgid ""
+"If I<s> is NULL, the B<mbtowc>() function returns nonzero if the encoding "
+"has nontrivial shift state, or zero if the encoding is stateless."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbtowc.3:122
+msgid ""
+"The behavior of B<mbtowc>() depends on the B<LC_CTYPE> category of the "
+"current locale."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbtowc.3:128
+msgid ""
+"This function is not multithread safe. The function B<mbrtowc>(3) provides "
+"a better interface to the same functionality."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mbtowc.3:135
+msgid ""
+"B<MB_CUR_MAX>(3), B<mblen>(3), B<mbrtowc>(3), B<mbstowcs>(3), B<wctomb>(3), "
+"B<wcstombs>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/mkdtemp.3:26
+#, no-wrap
+msgid "MKDTEMP"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/mkdtemp.3:26 build/C/man3/system.3:31
+#, no-wrap
+msgid "2014-06-13"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:29
+msgid "mkdtemp - create a unique temporary directory"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:34
+#, no-wrap
+msgid "B<char *mkdtemp(char *>I<template>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:42
+msgid "B<mkdtemp>():"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:47
+msgid "_BSD_SOURCE"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:49
+msgid "|| /* Since glibc 2.10: */"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:51
+msgid "(_POSIX_C_SOURCE\\ E<gt>=\\ 200809L || _XOPEN_SOURCE\\ E<gt>=\\ 700)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:68
+msgid ""
+"The B<mkdtemp>() function generates a uniquely named temporary directory "
+"from I<template>. The last six characters of I<template> must be XXXXXX and "
+"these are replaced with a string that makes the directory name unique. The "
+"directory is then created with permissions 0700. Since it will be modified, "
+"I<template> must not be a string constant, but should be declared as a "
+"character array."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:75
+msgid ""
+"The B<mkdtemp>() function returns a pointer to the modified template string "
+"on success, and NULL on failure, in which case I<errno> is set "
+"appropriately."
+msgstr ""
+
+#. type: TP
+#: 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 build/C/man2/getrandom.2:142
+#, no-wrap
+msgid "B<EINVAL>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:80
+msgid ""
+"The last six characters of I<template> were not XXXXXX. Now I<template> is "
+"unchanged."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:84
+msgid "Also see B<mkdir>(2) for other possible values for I<errno>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:86
+msgid "Available since glibc 2.1.91."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:91
+msgid "The B<mkdtemp>() function is thread-safe."
+msgstr ""
+
+#. As at 2006, this function is being considered for a revision of POSIX.1
+#. Also in NetBSD 1.4.
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:96
+msgid "POSIX.1-2008. This function is present on the BSDs."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkdtemp.3:103
+msgid ""
+"B<mkdir>(2), B<mkstemp>(3), B<mktemp>(3), B<tempnam>(3), B<tmpfile>(3), "
+"B<tmpnam>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/mkstemp.3:35
+#, no-wrap
+msgid "MKSTEMP"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:38
+msgid "mkstemp, mkostemp, mkstemps, mkostemps - create a unique temporary file"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:43
+#, no-wrap
+msgid "B<int mkstemp(char *>I<template>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:45
+#, no-wrap
+msgid "B<int mkostemp(char *>I<template>B<, int >I<flags>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:47
+#, no-wrap
+msgid "B<int mkstemps(char *>I<template>B<, int >I<suffixlen>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:49
+#, no-wrap
+msgid ""
+"B<int mkostemps(char *>I<template>B<, int >I<suffixlen>B<, int "
+">I<flags>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:57
+msgid "B<mkstemp>():"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:62 build/C/man3/mktemp.3:63
+msgid ""
+"_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
+"_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:64
+msgid "|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200112L"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:70
+msgid "B<mkostemp>(): _GNU_SOURCE"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:73
+msgid "B<mkstemps>(): _BSD_SOURCE || _SVID_SOURCE"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:76
+msgid "B<mkostemps>(): _GNU_SOURCE"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:83
+msgid ""
+"The B<mkstemp>() function generates a unique temporary filename from "
+"I<template>, creates and opens the file, and returns an open file descriptor "
+"for the file."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:91
+msgid ""
+"The last six characters of I<template> must be \"XXXXXX\" and these are "
+"replaced with a string that makes the filename unique. Since it will be "
+"modified, I<template> must not be a string constant, but should be declared "
+"as a character array."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:99
+msgid ""
+"The file is created with permissions 0600, that is, read plus write for "
+"owner only. The returned file descriptor provides both read and write "
+"access to the file. The file is opened with the B<open>(2) B<O_EXCL> flag, "
+"guaranteeing that the caller is the process that creates the file."
+msgstr ""
+
+#. Reportedly, FreeBSD
+#. type: Plain text
+#: build/C/man3/mkstemp.3:130
+msgid ""
+"The B<mkostemp>() function is like B<mkstemp>(), with the difference that "
+"the following bits\\(emwith the same meaning as for B<open>(2)\\(emmay be "
+"specified in I<flags>: B<O_APPEND>, B<O_CLOEXEC>, and B<O_SYNC>. Note that "
+"when creating the file, B<mkostemp>() includes the values B<O_RDWR>, "
+"B<O_CREAT>, and B<O_EXCL> in the I<flags> argument given to B<open>(2); "
+"including these values in the I<flags> argument given to B<mkostemp>() is "
+"unnecessary, and produces errors on some systems."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:146
+msgid ""
+"The B<mkstemps>() function is like B<mkstemp>(), except that the string in "
+"I<template> contains a suffix of I<suffixlen> characters. Thus, I<template> "
+"is of the form I<prefixXXXXXXsuffix>, and the string XXXXXX is modified as "
+"for B<mkstemp>()."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:155
+msgid ""
+"The B<mkostemps>() function is to B<mkstemps>() as B<mkostemp>() is to "
+"B<mkstemp>()."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:161
+msgid ""
+"On success, these functions return the file descriptor of the temporary "
+"file. On error, -1 is returned, and I<errno> is set appropriately."
+msgstr ""
+
+#. type: TP
+#: build/C/man3/mkstemp.3:162
+#, no-wrap
+msgid "B<EEXIST>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:166
+msgid ""
+"Could not create a unique temporary filename. Now the contents of "
+"I<template> are undefined."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:174
+msgid ""
+"For B<mkstemp>() and B<mkostemp>(): The last six characters of I<template> "
+"were not XXXXXX; now I<template> is unchanged."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:185
+msgid ""
+"For B<mkstemps>() and B<mkostemps>(): I<template> is less than I<(6 + "
+"suffixlen)> characters long, or the last 6 characters before the suffix in "
+"I<template> were not XXXXXX."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:188
+msgid ""
+"These functions may also fail with any of the errors described for "
+"B<open>(2)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:195
+msgid ""
+"B<mkostemp>() is available since glibc 2.7. B<mkstemps>() and "
+"B<mkostemps>() are available since glibc 2.11."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:204
+msgid ""
+"The B<mkstemp>(), B<mkostemp>(), B<mkstemps>(), and B<mkostemps>() "
+"functions are thread-safe."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:207
+msgid "B<mkstemp>(): 4.3BSD, POSIX.1-2001."
+msgstr ""
+
+#. mkstemps() appears to be at least on the BSDs, Mac OS X, Solaris,
+#. and Tru64.
+#. type: Plain text
+#: build/C/man3/mkstemp.3:212
+msgid "B<mkstemps>(): unstandardized, but appears on several other systems."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:217
+msgid "B<mkostemp>() and B<mkostemps>(): are glibc extensions."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:224
+msgid ""
+"In glibc versions 2.06 and earlier, the file is created with permissions "
+"0666, that is, read and write for all users. This old behavior may be a "
+"security risk, especially since other UNIX flavors use 0600, and somebody "
+"might overlook this detail when porting programs. POSIX.1-2008 adds a "
+"requirement that the file be created with mode 0600."
msgstr ""
-#. http://g.oswego.edu/dl/html/malloc.html
-#. A Memory Allocator - by Doug Lea
-#
-#. http://www.bozemanpass.com/info/linux/malloc/Linux_Heap_Contention.html
-#. Linux Heap, Contention in free() - David Boreham
#
-#. http://www.citi.umich.edu/projects/linux-scalability/reports/malloc.html
-#. malloc() Performance in a Multithreaded Linux Environment -
-#. Check Lever, David Boreham
+#. The prototype for
+#. .BR mktemp ()
+#. is in
+#. .I <unistd.h>
+#. for libc4, libc5, glibc1; glibc2 follows POSIX.1 and has the prototype in
+#. .IR <stdlib.h> .
+#. type: Plain text
+#: build/C/man3/mkstemp.3:242
+msgid ""
+"More generally, the POSIX specification of B<mkstemp>() does not say "
+"anything about file modes, so the application should make sure its file mode "
+"creation mask (see B<umask>(2)) is set appropriately before calling "
+"B<mkstemp>() (and B<mkostemp>())."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mkstemp.3:248
+msgid "B<mkdtemp>(3), B<mktemp>(3), B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/mktemp.3:34
+#, no-wrap
+msgid "MKTEMP"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mktemp.3:37
+msgid "mktemp - make a unique temporary filename"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mktemp.3:42
+#, no-wrap
+msgid "B<char *mktemp(char *>I<template>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mktemp.3:50
+msgid "B<mktemp>():"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mktemp.3:59
+#, no-wrap
+msgid ""
+"_BSD_SOURCE || _SVID_SOURCE ||\n"
+" (_XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
+" _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED) &&\n"
+" !(_POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>=\\ 600)\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mktemp.3:69
+msgid "I<Never use this function>; see NOTES."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mktemp.3:80
+msgid ""
+"The B<mktemp>() function generates a unique temporary filename from "
+"I<template>. The last six characters of I<template> must be XXXXXX and "
+"these are replaced with a string that makes the filename unique. Since it "
+"will be modified, I<template> must not be a string constant, but should be "
+"declared as a character array."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mktemp.3:91
+msgid ""
+"The B<mktemp>() function always returns I<template>. If a unique name was "
+"created, the last six bytes of I<template> will have been modified in such a "
+"way that the resulting name is unique (i.e., does not exist already) If a "
+"unique name could not be created, I<template> is made an empty string, and "
+"I<errno> is set to indicate the error."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mktemp.3:95
+msgid "The last six characters of I<template> were not XXXXXX."
+msgstr ""
+
+#. .SH NOTES
+#. The prototype is in
+#. .I <unistd.h>
+#. for libc4, libc5, glibc1; glibc2 follows the Single UNIX Specification
+#. and has the prototype in
+#. .IR <stdlib.h> .
+#. type: Plain text
+#: build/C/man3/mktemp.3:105
+msgid ""
+"4.3BSD, POSIX.1-2001. POSIX.1-2008 removes the specification of "
+"B<mktemp>()."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mktemp.3:118
+msgid ""
+"Never use B<mktemp>(). Some implementations follow 4.3BSD and replace "
+"XXXXXX by the current process ID and a single letter, so that at most 26 "
+"different names can be returned. Since on the one hand the names are easy "
+"to guess, and on the other hand there is a race between testing whether the "
+"name exists and opening the file, every use of B<mktemp>() is a security "
+"risk. The race is avoided by B<mkstemp>(3)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/mktemp.3:123
+msgid "B<mkstemp>(3), B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/on_exit.3:31
+#, no-wrap
+msgid "ON_EXIT"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/on_exit.3:34
+msgid "on_exit - register a function to be called at normal process termination"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/on_exit.3:39
+#, no-wrap
+msgid "B<int on_exit(void (*>I<function>B<)(int , void *), void *>I<arg>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/on_exit.3:48
+msgid "B<on_exit>(): _BSD_SOURCE || _SVID_SOURCE"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/on_exit.3:66
+msgid ""
+"The B<on_exit>() function registers the given I<function> to be called at "
+"normal process termination, whether via B<exit>(3) or via return from the "
+"program's I<main>(). The I<function> is passed the status argument given to "
+"the last call to B<exit>(3) and the I<arg> argument from B<on_exit>()."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/on_exit.3:81
+msgid ""
+"The B<on_exit>() function returns the value 0 if successful; otherwise it "
+"returns a nonzero value."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/on_exit.3:87
+msgid ""
+"This function comes from SunOS 4, but is also present in glibc. It no "
+"longer occurs in Solaris (SunOS 5). Portable application should avoid this "
+"function, and use the standard B<atexit>(3) instead."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/on_exit.3:91
+msgid "B<_exit>(2), B<atexit>(3), B<exit>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/putenv.3:36
+#, no-wrap
+msgid "PUTENV"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/putenv.3:39
+msgid "putenv - change or add an environment variable"
+msgstr ""
+
+#. Not: const char *
+#. type: Plain text
+#: build/C/man3/putenv.3:45
+#, no-wrap
+msgid "B<int putenv(char *>I<string>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/putenv.3:54
+msgid "B<putenv>(): _SVID_SOURCE || _XOPEN_SOURCE"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/putenv.3:67
+msgid ""
+"The B<putenv>() function adds or changes the value of environment "
+"variables. The argument I<string> is of the form I<name>=I<value>. If "
+"I<name> does not already exist in the environment, then I<string> is added "
+"to the environment. If I<name> does exist, then the value of I<name> in the "
+"environment is changed to I<value>. The string pointed to by I<string> "
+"becomes part of the environment, so altering the string changes the "
+"environment."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/putenv.3:75
+msgid ""
+"The B<putenv>() function returns zero on success, or nonzero if an error "
+"occurs. In the event of an error, I<errno> is set to indicate the cause."
+msgstr ""
+
+#. type: TP
+#: build/C/man3/putenv.3:76 build/C/man3/setenv.3:125
+#, no-wrap
+msgid "B<ENOMEM>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/putenv.3:79
+msgid "Insufficient space to allocate new environment."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/putenv.3:81
+msgid "SVr4, POSIX.1-2001, 4.3BSD."
+msgstr ""
+
+#. .LP
+#. Description for libc4, libc5, glibc:
+#. If the argument \fIstring\fP is of the form \fIname\fP,
+#. and does not contain an \(aq=\(aq character, then the variable \fIname\fP
+#. is removed from the environment.
+#. If
+#. .BR putenv ()
+#. has to allocate a new array \fIenviron\fP,
+#. and the previous array was also allocated by
+#. .BR putenv (),
+#. then it will be freed.
+#. In no case will the old storage associated
+#. to the environment variable itself be freed.
+#. type: Plain text
+#: build/C/man3/putenv.3:99
+msgid ""
+"The B<putenv>() function is not required to be reentrant, and the one in "
+"glibc 2.0 is not, but the glibc 2.1 version is."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/putenv.3:114
+msgid ""
+"Since version 2.1.2, the glibc implementation conforms to SUSv2: the pointer "
+"I<string> given to B<putenv>() is used. In particular, this string becomes "
+"part of the environment; changing it later will change the environment. "
+"(Thus, it is an error is to call B<putenv>() with an automatic variable as "
+"the argument, then return from the calling function while I<string> is still "
+"part of the environment.) However, glibc versions 2.0 to 2.1.1 differ: a "
+"copy of the string is used. On the one hand this causes a memory leak, and "
+"on the other hand it violates SUSv2."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/putenv.3:116
+msgid "The 4.4BSD version, like glibc 2.0, uses a copy."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/putenv.3:118
+msgid "SUSv2 removes the I<const> from the prototype, and so does glibc 2.1.3."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/putenv.3:124
+msgid "B<clearenv>(3), B<getenv>(3), B<setenv>(3), B<unsetenv>(3), B<environ>(7)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/qecvt.3:28
+#, no-wrap
+msgid "QECVT"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/qecvt.3:31
+msgid "qecvt, qfcvt, qgcvt - convert a floating-point number to a string"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/qecvt.3:36
+msgid ""
+"B<char *qecvt(long double >I<number>B<, int >I<ndigits>B<, int "
+"*>I<decpt>B<,> B<int *>I<sign>B<);>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/qecvt.3:39
+msgid ""
+"B<char *qfcvt(long double >I<number>B<, int >I<ndigits>B<, int "
+"*>I<decpt>B<,> B<int *>I<sign>B<);>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/qecvt.3:41
+msgid "B<char *qgcvt(long double >I<number>B<, int >I<ndigit>B<, char *>I<buf>B<);>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/qecvt.3:52
+msgid "B<qecvt>(), B<qfcvt>(), B<qgcvt>(): _SVID_SOURCE"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/qecvt.3:85
+msgid ""
+"The functions B<qecvt>(), B<qfcvt>(), and B<qgcvt>() are identical to "
+"B<ecvt>(3), B<fcvt>(3), and B<gcvt>(3) respectively, except that they use a "
+"I<long double> argument I<number>. See B<ecvt>(3) and B<gcvt>(3)."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/qecvt.3:92
+msgid "The B<qecvt>() and B<qfcvt>() functions are not thread-safe."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/qecvt.3:96
+msgid "The B<qgcvt>() function is thread-safe."
+msgstr ""
+
+#. Not supported by libc4 and libc5.
+#. type: Plain text
+#: build/C/man3/qecvt.3:102
+msgid ""
+"SVr4. Not seen in most common UNIX implementations, but occurs in SunOS. "
+"Supported by glibc."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/qecvt.3:107
+msgid "These functions are obsolete. Instead, B<snprintf>(3) is recommended."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/qecvt.3:112
+msgid "B<ecvt>(3), B<ecvt_r>(3), B<gcvt>(3), B<sprintf>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/rand.3:41
+#, no-wrap
+msgid "RAND"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/rand.3:41
+#, no-wrap
+msgid "2014-01-18"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:44
+msgid "rand, rand_r, srand - pseudo-random number generator"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:49
+#, no-wrap
+msgid "B<int rand(void);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:51
+#, no-wrap
+msgid "B<int rand_r(unsigned int *>I<seedp>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:53
+#, no-wrap
+msgid "B<void srand(unsigned int >I<seed>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:62
+msgid "B<rand_r>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE"
+msgstr ""
+
#. type: Plain text
-#: build/C/man3/malloc.3:279
+#: build/C/man3/rand.3:68
msgid ""
-"B<brk>(2), B<mmap>(2), B<alloca>(3), B<malloc_get_state>(3), "
-"B<malloc_info>(3), B<malloc_trim>(3), B<malloc_usable_size>(3), "
-"B<mallopt>(3), B<mcheck>(3), B<mtrace>(3), B<posix_memalign>(3)"
+"The B<rand>() function returns a pseudo-random integer in the range 0 to "
+"B<RAND_MAX> inclusive (i.e., the mathematical range [0,\\ B<RAND_MAX>])."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:77
+msgid ""
+"The B<srand>() function sets its argument as the seed for a new sequence of "
+"pseudo-random integers to be returned by B<rand>(). These sequences are "
+"repeatable by calling B<srand>() with the same seed value."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:81
+msgid ""
+"If no seed value is provided, the B<rand>() function is automatically "
+"seeded with a value of 1."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:92
+msgid ""
+"The function B<rand>() is not reentrant or thread-safe, since it uses "
+"hidden state that is modified on each call. This might just be the seed "
+"value to be used by the next call, or it might be something more elaborate. "
+"In order to get reproducible behavior in a threaded application, this state "
+"must be made explicit; this can be done using the reentrant function "
+"B<rand_r>()."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:108
+msgid ""
+"Like B<rand>(), B<rand_r>() returns a pseudo-random integer in the range "
+"[0,\\ B<RAND_MAX>]. The I<seedp> argument is a pointer to an I<unsigned "
+"int> that is used to store state between calls. If B<rand_r>() is called "
+"with the same initial value for the integer pointed to by I<seedp>, and that "
+"value is not modified between calls, then the same pseudo-random sequence "
+"will result."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:118
+msgid ""
+"The value pointed to by the I<seedp> argument of B<rand_r>() provides only "
+"a very small amount of state, so this function will be a weak pseudo-random "
+"generator. Try B<drand48_r>(3) instead."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:129
+msgid ""
+"The B<rand>() and B<rand_r>() functions return a value between 0 and "
+"B<RAND_MAX> (inclusive). The B<srand>() function returns no value."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:141
+msgid ""
+"The functions B<rand>() and B<srand>() conform to SVr4, 4.3BSD, C89, C99, "
+"POSIX.1-2001. The function B<rand_r>() is from POSIX.1-2001. POSIX.1-2008 "
+"marks B<rand_r>() as obsolete."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:160
+msgid ""
+"The versions of B<rand>() and B<srand>() in the Linux C Library use the "
+"same random number generator as B<random>(3) and B<srandom>(3), so the "
+"lower-order bits should be as random as the higher-order bits. However, on "
+"older B<rand>() implementations, and on current implementations on "
+"different systems, the lower-order bits are much less random than the "
+"higher-order bits. Do not use this function in applications intended to be "
+"portable when good randomness is needed. (Use B<random>(3) instead.)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:166
+msgid ""
+"POSIX.1-2001 gives the following example of an implementation of B<rand>() "
+"and B<srand>(), possibly useful when one needs the same sequence on two "
+"different machines."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:170
+#, no-wrap
+msgid "static unsigned long next = 1;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:176
+#, no-wrap
+msgid ""
+"/* RAND_MAX assumed to be 32767 */\n"
+"int myrand(void) {\n"
+" next = next * 1103515245 + 12345;\n"
+" return((unsigned)(next/65536) % 32768);\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:180
+#, no-wrap
+msgid ""
+"void mysrand(unsigned int seed) {\n"
+" next = seed;\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:187
+msgid ""
+"The following program can be used to display the pseudo-random sequence "
+"produced by B<rand>() when given a particular seed."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:192
+#, no-wrap
+msgid ""
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:198
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int j, r, nloops;\n"
+" unsigned int seed;\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:203
+#, no-wrap
+msgid ""
+" if (argc != 3) {\n"
+" fprintf(stderr, \"Usage: %s E<lt>seedE<gt> E<lt>nloopsE<gt>\\en\", "
+"argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:206
+#, no-wrap
+msgid ""
+" seed = atoi(argv[1]);\n"
+" nloops = atoi(argv[2]);\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:212
+#, no-wrap
+msgid ""
+" srand(seed);\n"
+" for (j = 0; j E<lt> nloops; j++) {\n"
+" r = rand();\n"
+" printf(\"%d\\en\", r);\n"
+" }\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rand.3:220
+msgid "B<drand48>(3), B<random>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/mblen.3:14
+#: build/C/man3/random.3:33
#, no-wrap
-msgid "MBLEN"
+msgid "RANDOM"
msgstr ""
#. type: TH
-#: build/C/man3/mblen.3:14 build/C/man3/wctomb.3:14
+#: build/C/man3/random.3:33
+#, no-wrap
+msgid "2015-02-01"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:36
+msgid "random, srandom, initstate, setstate - random number generator"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:41
+#, no-wrap
+msgid "B<long int random(void);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:43
+#, no-wrap
+msgid "B<void srandom(unsigned int >I<seed>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:45
+#, no-wrap
+msgid ""
+"B<char *initstate(unsigned int >I<seed>B<, char *>I<state>B<, size_t "
+">I<n>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:47
#, no-wrap
-msgid "1999-07-25"
+msgid "B<char *setstate(char *>I<state>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:59
+msgid "B<random>(), B<srandom>(), B<initstate>(), B<setstate>():"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:62
+msgid ""
+"_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
+"_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:73
+msgid ""
+"The B<random>() function uses a nonlinear additive feedback random number "
+"generator employing a default table of size 31 long integers to return "
+"successive pseudo-random numbers in the range from 0 to B<RAND_MAX>. The "
+"period of this random number generator is very large, approximately I<16\\ "
+"*\\ ((2^31)\\ -\\ 1)>."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:87
+msgid ""
+"The B<srandom>() function sets its argument as the seed for a new sequence "
+"of pseudo-random integers to be returned by B<random>(). These sequences "
+"are repeatable by calling B<srandom>() with the same seed value. If no "
+"seed value is provided, the B<random>() function is automatically seeded "
+"with a value of 1."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:102
+msgid ""
+"The B<initstate>() function allows a state array I<state> to be initialized "
+"for use by B<random>(). The size of the state array I<n> is used by "
+"B<initstate>() to decide how sophisticated a random number generator it "
+"should use\\(emthe larger the state array, the better the random numbers "
+"will be. I<seed> is the seed for the initialization, which specifies a "
+"starting point for the random number sequence, and provides for restarting "
+"at the same point."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:118
+msgid ""
+"The B<setstate>() function changes the state array used by the B<random>() "
+"function. The state array I<state> is used for random number generation "
+"until the next call to B<initstate>() or B<setstate>(). I<state> must "
+"first have been initialized using B<initstate>() or be the result of a "
+"previous call of B<setstate>()."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:126
+msgid ""
+"The B<random>() function returns a value between 0 and B<RAND_MAX>. The "
+"B<srandom>() function returns no value."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random.3:133
+msgid ""
+"The B<initstate>() function returns a pointer to the previous state array. "
+"On error, I<errno> is set to indicate the cause."
msgstr ""
#. type: Plain text
-#: build/C/man3/mblen.3:17
-msgid "mblen - determine number of bytes in next multibyte character"
+#: build/C/man3/random.3:140
+msgid ""
+"On success, B<setstate>() returns a pointer to the previous state array. "
+"On error, it returns NULL, with I<errno> set to indicate the cause of the "
+"error."
msgstr ""
#. type: Plain text
-#: build/C/man3/mblen.3:22
-#, no-wrap
-msgid "B<int mblen(const char *>I<s>B<, size_t >I<n>B<);>\n"
+#: build/C/man3/random.3:148
+msgid "The I<state> argument given to B<setstate>() was NULL."
msgstr ""
#. type: Plain text
-#: build/C/man3/mblen.3:36
-msgid ""
-"If I<s> is not a NULL pointer, the B<mblen>() function inspects at most "
-"I<n> bytes of the multibyte string starting at I<s> and extracts the next "
-"complete multibyte character. It uses a static anonymous shift state only "
-"known to the B<mblen>() function. If the multibyte character is not the "
-"null wide character, it returns the number of bytes that were consumed from "
-"I<s>. If the multibyte character is the null wide character, it returns 0."
+#: build/C/man3/random.3:152
+msgid "A state array of less than 8 bytes was specified to B<initstate>()."
msgstr ""
#. type: Plain text
-#: build/C/man3/mblen.3:44
+#: build/C/man3/random.3:161
msgid ""
-"If the I<n> bytes starting at I<s> do not contain a complete multibyte "
-"character, B<mblen>() returns -1. This can happen even if I<n> is greater "
-"than or equal to I<MB_CUR_MAX>, if the multibyte string contains redundant "
-"shift sequences."
+"The B<random>(), B<srandom>(), B<initstate>(), and B<setstate>() functions "
+"are thread-safe."
msgstr ""
#. type: Plain text
-#: build/C/man3/mblen.3:49
-msgid ""
-"If the multibyte string starting at I<s> contains an invalid multibyte "
-"sequence before the next complete character, B<mblen>() also returns -1."
+#: build/C/man3/random.3:163 build/C/man3/setenv.3:130
+msgid "4.3BSD, POSIX.1-2001."
msgstr ""
-#. The Dinkumware doc and the Single UNIX specification say this, but
-#. glibc doesn't implement this.
#. type: Plain text
-#: build/C/man3/mblen.3:58
+#: build/C/man3/random.3:169
msgid ""
-"If I<s> is a NULL pointer, the B<mblen>() function resets the shift state, "
-"only known to this function, to the initial state, and returns nonzero if "
-"the encoding has nontrivial shift state, or zero if the encoding is "
-"stateless."
+"Current \"optimal\" values for the size of the state array I<n> are 8, 32, "
+"64, 128, and 256 bytes; other amounts will be rounded down to the nearest "
+"known amount. Using less than 8 bytes will cause an error."
msgstr ""
#. type: Plain text
-#: build/C/man3/mblen.3:68
+#: build/C/man3/random.3:176
msgid ""
-"The B<mblen>() function returns the number of bytes parsed from the "
-"multibyte sequence starting at I<s>, if a non-null wide character was "
-"recognized. It returns 0, if a null wide character was recognized. It "
-"returns -1, if an invalid multibyte sequence was encountered or if it "
-"couldn't parse a complete multibyte character."
+"This function should not be used in cases where multiple threads use "
+"B<random>() and the behavior should be reproducible. Use B<random_r>(3) "
+"for that purpose."
msgstr ""
#. type: Plain text
-#: build/C/man3/mblen.3:70 build/C/man3/mbstowcs.3:70 build/C/man3/mbtowc.3:78 build/C/man3/wcstombs.3:70 build/C/man3/wctomb.3:66
-msgid "C99."
+#: build/C/man3/random.3:183
+msgid ""
+"Random-number generation is a complex topic. I<Numerical Recipes in C: The "
+"Art of Scientific Computing> (William H. Press, Brian P. Flannery, Saul "
+"A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, "
+"2007, 3rd ed.) provides an excellent discussion of practical random-number "
+"generation issues in Chapter 7 (Random Numbers)."
msgstr ""
#. type: Plain text
-#: build/C/man3/mblen.3:77
+#: build/C/man3/random.3:189
msgid ""
-"The behavior of B<mblen>() depends on the B<LC_CTYPE> category of the "
-"current locale."
+"For a more theoretical discussion which also covers many practical issues in "
+"depth, see Chapter 3 (Random Numbers) in Donald E. Knuth's I<The Art of "
+"Computer Programming>, volume 2 (Seminumerical Algorithms), 2nd ed.; "
+"Reading, Massachusetts: Addison-Wesley Publishing Company, 1981."
msgstr ""
+#. http://sourceware.org/bugzilla/show_bug.cgi?id=15380
#. type: Plain text
-#: build/C/man3/mblen.3:82
+#: build/C/man3/random.3:197
msgid ""
-"The function B<mbrlen>(3) provides a better interface to the same "
-"functionality."
+"According to POSIX, B<initstate>() should return NULL on error. In the "
+"glibc implementation, I<errno> is (as specified) set on error, but the "
+"function does not return NULL."
msgstr ""
#. type: Plain text
-#: build/C/man3/mblen.3:84
-msgid "B<mbrlen>(3)"
+#: build/C/man3/random.3:203
+msgid "B<drand48>(3), B<getrandom>(2), B<rand>(3), B<random_r>(3), B<srand>(3)"
msgstr ""
#. type: TH
-#: build/C/man3/mbstowcs.3:14
+#: build/C/man3/random_r.3:26
#, no-wrap
-msgid "MBSTOWCS"
+msgid "RANDOM_R"
msgstr ""
-#. type: TH
-#: build/C/man3/mbstowcs.3:14 build/C/man3/mbtowc.3:14
-#, no-wrap
-msgid "2011-09-28"
+#. type: Plain text
+#: build/C/man3/random_r.3:30
+msgid ""
+"random_r, srandom_r, initstate_r, setstate_r - reentrant random number "
+"generator"
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:17
-msgid "mbstowcs - convert a multibyte string to a wide-character string"
+#: build/C/man3/random_r.3:35
+#, no-wrap
+msgid "B<int random_r(struct random_data *>I<buf>B<, int32_t *>I<result>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:22
+#: build/C/man3/random_r.3:37
#, no-wrap
-msgid ""
-"B<size_t mbstowcs(wchar_t *>I<dest>B<, const char *>I<src>B<, size_t "
-">I<n>B<);>\n"
+msgid "B<int srandom_r(unsigned int >I<seed>B<, struct random_data *>I<buf>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:33
+#: build/C/man3/random_r.3:40
+#, no-wrap
msgid ""
-"If I<dest> is not a NULL pointer, the B<mbstowcs>() function converts the "
-"multibyte string I<src> to a wide-character string starting at I<dest>. At "
-"most I<n> wide characters are written to I<dest>. The conversion starts in "
-"the initial state. The conversion can stop for three reasons:"
+"B<int initstate_r(unsigned int >I<seed>B<, char *>I<statebuf>B<,>\n"
+"B< size_t >I<statelen>B<, struct random_data *>I<buf>B<);>\n"
msgstr ""
-#. type: IP
-#: build/C/man3/mbstowcs.3:33
+#. type: Plain text
+#: build/C/man3/random_r.3:42
#, no-wrap
-msgid "1."
+msgid "B<int setstate_r(char *>I<statebuf>B<, struct random_data *>I<buf>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:38
-msgid ""
-"An invalid multibyte sequence has been encountered. In this case "
-"I<(size_t)\\ -1> is returned."
+#: build/C/man3/random_r.3:54
+msgid "B<random_r>(), B<srandom_r>(), B<initstate_r>(), B<setstate_r>():"
msgstr ""
-#. type: IP
-#: build/C/man3/mbstowcs.3:38
-#, no-wrap
-msgid "2."
+#. type: Plain text
+#: build/C/man3/random_r.3:56
+msgid "_SVID_SOURCE || _BSD_SOURCE"
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:43
+#: build/C/man3/random_r.3:64
msgid ""
-"I<n> non-L\\(aq\\e0\\(aq wide characters have been stored at I<dest>. In "
-"this case the number of wide characters written to I<dest> is returned, but "
-"the shift state at this point is lost."
+"These functions are the reentrant equivalents of the functions described in "
+"B<random>(3). They are suitable for use in multithreaded programs where "
+"each thread needs to obtain an independent, reproducible sequence of random "
+"numbers."
msgstr ""
-#. type: IP
-#: build/C/man3/mbstowcs.3:43
-#, no-wrap
-msgid "3."
+#. type: Plain text
+#: build/C/man3/random_r.3:75
+msgid ""
+"The B<random_r>() function is like B<random>(3), except that instead of "
+"using state information maintained in a global variable, it uses the state "
+"information in the argument pointed to by I<buf>. The generated random "
+"number is returned in the argument I<result>."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:48
+#: build/C/man3/random_r.3:84
msgid ""
-"The multibyte string has been completely converted, including the "
-"terminating null wide character (\\(aq\\e0\\(aq). In this case the number "
-"of wide characters written to I<dest>, excluding the terminating null wide "
-"character, is returned."
+"The B<srandom_r>() function is like B<srandom>(3), except that it "
+"initializes the seed for the random number generator whose state is "
+"maintained in the object pointed to by I<buf>, instead of the seed "
+"associated with the global state variable."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:51
+#: build/C/man3/random_r.3:92
msgid ""
-"The programmer must ensure that there is room for at least I<n> wide "
-"characters at I<dest>."
+"The B<initstate_r>() function is like B<initstate>(3) except that it "
+"initializes the state in the object pointed to by I<buf>, rather than "
+"initializing the global state variable."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:55
+#: build/C/man3/random_r.3:100
msgid ""
-"If I<dest> is NULL, I<n> is ignored, and the conversion proceeds as above, "
-"except that the converted wide characters are not written out to memory, and "
-"that no length limit exists."
+"The B<setstate_r>() function is like B<setstate>(3) except that it "
+"modifies the state in the object pointer to by I<buf>, rather than modifying "
+"the global state variable."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:58
+#: build/C/man3/random_r.3:105
msgid ""
-"In order to avoid the case 2 above, the programmer should make sure I<n> is "
-"greater or equal to I<mbstowcs(NULL,src,0)+1>."
+"All of these functions return 0 on success. On error, -1 is returned, with "
+"I<errno> set to indicate the cause of the error."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:68
-msgid ""
-"The B<mbstowcs>() function returns the number of wide characters that make "
-"up the converted part of the wide-character string, not including the "
-"terminating null wide character. If an invalid multibyte sequence was "
-"encountered, I<(size_t)\\ -1> is returned."
+#: build/C/man3/random_r.3:110
+msgid "A state array of less than 8 bytes was specified to B<initstate_r>()."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:77
-msgid ""
-"The behavior of B<mbstowcs>() depends on the B<LC_CTYPE> category of the "
-"current locale."
+#: build/C/man3/random_r.3:119
+msgid "The I<statebuf> or I<buf> argument to B<setstate_r>() was NULL."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/random_r.3:128
+msgid "The I<buf> or I<result> argument to B<random_r>() was NULL."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbstowcs.3:82
+#: build/C/man3/random_r.3:137
msgid ""
-"The function B<mbsrtowcs>(3) provides a better interface to the same "
-"functionality."
+"The B<random_r>(), B<srandom_r>(), B<initstate_r>(), and B<setstate_r>() "
+"functions are thread-safe."
msgstr ""
+#. These functions appear to be on Tru64, but don't seem to be on
+#. Solaris, HP-UX, or FreeBSD.
#. type: Plain text
-#: build/C/man3/mbstowcs.3:85
-msgid "B<mbsrtowcs>(3), B<wcstombs(3)>"
+#: build/C/man3/random_r.3:141
+msgid "These functions are nonstandard glibc extensions."
msgstr ""
#. type: TH
-#: build/C/man3/mbtowc.3:14
+#: build/C/man3/rpmatch.3:29
#, no-wrap
-msgid "MBTOWC"
+msgid "RPMATCH"
msgstr ""
#. type: Plain text
-#: build/C/man3/mbtowc.3:17
-msgid "mbtowc - convert a multibyte sequence to a wide character"
+#: build/C/man3/rpmatch.3:32
+msgid "rpmatch - determine if the answer to a question is affirmative or negative"
msgstr ""
#. type: Plain text
-#: build/C/man3/mbtowc.3:22
+#: build/C/man3/rpmatch.3:37
#, no-wrap
-msgid "B<int mbtowc(wchar_t *>I<pwc>B<, const char *>I<s>B<, size_t >I<n>B<);>\n"
+msgid "B<int rpmatch(const char *>I<response>B<);>\n"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rpmatch.3:46
+msgid "B<rpmatch>(): _SVID_SOURCE"
msgstr ""
#. type: Plain text
-#: build/C/man3/mbtowc.3:37
+#: build/C/man3/rpmatch.3:50
msgid ""
-"The main case for this function is when I<s> is not NULL and I<pwc> is not "
-"NULL. In this case, the B<mbtowc>() function inspects at most I<n> bytes "
-"of the multibyte string starting at I<s>, extracts the next complete "
-"multibyte character, converts it to a wide character and stores it at "
-"I<*pwc>. It updates an internal shift state only known to the mbtowc "
-"function. If I<s> does not point to a null byte (\\(aq\\e0\\(aq), it "
-"returns the number of bytes that were consumed from I<s>, otherwise it "
-"returns 0."
+"B<rpmatch>() handles a user response to yes or no questions, with support "
+"for internationalization."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbtowc.3:44
+#: build/C/man3/rpmatch.3:57
msgid ""
-"If the I<n> bytes starting at I<s> do not contain a complete multibyte "
-"character, or if they contain an invalid multibyte sequence, B<mbtowc>() "
-"returns -1. This can happen even if I<n> E<gt>= I<MB_CUR_MAX>, if the "
-"multibyte string contains redundant shift sequences."
+"I<response> should be a null-terminated string containing a user-supplied "
+"response, perhaps obtained with B<fgets>(3) or B<getline>(3)."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbtowc.3:51
+#: build/C/man3/rpmatch.3:67
msgid ""
-"A different case is when I<s> is not NULL but I<pwc> is NULL. In this case "
-"the B<mbtowc>() function behaves as above, except that it does not store "
-"the converted wide character in memory."
+"The user's language preference is taken into account per the environment "
+"variables B<LANG>, B<LC_MESSAGES>, and B<LC_ALL>, if the program has called "
+"B<setlocale>(3) to effect their changes."
msgstr ""
-#. The Dinkumware doc and the Single UNIX specification say this, but
-#. glibc doesn't implement this.
#. type: Plain text
-#: build/C/man3/mbtowc.3:64
+#: build/C/man3/rpmatch.3:73
msgid ""
-"A third case is when I<s> is NULL. In this case, I<pwc> and I<n> are "
-"ignored. The B<mbtowc>() function resets the shift state, only known to "
-"this function, to the initial state, and returns nonzero if the encoding has "
-"nontrivial shift state, or zero if the encoding is stateless."
+"Regardless of the locale, responses matching B<^[Yy]> are always accepted as "
+"affirmative, and those matching B<^[Nn]> are always accepted as negative."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbtowc.3:70
+#: build/C/man3/rpmatch.3:82
msgid ""
-"If I<s> is not NULL, the B<mbtowc>() function returns the number of "
-"consumed bytes starting at I<s>, or 0 if I<s> points to a null byte, or -1 "
-"upon failure."
+"After examining I<response>, B<rpmatch>() returns 0 for a recognized "
+"negative response (\"no\"), 1 for a recognized positive response (\"yes\"), "
+"and -1 when the value of I<response> is unrecognized."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbtowc.3:76
+#: build/C/man3/rpmatch.3:86
msgid ""
-"If I<s> is NULL, the B<mbtowc>() function returns nonzero if the encoding "
-"has nontrivial shift state, or zero if the encoding is stateless."
+"A return value of -1 may indicate either an invalid input, or some other "
+"error. It is incorrect to only test if the return value is nonzero."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbtowc.3:85
+#: build/C/man3/rpmatch.3:99
msgid ""
-"The behavior of B<mbtowc>() depends on the B<LC_CTYPE> category of the "
-"current locale."
+"B<rpmatch>() can fail for any of the reasons that B<regcomp>(3) or "
+"B<regexec>(3) can fail; the cause of the error is not available from "
+"I<errno> or anywhere else, but indicates a failure of the regex engine (but "
+"this case is indistinguishable from that of an unrecognized value of "
+"I<response>)."
msgstr ""
+#. It is available on at least AIX 5.1 and FreeBSD 6.0.
#. type: Plain text
-#: build/C/man3/mbtowc.3:91
+#: build/C/man3/rpmatch.3:104
msgid ""
-"This function is not multithread safe. The function B<mbrtowc>(3) provides "
-"a better interface to the same functionality."
+"B<rpmatch>() is not required by any standard, but is available on a few "
+"other systems."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/rpmatch.3:119
+msgid ""
+"The B<rpmatch>() implementation looks at only the first character of "
+"I<response>. As a consequence, \"nyes\" returns 0, and \"ynever; not in a "
+"million years\" returns 1. It would be preferable to accept input strings "
+"much more strictly, for example (using the extended regular expression "
+"notation described in B<regex>(7)): B<^([yY]|yes|YES)$> and "
+"B<^([nN]|no|NO)$>."
msgstr ""
#. type: Plain text
-#: build/C/man3/mbtowc.3:95
-msgid "B<MB_CUR_MAX>(3), B<mbrtowc>(3), B<mbstowcs>(3)"
+#: build/C/man3/rpmatch.3:123
+msgid ""
+"The following program displays the results when B<rpmatch>() is applied to "
+"the string given in the program's command-line argument."
msgstr ""
-#. type: TH
-#: build/C/man3/mkdtemp.3:24
+#. type: Plain text
+#: build/C/man3/rpmatch.3:130
#, no-wrap
-msgid "MKDTEMP"
+msgid ""
+"#define _SVID_SOURCE\n"
+"#include E<lt>locale.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>string.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:27
-msgid "mkdtemp - create a unique temporary directory"
+#: build/C/man3/rpmatch.3:138
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" if (argc != 2 || strcmp(argv[1], \"--help\") == 0) {\n"
+" fprintf(stderr, \"%s response\\en\", argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:32
+#: build/C/man3/rpmatch.3:143
#, no-wrap
-msgid "B<char *mkdtemp(char *>I<template>B<);>\n"
+msgid ""
+" setlocale(LC_ALL, \"\");\n"
+" printf(\"rpmatch() returns: %d\\en\", rpmatch(argv[1]));\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:40
-msgid "B<mkdtemp>():"
+#: build/C/man3/rpmatch.3:150
+msgid ""
+"B<fgets>(3), B<getline>(3), B<nl_langinfo>(3), B<regcomp>(3), "
+"B<setlocale>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/setenv.3:37
+#, no-wrap
+msgid "SETENV"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/setenv.3:37
+#, no-wrap
+msgid "2013-10-11"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/setenv.3:40
+msgid "setenv - change or add an environment variable"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/setenv.3:45
+#, no-wrap
+msgid ""
+"B<int setenv(const char *>I<name>B<, const char *>I<value>B<, int "
+">I<overwrite>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:45
-msgid "_BSD_SOURCE"
+#: build/C/man3/setenv.3:47
+#, no-wrap
+msgid "B<int unsetenv(const char *>I<name>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:47
-msgid "|| /* Since glibc 2.10: */"
+#: build/C/man3/setenv.3:57
+msgid "B<setenv>(), B<unsetenv>():"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:49
-msgid "(_POSIX_C_SOURCE\\ E<gt>=\\ 200809L || _XOPEN_SOURCE\\ E<gt>=\\ 700)"
+#: build/C/man3/setenv.3:59
+msgid ""
+"_BSD_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ "
+"E<gt>=\\ 600"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:66
+#: build/C/man3/setenv.3:94
msgid ""
-"The B<mkdtemp>() function generates a uniquely named temporary directory "
-"from I<template>. The last six characters of I<template> must be XXXXXX and "
-"these are replaced with a string that makes the directory name unique. The "
-"directory is then created with permissions 0700. Since it will be modified, "
-"I<template> must not be a string constant, but should be declared as a "
-"character array."
+"The B<setenv>() function adds the variable I<name> to the environment with "
+"the value I<value>, if I<name> does not already exist. If I<name> does "
+"exist in the environment, then its value is changed to I<value> if "
+"I<overwrite> is nonzero; if I<overwrite> is zero, then the value of I<name> "
+"is not changed (and B<setenv>() returns a success status). This function "
+"makes copies of the strings pointed to by I<name> and I<value> (by contrast "
+"with B<putenv>(3))."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:73
+#: build/C/man3/setenv.3:105
msgid ""
-"The B<mkdtemp>() function returns a pointer to the modified template string "
-"on success, and NULL on failure, in which case I<errno> is set "
-"appropriately."
+"The B<unsetenv>() function deletes the variable I<name> from the "
+"environment. If I<name> does not exist in the environment, then the "
+"function succeeds, and the environment is unchanged."
msgstr ""
-#. type: SH
-#: build/C/man3/mkdtemp.3:73 build/C/man3/mkstemp.3:142 build/C/man3/mktemp.3:84 build/C/man3/putenv.3:70 build/C/man3/random.3:130 build/C/man3/random_r.3:100 build/C/man3/rpmatch.3:71 build/C/man3/setenv.3:98 build/C/man3/strtod.3:154 build/C/man3/strtol.3:124 build/C/man3/strtoul.3:127
-#, no-wrap
-msgid "ERRORS"
+#. type: Plain text
+#: build/C/man3/setenv.3:112
+msgid ""
+"The B<setenv>() function returns zero on success, or -1 on error, with "
+"I<errno> set to indicate the cause of the error."
msgstr ""
-#. type: TP
-#: build/C/man3/mkdtemp.3:74 build/C/man3/mkstemp.3:147 build/C/man3/mktemp.3:85 build/C/man3/random.3:131 build/C/man3/random_r.3:101 build/C/man3/random_r.3:105 build/C/man3/random_r.3:114 build/C/man3/setenv.3:99 build/C/man3/strtol.3:125 build/C/man3/strtoul.3:128
-#, no-wrap
-msgid "B<EINVAL>"
+#. type: Plain text
+#: build/C/man3/setenv.3:119
+msgid ""
+"The B<unsetenv>() function returns zero on success, or -1 on error, with "
+"I<errno> set to indicate the cause of the error."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:78
+#: build/C/man3/setenv.3:125
msgid ""
-"The last six characters of I<template> were not XXXXXX. Now I<template> is "
-"unchanged."
+"I<name> is NULL, points to a string of length 0, or contains an \\(aq=\\(aq "
+"character."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:82
-msgid "Also see B<mkdir>(2) for other possible values for I<errno>."
+#: build/C/man3/setenv.3:128
+msgid "Insufficient memory to add a new variable to the environment."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:84
-msgid "Available since glibc 2.1.91."
+#: build/C/man3/setenv.3:136
+msgid ""
+"POSIX.1-2001 does not require B<setenv>() or B<unsetenv>() to be "
+"reentrant."
msgstr ""
-#. As at 2006, this function is being considered for a revision of POSIX.1
-#. Also in NetBSD 1.4.
#. type: Plain text
-#: build/C/man3/mkdtemp.3:89
-msgid "POSIX.1-2008. This function is present on the BSDs."
+#: build/C/man3/setenv.3:144
+msgid ""
+"Prior to glibc 2.2.2, B<unsetenv>() was prototyped as returning I<void>; "
+"more recent glibc versions follow the POSIX.1-2001-compliant prototype shown "
+"in the SYNOPSIS."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkdtemp.3:96
+#: build/C/man3/setenv.3:153
msgid ""
-"B<mkdir>(2), B<mkstemp>(3), B<mktemp>(3), B<tempnam>(3), B<tmpfile>(3), "
-"B<tmpnam>(3)"
+"POSIX.1-2001 specifies that if I<name> contains an \\(aq=\\(aq character, "
+"then B<setenv>() should fail with the error B<EINVAL>; however, versions of "
+"glibc before 2.3.4 allowed an \\(aq=\\(aq sign in I<name>."
msgstr ""
-#. type: TH
-#: build/C/man3/mkstemp.3:33
-#, no-wrap
-msgid "MKSTEMP"
+#. type: Plain text
+#: build/C/man3/setenv.3:158
+msgid "B<clearenv>(3), B<getenv>(3), B<putenv>(3), B<environ>(7)"
msgstr ""
#. type: TH
-#: build/C/man3/mkstemp.3:33
+#: build/C/man3/strtod.3:45
#, no-wrap
-msgid "2012-04-21"
+msgid "STRTOD"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:36
-msgid "mkstemp, mkostemp, mkstemps, mkostemps - create a unique temporary file"
+#: build/C/man3/strtod.3:48
+msgid "strtod, strtof, strtold - convert ASCII string to floating-point number"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:41
-#, no-wrap
-msgid "B<int mkstemp(char *>I<template>B<);>\n"
+#: build/C/man3/strtod.3:52
+msgid "B<double strtod(const char *>I<nptr>B<, char **>I<endptr>B<);>"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:43
-#, no-wrap
-msgid "B<int mkostemp(char *>I<template>B<, int >I<flags>B<);>\n"
+#: build/C/man3/strtod.3:54
+msgid "B<float strtof(const char *>I<nptr>B<, char **>I<endptr>B<);>"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:45
-#, no-wrap
-msgid "B<int mkstemps(char *>I<template>B<, int >I<suffixlen>B<);>\n"
+#: build/C/man3/strtod.3:56
+msgid "B<long double strtold(const char *>I<nptr>B<, char **>I<endptr>B<);>"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:47
-#, no-wrap
-msgid ""
-"B<int mkostemps(char *>I<template>B<, int >I<suffixlen>B<, int "
-">I<flags>B<);>\n"
+#: build/C/man3/strtod.3:65
+msgid "B<strtof>(), B<strtold>():"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:55
-msgid "B<mkstemp>():"
+#: build/C/man3/strtod.3:87
+msgid ""
+"The B<strtod>(), B<strtof>(), and B<strtold>() functions convert the "
+"initial portion of the string pointed to by I<nptr> to I<double>, I<float>, "
+"and I<long double> representation, respectively."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:60 build/C/man3/mktemp.3:61
+#: build/C/man3/strtod.3:94
msgid ""
-"_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
-"_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
+"The expected form of the (initial portion of the) string is optional leading "
+"white space as recognized by B<isspace>(3), an optional plus (\\(aq+\\(aq) "
+"or minus sign (\\(aq-\\(aq) and then either (i) a decimal number, or (ii) a "
+"hexadecimal number, or (iii) an infinity, or (iv) a NAN (not-a-number)."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:62
-msgid "|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200112L"
+#: build/C/man3/strtod.3:103
+msgid ""
+"A I<decimal number> consists of a nonempty sequence of decimal digits "
+"possibly containing a radix character (decimal point, locale-dependent, "
+"usually \\(aq.\\(aq), optionally followed by a decimal exponent. A decimal "
+"exponent consists of an \\(aqE\\(aq or \\(aqe\\(aq, followed by an optional "
+"plus or minus sign, followed by a nonempty sequence of decimal digits, and "
+"indicates multiplication by a power of 10."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:68
-msgid "B<mkostemp>(): _GNU_SOURCE"
+#: build/C/man3/strtod.3:114
+msgid ""
+"A I<hexadecimal number> consists of a \"0x\" or \"0X\" followed by a "
+"nonempty sequence of hexadecimal digits possibly containing a radix "
+"character, optionally followed by a binary exponent. A binary exponent "
+"consists of a \\(aqP\\(aq or \\(aqp\\(aq, followed by an optional plus or "
+"minus sign, followed by a nonempty sequence of decimal digits, and indicates "
+"multiplication by a power of 2. At least one of radix character and binary "
+"exponent must be present."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:71
-msgid "B<mkstemps>(): _BSD_SOURCE || _SVID_SOURCE"
+#: build/C/man3/strtod.3:118
+msgid "An I<infinity> is either \"INF\" or \"INFINITY\", disregarding case."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:74
-msgid "B<mkostemps>(): _GNU_SOURCE"
+#: build/C/man3/strtod.3:127
+msgid ""
+"A I<NAN> is \"NAN\" (disregarding case) optionally followed by a string, "
+"I<(n-char-sequence)>, where I<n-char-sequence> specifies in an "
+"implementation-dependent way the type of NAN (see NOTES)."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:81
-msgid ""
-"The B<mkstemp>() function generates a unique temporary filename from "
-"I<template>, creates and opens the file, and returns an open file descriptor "
-"for the file."
+#: build/C/man3/strtod.3:129
+msgid "These functions return the converted value, if any."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:89
+#: build/C/man3/strtod.3:136
msgid ""
-"The last six characters of I<template> must be \"XXXXXX\" and these are "
-"replaced with a string that makes the filename unique. Since it will be "
-"modified, I<template> must not be a string constant, but should be declared "
-"as a character array."
+"If I<endptr> is not NULL, a pointer to the character after the last "
+"character used in the conversion is stored in the location referenced by "
+"I<endptr>."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:99
+#: build/C/man3/strtod.3:141
msgid ""
-"The file is created with permissions 0600, that is, read plus write for "
-"owner only. (In glibc versions 2.06 and earlier, the file is created with "
-"permissions 0666, that is, read and write for all users.) The returned file "
-"descriptor provides both read and write access to the file. The file is "
-"opened with the B<open>(2) B<O_EXCL> flag, guaranteeing that the caller is "
-"the process that creates the file."
+"If no conversion is performed, zero is returned and the value of I<nptr> is "
+"stored in the location referenced by I<endptr>."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:111
+#: build/C/man3/strtod.3:155
msgid ""
-"The B<mkostemp>() function is like B<mkstemp>(), with the difference that "
-"flags as for B<open>(2) may be specified in I<flags> (e.g., B<O_APPEND>, "
-"B<O_SYNC>)."
+"If the correct value would cause overflow, plus or minus B<HUGE_VAL> "
+"(B<HUGE_VALF>, B<HUGE_VALL>) is returned (according to the sign of the "
+"value), and B<ERANGE> is stored in I<errno>. If the correct value would "
+"cause underflow, zero is returned and B<ERANGE> is stored in I<errno>."
msgstr ""
-#. type: Plain text
-#: build/C/man3/mkstemp.3:127
-msgid ""
-"The B<mkstemps>() function is like B<mkstemp>(), except that the string in "
-"I<template> contains a suffix of I<suffixlen> characters. Thus, I<template> "
-"is of the form I<prefixXXXXXXsuffix>, and the string XXXXXX is modified as "
-"for B<mkstemp>()."
+#. type: TP
+#: build/C/man3/strtod.3:156 build/C/man3/strtol.3:151 build/C/man3/strtoul.3:155
+#, no-wrap
+msgid "B<ERANGE>"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:136
-msgid ""
-"The B<mkostemps>() function is to B<mkstemps>() as B<mkostemp>() is to "
-"B<mkstemp>()."
+#: build/C/man3/strtod.3:159
+msgid "Overflow or underflow occurred."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:142
+#: build/C/man3/strtod.3:171
msgid ""
-"On success, these functions return the file descriptor of the temporary "
-"file. On error, -1 is returned, and I<errno> is set appropriately."
-msgstr ""
-
-#. type: TP
-#: build/C/man3/mkstemp.3:143
-#, no-wrap
-msgid "B<EEXIST>"
+"The B<strtod>(), B<strtof>(), and B<strtold>() functions are thread-safe "
+"with exceptions. These functions can be safely used in multithreaded "
+"applications, as long as B<setlocale>(3) is not called to change the locale "
+"during their execution."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:147
-msgid ""
-"Could not create a unique temporary filename. Now the contents of "
-"I<template> are undefined."
+#: build/C/man3/strtod.3:176
+msgid "C89 describes B<strtod>(), C99 describes the other two functions."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:155
+#: build/C/man3/strtod.3:185
msgid ""
-"For B<mkstemp>() and B<mkostemp>(): The last six characters of I<template> "
-"were not XXXXXX; now I<template> is unchanged."
+"Since 0 can legitimately be returned on both success and failure, the "
+"calling program should set I<errno> to 0 before the call, and then determine "
+"if an error occurred by checking whether I<errno> has a nonzero value after "
+"the call."
msgstr ""
+#. From glibc 2.8's stdlib/strtod_l.c:
+#. We expect it to be a number which is put in the
+#. mantissa of the number.
+#. It looks as though at least FreeBSD (according to the manual) does
+#. something similar.
+#. C11 says: "An implementation may use the n-char sequence to determine
+#. extra information to be represented in the NaN's significant."
#. type: Plain text
-#: build/C/man3/mkstemp.3:166
+#: build/C/man3/strtod.3:200
msgid ""
-"For B<mkstemps>() and B<mkostemps>(): I<template> is less than I<(6 + "
-"suffixlen)> characters long, or the last 6 characters before the suffix in "
-"I<template> were not XXXXXX."
+"In the glibc implementation, the I<n-char-sequence> that optionally follows "
+"\"NAN\" is interpreted as an integer number (with an optional '0' or '0x' "
+"prefix to select base 8 or 16) that is to be placed in the mantissa "
+"component of the returned value."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:169
+#: build/C/man3/strtod.3:205 build/C/man3/strtoul.3:225
msgid ""
-"These functions may also fail with any of the errors described for "
-"B<open>(2)."
+"See the example on the B<strtol>(3) manual page; the use of the functions "
+"described in this manual page is similar."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:176
+#: build/C/man3/strtod.3:214
msgid ""
-"B<mkostemp>() is available since glibc 2.7. B<mkstemps>() and "
-"B<mkostemps>() are available since glibc 2.11."
+"B<atof>(3), B<atoi>(3), B<atol>(3), B<nan>(3), B<nanf>(3), B<nanl>(3), "
+"B<strtol>(3), B<strtoul>(3)"
msgstr ""
-#. type: Plain text
-#: build/C/man3/mkstemp.3:179
-msgid "B<mkstemp>(): 4.3BSD, POSIX.1-2001."
+#. type: TH
+#: build/C/man3/strtoimax.3:24
+#, no-wrap
+msgid "STRTOIMAX"
msgstr ""
-#. mkstemps() appears to be at least on the BSDs, Mac OS X, Solaris,
-#. and Tru64.
#. type: Plain text
-#: build/C/man3/mkstemp.3:184
-msgid "B<mkstemps>(): unstandardized, but appears on several other systems."
+#: build/C/man3/strtoimax.3:27
+msgid "strtoimax, strtoumax - convert string to integer"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:189
-msgid "B<mkostemp>() and B<mkostemps>(): are glibc extensions."
+#: build/C/man3/strtoimax.3:30
+#, no-wrap
+msgid "B<#include E<lt>inttypes.hE<gt>>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:193
+#: build/C/man3/strtoimax.3:32
+#, no-wrap
msgid ""
-"The old behavior of creating a file with mode 0666 may be a security risk, "
-"especially since other UNIX flavors use 0600, and somebody might overlook "
-"this detail when porting programs."
+"B<intmax_t strtoimax(const char *>I<nptr>B<, char **>I<endptr>B<, int "
+">I<base>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:204
+#: build/C/man3/strtoimax.3:34
+#, no-wrap
msgid ""
-"More generally, the POSIX specification of B<mkstemp>() does not say "
-"anything about file modes, so the application should make sure its file mode "
-"creation mask (see B<umask>(2)) is set appropriately before calling "
-"B<mkstemp>() (and B<mkostemp>())."
+"B<uintmax_t strtoumax(const char *>I<nptr>B<, char **>I<endptr>B<, int "
+">I<base>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:211
+#: build/C/man3/strtoimax.3:45
msgid ""
-"The prototype for B<mktemp>() is in I<E<lt>unistd.hE<gt>> for libc4, libc5, "
-"glibc1; glibc2 follows POSIX.1 and has the prototype in "
-"I<E<lt>stdlib.hE<gt>>."
+"These functions are just like B<strtol>(3) and B<strtoul>(3), except that "
+"they return a value of type I<intmax_t> and I<uintmax_t>, respectively."
msgstr ""
#. type: Plain text
-#: build/C/man3/mkstemp.3:217
-msgid "B<mkdtemp>(3), B<mktemp>(3), B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3)"
+#: build/C/man3/strtoimax.3:58
+msgid ""
+"On success, the converted value is returned. If nothing was found to "
+"convert, zero is returned. On overflow or underflow B<INTMAX_MAX> or "
+"B<INTMAX_MIN> or B<UINTMAX_MAX> is returned, and I<errno> is set to "
+"B<ERANGE>."
msgstr ""
-#. type: TH
-#: build/C/man3/mktemp.3:32
-#, no-wrap
-msgid "MKTEMP"
+#. type: Plain text
+#: build/C/man3/strtoimax.3:69
+msgid ""
+"The B<strtoimax>() and B<strtoumax>() functions are thread-safe with "
+"exceptions. These functions can be safely used in multithreaded "
+"applications, as long as B<setlocale>(3) is not called to change the locale "
+"during their execution."
msgstr ""
#. type: Plain text
-#: build/C/man3/mktemp.3:35
-msgid "mktemp - make a unique temporary filename"
+#: build/C/man3/strtoimax.3:77
+msgid "B<imaxabs>(3), B<imaxdiv>(3), B<strtol>(3), B<strtoul>(3), B<wcstoimax>(3)"
msgstr ""
-#. type: Plain text
-#: build/C/man3/mktemp.3:40
+#. type: TH
+#: build/C/man3/strtol.3:31
#, no-wrap
-msgid "B<char *mktemp(char *>I<template>B<);>\n"
+msgid "STRTOL"
msgstr ""
#. type: Plain text
-#: build/C/man3/mktemp.3:48
-msgid "B<mktemp>():"
+#: build/C/man3/strtol.3:34
+msgid "strtol, strtoll, strtoq - convert a string to a long integer"
msgstr ""
#. type: Plain text
-#: build/C/man3/mktemp.3:57
+#: build/C/man3/strtol.3:39
#, no-wrap
msgid ""
-"_BSD_SOURCE || _SVID_SOURCE ||\n"
-" (_XOPEN_SOURCE\\ E<gt>=\\ 500 ||\n"
-" _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED) &&\n"
-" !(_POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ E<gt>=\\ 600)\n"
-msgstr ""
-
-#. type: Plain text
-#: build/C/man3/mktemp.3:75
-msgid ""
-"The B<mktemp>() function generates a unique temporary filename from "
-"I<template>. The last six characters of I<template> must be XXXXXX and "
-"these are replaced with a string that makes the filename unique. Since it "
-"will be modified, I<template> must not be a string constant, but should be "
-"declared as a character array."
+"B<long int strtol(const char *>I<nptr>B<, char **>I<endptr>B<, int "
+">I<base>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mktemp.3:84
+#: build/C/man3/strtol.3:42
+#, no-wrap
msgid ""
-"The B<mktemp>() function always returns I<template>. If a unique name was "
-"created, the last six bytes of I<template> will have been modified in such a "
-"way that the resulting name is unique (i.e., does not exist already) If a "
-"unique name could not be created, I<template> is made an empty string."
+"B<long long int strtoll(const char *>I<nptr>B<, char **>I<endptr>B<, int "
+">I<base>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/mktemp.3:88
-msgid "The last six characters of I<template> were not XXXXXX."
+#: build/C/man3/strtol.3:51
+msgid "B<strtoll>():"
msgstr ""
#. type: Plain text
-#: build/C/man3/mktemp.3:92
+#: build/C/man3/strtol.3:54 build/C/man3/strtoul.3:57
msgid ""
-"4.3BSD, POSIX.1-2001. POSIX.1-2008 removes the specification of "
-"B<mktemp>()."
+"_XOPEN_SOURCE\\ E<gt>=\\ 600 || _BSD_SOURCE || _SVID_SOURCE || "
+"_ISOC99_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L;"
msgstr ""
#. type: Plain text
-#: build/C/man3/mktemp.3:98
+#: build/C/man3/strtol.3:68
msgid ""
-"The prototype is in I<E<lt>unistd.hE<gt>> for libc4, libc5, glibc1; glibc2 "
-"follows the Single UNIX Specification and has the prototype in "
-"I<E<lt>stdlib.hE<gt>>."
+"The B<strtol>() function converts the initial part of the string in I<nptr> "
+"to a long integer value according to the given I<base>, which must be "
+"between 2 and 36 inclusive, or be the special value 0."
msgstr ""
-#. type: SH
-#: build/C/man3/mktemp.3:98 build/C/man3/rpmatch.3:90 build/C/man3/setenv.3:121
-#, no-wrap
-msgid "BUGS"
+#. type: Plain text
+#: build/C/man3/strtol.3:81 build/C/man3/strtoul.3:89
+msgid ""
+"The string may begin with an arbitrary amount of white space (as determined "
+"by B<isspace>(3)) followed by a single optional \\(aq+\\(aq or \\(aq-\\(aq "
+"sign. If I<base> is zero or 16, the string may then include a \"0x\" "
+"prefix, and the number will be read in base 16; otherwise, a zero I<base> is "
+"taken as 10 (decimal) unless the next character is \\(aq0\\(aq, in which "
+"case it is taken as 8 (octal)."
msgstr ""
#. type: Plain text
-#: build/C/man3/mktemp.3:111
+#: build/C/man3/strtol.3:90
msgid ""
-"Never use B<mktemp>(). Some implementations follow 4.3BSD and replace "
-"XXXXXX by the current process ID and a single letter, so that at most 26 "
-"different names can be returned. Since on the one hand the names are easy "
-"to guess, and on the other hand there is a race between testing whether the "
-"name exists and opening the file, every use of B<mktemp>() is a security "
-"risk. The race is avoided by B<mkstemp>(3)."
+"The remainder of the string is converted to a I<long int> value in the "
+"obvious manner, stopping at the first character which is not a valid digit "
+"in the given base. (In bases above 10, the letter \\(aqA\\(aq in either "
+"uppercase or lowercase represents 10, \\(aqB\\(aq represents 11, and so "
+"forth, with \\(aqZ\\(aq representing 35.)"
msgstr ""
#. type: Plain text
-#: build/C/man3/mktemp.3:116
-msgid "B<mkstemp>(3), B<tempnam>(3), B<tmpfile>(3), B<tmpnam>(3)"
+#: build/C/man3/strtol.3:111
+msgid ""
+"If I<endptr> is not NULL, B<strtol>() stores the address of the first "
+"invalid character in I<*endptr>. If there were no digits at all, "
+"B<strtol>() stores the original value of I<nptr> in I<*endptr> (and returns "
+"0). In particular, if I<*nptr> is not \\(aq\\e0\\(aq but I<**endptr> is "
+"\\(aq\\e0\\(aq on return, the entire string is valid."
msgstr ""
-#. type: TH
-#: build/C/man3/on_exit.3:29
-#, no-wrap
-msgid "ON_EXIT"
+#. type: Plain text
+#: build/C/man3/strtol.3:117
+msgid ""
+"The B<strtoll>() function works just like the B<strtol>() function but "
+"returns a long long integer value."
msgstr ""
#. type: Plain text
-#: build/C/man3/on_exit.3:32
-msgid "on_exit - register a function to be called at normal process termination"
+#: build/C/man3/strtol.3:144
+msgid ""
+"The B<strtol>() function returns the result of the conversion, unless the "
+"value would underflow or overflow. If an underflow occurs, B<strtol>() "
+"returns B<LONG_MIN>. If an overflow occurs, B<strtol>() returns "
+"B<LONG_MAX>. In both cases, I<errno> is set to B<ERANGE>. Precisely the "
+"same holds for B<strtoll>() (with B<LLONG_MIN> and B<LLONG_MAX> instead of "
+"B<LONG_MIN> and B<LONG_MAX>)."
msgstr ""
#. type: Plain text
-#: build/C/man3/on_exit.3:37
-#, no-wrap
-msgid "B<int on_exit(void (*>I<function>B<)(int , void *), void *>I<arg>B<);>\n"
+#: build/C/man3/strtol.3:151 build/C/man3/strtoul.3:155
+msgid "(not in C99) The given I<base> contains an unsupported value."
msgstr ""
#. type: Plain text
-#: build/C/man3/on_exit.3:46
-msgid "B<on_exit>(): _BSD_SOURCE || _SVID_SOURCE"
+#: build/C/man3/strtol.3:154 build/C/man3/strtoul.3:158
+msgid "The resulting value was out of range."
msgstr ""
#. type: Plain text
-#: build/C/man3/on_exit.3:57
+#: build/C/man3/strtol.3:161 build/C/man3/strtoul.3:165
msgid ""
-"The B<on_exit>() function registers the given I<function> to be called at "
-"normal process termination, whether via B<exit>(3) or via return from the "
-"program's I<main>(). The I<function> is passed the status argument given to "
-"the last call to B<exit>(3) and the I<arg> argument from B<on_exit>()."
+"The implementation may also set I<errno> to B<EINVAL> in case no conversion "
+"was performed (no digits seen, and 0 returned)."
msgstr ""
#. type: Plain text
-#: build/C/man3/on_exit.3:72
+#: build/C/man3/strtol.3:173
msgid ""
-"The B<on_exit>() function returns the value 0 if successful; otherwise it "
-"returns a nonzero value."
+"The B<strtol>(), B<strtoll>(), and B<strtoq>() functions are thread-safe "
+"with exceptions. These functions can be safely used in multithreaded "
+"applications, as long as B<setlocale>(3) is not called to change the locale "
+"during their execution."
msgstr ""
#. type: Plain text
-#: build/C/man3/on_exit.3:79
+#: build/C/man3/strtol.3:178
msgid ""
-"This function comes from SunOS 4, but is also present in libc4, libc5 and "
-"glibc. It no longer occurs in Solaris (SunOS 5). Avoid this function, and "
-"use the standard B<atexit>(3) instead."
+"B<strtol>() conforms to SVr4, 4.3BSD, C89, C99, and POSIX.1-2001, and "
+"B<strtoll>() to C99 and POSIX.1-2001."
msgstr ""
#. type: Plain text
-#: build/C/man3/on_exit.3:83
-msgid "B<_exit>(2), B<atexit>(3), B<exit>(3)"
-msgstr ""
-
-#. type: TH
-#: build/C/man3/putenv.3:34
-#, no-wrap
-msgid "PUTENV"
+#: build/C/man3/strtol.3:196
+msgid ""
+"Since B<strtol>() can legitimately return 0, B<LONG_MAX>, or B<LONG_MIN> "
+"(B<LLONG_MAX> or B<LLONG_MIN> for B<strtoll>()) on both success and "
+"failure, the calling program should set I<errno> to 0 before the call, and "
+"then determine if an error occurred by checking whether I<errno> has a "
+"nonzero value after the call."
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:37
-msgid "putenv - change or add an environment variable"
+#: build/C/man3/strtol.3:201
+msgid ""
+"According to POSIX.1-2001, in locales other than the \"C\" and \"POSIX\", "
+"these functions may accept other, implementation-defined numeric strings."
msgstr ""
-#. Not: const char *
#. type: Plain text
-#: build/C/man3/putenv.3:43
-#, no-wrap
-msgid "B<int putenv(char *>I<string>B<);>\n"
+#: build/C/man3/strtol.3:203 build/C/man3/strtoul.3:202
+msgid "BSD also has"
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:52
-msgid "B<putenv>(): _SVID_SOURCE || _XOPEN_SOURCE"
+#: build/C/man3/strtol.3:207
+#, no-wrap
+msgid ""
+"B<quad_t strtoq(const char *>I<nptr>B<, char **>I<endptr>B<, int "
+">I<base>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:65
+#: build/C/man3/strtol.3:216
msgid ""
-"The B<putenv>() function adds or changes the value of environment "
-"variables. The argument I<string> is of the form I<name>=I<value>. If "
-"I<name> does not already exist in the environment, then I<string> is added "
-"to the environment. If I<name> does exist, then the value of I<name> in the "
-"environment is changed to I<value>. The string pointed to by I<string> "
-"becomes part of the environment, so altering the string changes the "
-"environment."
+"with completely analogous definition. Depending on the wordsize of the "
+"current architecture, this may be equivalent to B<strtoll>() or to "
+"B<strtol>()."
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:70
+#: build/C/man3/strtol.3:230
msgid ""
-"The B<putenv>() function returns zero on success, or nonzero if an error "
-"occurs."
+"The program shown below demonstrates the use of B<strtol>(). The first "
+"command-line argument specifies a string from which B<strtol>() should "
+"parse a number. The second (optional) argument specifies the base to be "
+"used for the conversion. (This argument is converted to numeric form using "
+"B<atoi>(3), a function that performs no error checking and has a simpler "
+"interface than B<strtol>().) Some examples of the results produced by this "
+"program are the following:"
msgstr ""
-#. type: TP
-#: build/C/man3/putenv.3:71 build/C/man3/setenv.3:104
+#. type: Plain text
+#: build/C/man3/strtol.3:246
#, no-wrap
-msgid "B<ENOMEM>"
+msgid ""
+"$B< ./a.out 123>\n"
+"strtol() returned 123\n"
+"$B< ./a.out \\(aq 123\\(aq>\n"
+"strtol() returned 123\n"
+"$B< ./a.out 123abc>\n"
+"strtol() returned 123\n"
+"Further characters after number: abc\n"
+"$B< ./a.out 123abc 55>\n"
+"strtol: Invalid argument\n"
+"$B< ./a.out \\(aq\\(aq>\n"
+"No digits were found\n"
+"$B< ./a.out 4000000000>\n"
+"strtol: Numerical result out of range\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:74
-msgid "Insufficient space to allocate new environment."
+#: build/C/man3/strtol.3:255
+#, no-wrap
+msgid ""
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>limits.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>errno.hE<gt>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:76
-msgid "SVr4, POSIX.1-2001, 4.3BSD."
+#: build/C/man3/strtol.3:262
+#, no-wrap
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" int base;\n"
+" char *endptr, *str;\n"
+" long val;\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:81
+#: build/C/man3/strtol.3:267
+#, no-wrap
msgid ""
-"The B<putenv>() function is not required to be reentrant, and the one in "
-"libc4, libc5 and glibc 2.0 is not, but the glibc 2.1 version is."
+" if (argc E<lt> 2) {\n"
+" fprintf(stderr, \"Usage: %s str [base]\\en\", argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:94
+#: build/C/man3/strtol.3:270
+#, no-wrap
msgid ""
-"Description for libc4, libc5, glibc: If the argument I<string> is of the "
-"form I<name>, and does not contain an \\(aq=\\(aq character, then the "
-"variable I<name> is removed from the environment. If B<putenv>() has to "
-"allocate a new array I<environ>, and the previous array was also allocated "
-"by B<putenv>(), then it will be freed. In no case will the old storage "
-"associated to the environment variable itself be freed."
+" str = argv[1];\n"
+" base = (argc E<gt> 2) ? atoi(argv[2]) : 10;\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:110
+#: build/C/man3/strtol.3:273
+#, no-wrap
msgid ""
-"The libc4 and libc5 and glibc 2.1.2 versions conform to SUSv2: the pointer "
-"I<string> given to B<putenv>() is used. In particular, this string becomes "
-"part of the environment; changing it later will change the environment. "
-"(Thus, it is an error is to call B<putenv>() with an automatic variable as "
-"the argument, then return from the calling function while I<string> is still "
-"part of the environment.) However, glibc 2.0-2.1.1 differs: a copy of the "
-"string is used. On the one hand this causes a memory leak, and on the other "
-"hand it violates SUSv2. This has been fixed in glibc 2.1.2."
+" errno = 0; /* To distinguish success/failure after call */\n"
+" val = strtol(str, &endptr, base);\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:112
-msgid "The 4.4BSD version, like glibc 2.0, uses a copy."
+#: build/C/man3/strtol.3:275
+#, no-wrap
+msgid " /* Check for various possible errors */\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:114
-msgid "SUSv2 removes the I<const> from the prototype, and so does glibc 2.1.3."
+#: build/C/man3/strtol.3:281
+#, no-wrap
+msgid ""
+" if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))\n"
+" || (errno != 0 && val == 0)) {\n"
+" perror(\"strtol\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/putenv.3:120
-msgid "B<clearenv>(3), B<getenv>(3), B<setenv>(3), B<unsetenv>(3), B<environ>(7)"
+#: build/C/man3/strtol.3:286
+#, no-wrap
+msgid ""
+" if (endptr == str) {\n"
+" fprintf(stderr, \"No digits were found\\en\");\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
msgstr ""
-#. type: TH
-#: build/C/man3/qecvt.3:26
+#. type: Plain text
+#: build/C/man3/strtol.3:288
#, no-wrap
-msgid "QECVT"
+msgid " /* If we got here, strtol() successfully parsed a number */\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/qecvt.3:29
-msgid "qecvt, qfcvt, qgcvt - convert a floating-point number to a string"
+#: build/C/man3/strtol.3:290
+#, no-wrap
+msgid " printf(\"strtol() returned %ld\\en\", val);\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/qecvt.3:34
+#: build/C/man3/strtol.3:293
+#, no-wrap
msgid ""
-"B<char *qecvt(long double >I<number>B<, int >I<ndigits>B<, int "
-"*>I<decpt>B<,> B<int *>I<sign>B<);>"
+" if (*endptr != \\(aq\\e0\\(aq) /* Not necessarily an "
+"error... */\n"
+" printf(\"Further characters after number: %s\\en\", endptr);\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/qecvt.3:37
-msgid ""
-"B<char *qfcvt(long double >I<number>B<, int >I<ndigits>B<, int "
-"*>I<decpt>B<,> B<int *>I<sign>B<);>"
+#: build/C/man3/strtol.3:303
+msgid "B<atof>(3), B<atoi>(3), B<atol>(3), B<strtod>(3), B<strtoul>(3)"
msgstr ""
-#. type: Plain text
-#: build/C/man3/qecvt.3:39
-msgid "B<char *qgcvt(long double >I<number>B<, int >I<ndigit>B<, char *>I<buf>B<);>"
+#. type: TH
+#: build/C/man3/strtoul.3:33
+#, no-wrap
+msgid "STRTOUL"
msgstr ""
#. type: Plain text
-#: build/C/man3/qecvt.3:50
-msgid "B<qecvt>(), B<qfcvt>(), B<qgcvt>(): _SVID_SOURCE"
+#: build/C/man3/strtoul.3:36
+msgid "strtoul, strtoull, strtouq - convert a string to an unsigned long integer"
msgstr ""
#. type: Plain text
-#: build/C/man3/qecvt.3:70
+#: build/C/man3/strtoul.3:42
+#, no-wrap
msgid ""
-"The functions B<qecvt>(), B<qfcvt>() and B<qgcvt>() are identical to "
-"B<ecvt>(3), B<fcvt>(3) and B<gcvt>(3) respectively, except that they use a "
-"I<long double> argument I<number>. See B<ecvt>(3) and B<gcvt>(3)."
+"B<unsigned long int strtoul(const char *>I<nptr>B<, char **>I<endptr>B<, int "
+">I<base>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/qecvt.3:76
+#: build/C/man3/strtoul.3:45
+#, no-wrap
msgid ""
-"SVr4. Not seen in most common UNIX implementations, but occurs in SunOS. "
-"Not supported by libc4 and libc5. Supported by glibc."
+"B<unsigned long long int strtoull(const char *>I<nptr>B<, char "
+"**>I<endptr>B<,>\n"
+"B< int >I<base>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/qecvt.3:86
-msgid "B<ecvt>(3), B<ecvt_r>(3), B<gcvt>(3), B<sprintf>(3)"
-msgstr ""
-
-#. type: TH
-#: build/C/man3/rand.3:39
-#, no-wrap
-msgid "RAND"
+#: build/C/man3/strtoul.3:54
+msgid "B<strtoull>():"
msgstr ""
-#. type: TH
-#: build/C/man3/rand.3:39
-#, no-wrap
-msgid "2010-10-01"
+#. type: Plain text
+#: build/C/man3/strtoul.3:75
+msgid ""
+"The B<strtoul>() function converts the initial part of the string in "
+"I<nptr> to an I<unsigned long int> value according to the given I<base>, "
+"which must be between 2 and 36 inclusive, or be the special value 0."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:42
-msgid "rand, rand_r, srand - pseudo-random number generator"
+#: build/C/man3/strtoul.3:98
+msgid ""
+"The remainder of the string is converted to an I<unsigned long int> value in "
+"the obvious manner, stopping at the first character which is not a valid "
+"digit in the given base. (In bases above 10, the letter \\(aqA\\(aq in "
+"either uppercase or lowercase represents 10, \\(aqB\\(aq represents 11, and "
+"so forth, with \\(aqZ\\(aq representing 35.)"
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:47
-#, no-wrap
-msgid "B<int rand(void);>\n"
+#: build/C/man3/strtoul.3:119
+msgid ""
+"If I<endptr> is not NULL, B<strtoul>() stores the address of the first "
+"invalid character in I<*endptr>. If there were no digits at all, "
+"B<strtoul>() stores the original value of I<nptr> in I<*endptr> (and "
+"returns 0). In particular, if I<*nptr> is not \\(aq\\e0\\(aq but "
+"I<**endptr> is \\(aq\\e0\\(aq on return, the entire string is valid."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:49
-#, no-wrap
-msgid "B<int rand_r(unsigned int *>I<seedp>B<);>\n"
+#: build/C/man3/strtoul.3:127
+msgid ""
+"The B<strtoull>() function works just like the B<strtoul>() function but "
+"returns an I<unsigned long long int> value."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:51
-#, no-wrap
-msgid "B<void srand(unsigned int >I<seed>B<);>\n"
+#: build/C/man3/strtoul.3:148
+msgid ""
+"The B<strtoul>() function returns either the result of the conversion or, "
+"if there was a leading minus sign, the negation of the result of the "
+"conversion represented as an unsigned value, unless the original "
+"(nonnegated) value would overflow; in the latter case, B<strtoul>() returns "
+"B<ULONG_MAX> and sets I<errno> to B<ERANGE>. Precisely the same holds for "
+"B<strtoull>() (with B<ULLONG_MAX> instead of B<ULONG_MAX>)."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:60
-msgid "B<rand_r>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE"
+#: build/C/man3/strtoul.3:177
+msgid ""
+"The B<strtoul>(), B<strtoull>(), and B<strtouq>() functions are thread-safe "
+"with exceptions. These functions can be safely used in multithreaded "
+"applications, as long as B<setlocale>(3) is not called to change the locale "
+"during their execution."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:66
+#: build/C/man3/strtoul.3:182
msgid ""
-"The B<rand>() function returns a pseudo-random integer in the range 0 to "
-"B<RAND_MAX> inclusive (i.e., the mathematical range [0,\\ B<RAND_MAX>])."
+"B<strtoul>() conforms to SVr4, C89, C99, and POSIX-2001, and B<strtoull>() "
+"to C99 and POSIX.1-2001."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:75
+#: build/C/man3/strtoul.3:196
msgid ""
-"The B<srand>() function sets its argument as the seed for a new sequence of "
-"pseudo-random integers to be returned by B<rand>(). These sequences are "
-"repeatable by calling B<srand>() with the same seed value."
+"Since B<strtoul>() can legitimately return 0 or B<ULONG_MAX> (B<ULLONG_MAX> "
+"for B<strtoull>()) on both success and failure, the calling program should "
+"set I<errno> to 0 before the call, and then determine if an error occurred "
+"by checking whether I<errno> has a nonzero value after the call."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:79
+#: build/C/man3/strtoul.3:200
msgid ""
-"If no seed value is provided, the B<rand>() function is automatically "
-"seeded with a value of 1."
+"In locales other than the \"C\" locale, other strings may be accepted. (For "
+"example, the thousands separator of the current locale may be supported.)"
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:90
+#: build/C/man3/strtoul.3:206
+#, no-wrap
msgid ""
-"The function B<rand>() is not reentrant or thread-safe, since it uses "
-"hidden state that is modified on each call. This might just be the seed "
-"value to be used by the next call, or it might be something more elaborate. "
-"In order to get reproducible behavior in a threaded application, this state "
-"must be made explicit; this can be done using the reentrant function "
-"B<rand_r>()."
+"B<u_quad_t strtouq(const char *>I<nptr>B<, char **>I<endptr>B<, int "
+">I<base>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:106
+#: build/C/man3/strtoul.3:215
msgid ""
-"Like B<rand>(), B<rand_r>() returns a pseudo-random integer in the range "
-"[0,\\ B<RAND_MAX>]. The I<seedp> argument is a pointer to an I<unsigned "
-"int> that is used to store state between calls. If B<rand_r>() is called "
-"with the same initial value for the integer pointed to by I<seedp>, and that "
-"value is not modified between calls, then the same pseudo-random sequence "
-"will result."
+"with completely analogous definition. Depending on the wordsize of the "
+"current architecture, this may be equivalent to B<strtoull>() or to "
+"B<strtoul>()."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:116
+#: build/C/man3/strtoul.3:220
msgid ""
-"The value pointed to by the I<seedp> argument of B<rand_r>() provides only "
-"a very small amount of state, so this function will be a weak pseudo-random "
-"generator. Try B<drand48_r>(3) instead."
+"Negative values are considered valid input and are silently converted to the "
+"equivalent I<unsigned long int> value."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:127
-msgid ""
-"The B<rand>() and B<rand_r>() functions return a value between 0 and "
-"B<RAND_MAX> (inclusive). The B<srand>() function returns no value."
+#: build/C/man3/strtoul.3:231
+msgid "B<atof>(3), B<atoi>(3), B<atol>(3), B<strtod>(3), B<strtol>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/system.3:31
+#, no-wrap
+msgid "SYSTEM"
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:139
-msgid ""
-"The functions B<rand>() and B<srand>() conform to SVr4, 4.3BSD, C89, C99, "
-"POSIX.1-2001. The function B<rand_r>() is from POSIX.1-2001. POSIX.1-2008 "
-"marks B<rand_r>() as obsolete."
+#: build/C/man3/system.3:34
+msgid "system - execute a shell command"
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:158
-msgid ""
-"The versions of B<rand>() and B<srand>() in the Linux C Library use the "
-"same random number generator as B<random>(3) and B<srandom>(3), so the "
-"lower-order bits should be as random as the higher-order bits. However, on "
-"older B<rand>() implementations, and on current implementations on "
-"different systems, the lower-order bits are much less random than the "
-"higher-order bits. Do not use this function in applications intended to be "
-"portable when good randomness is needed. (Use B<random>(3) instead.)"
+#: build/C/man3/system.3:39
+#, no-wrap
+msgid "B<int system(const char *>I<command>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:164
+#: build/C/man3/system.3:50
msgid ""
-"POSIX.1-2001 gives the following example of an implementation of B<rand>() "
-"and B<srand>(), possibly useful when one needs the same sequence on two "
-"different machines."
+"The B<system>() library function uses B<fork>(2) to create a child process "
+"that executes the shell command specified in I<command> using B<execl>(3) "
+"as follows:"
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:168
+#: build/C/man3/system.3:52
#, no-wrap
-msgid "static unsigned long next = 1;\n"
+msgid " execl(\"/bin/sh\", \"sh\", \"-c\", command, (char *) 0);\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:174
-#, no-wrap
-msgid ""
-"/* RAND_MAX assumed to be 32767 */\n"
-"int myrand(void) {\n"
-" next = next * 1103515245 + 12345;\n"
-" return((unsigned)(next/65536) % 32768);\n"
-"}\n"
+#: build/C/man3/system.3:55
+msgid "B<system>() returns after the command has been completed."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:178
-#, no-wrap
+#: build/C/man3/system.3:67
msgid ""
-"void mysrand(unsigned seed) {\n"
-" next = seed;\n"
-"}\n"
+"During execution of the command, B<SIGCHLD> will be blocked, and B<SIGINT> "
+"and B<SIGQUIT> will be ignored, in the process that calls B<system>() "
+"(these signals will be handled according to their defaults inside the child "
+"process that executes I<command>)."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:185
+#: build/C/man3/system.3:73
msgid ""
-"The following program can be used to display the pseudo-random sequence "
-"produced by B<rand>() when given a particular seed."
+"If I<command> is NULL, then B<system>() returns a status indicating whether "
+"a shell is available on the system"
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:190
-#, no-wrap
-msgid ""
-"#include E<lt>stdlib.hE<gt>\n"
-"#include E<lt>stdio.hE<gt>\n"
+#: build/C/man3/system.3:77
+msgid "The return value of B<system>() is one of the following:"
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:196
-#, no-wrap
+#: build/C/man3/system.3:82
msgid ""
-"int\n"
-"main(int argc, char *argv[])\n"
-"{\n"
-" int j, r, nloops;\n"
-" unsigned int seed;\n"
+"If I<command> is NULL, then a nonzero value if a shell is available, or 0 if "
+"no shell is available."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:201
-#, no-wrap
+#: build/C/man3/system.3:86
msgid ""
-" if (argc != 3) {\n"
-" fprintf(stderr, \"Usage: %s E<lt>seedE<gt> E<lt>nloopsE<gt>\\en\", "
-"argv[0]);\n"
-" exit(EXIT_FAILURE);\n"
-" }\n"
+"If a child process could not be created, or its status could not be "
+"retrieved, the return value is -1."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:204
-#, no-wrap
+#: build/C/man3/system.3:91
msgid ""
-" seed = atoi(argv[1]);\n"
-" nloops = atoi(argv[2]);\n"
+"If a shell could not be executed in the child process, then the return value "
+"is as though the child shell terminated by calling B<_exit>(2) with the "
+"status 127."
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:210
-#, no-wrap
+#: build/C/man3/system.3:98
msgid ""
-" srand(seed);\n"
-" for (j = 0; j E<lt> nloops; j++) {\n"
-" r = rand();\n"
-" printf(\"%d\\en\", r);\n"
-" }\n"
+"If all system calls succeed, then the return value is the termination status "
+"of the child shell used to execute I<command>. (The termination status of a "
+"shell is the termination status of the last command it executes.)"
msgstr ""
#. type: Plain text
-#: build/C/man3/rand.3:218
-msgid "B<drand48>(3), B<random>(3)"
-msgstr ""
-
-#. type: TH
-#: build/C/man3/random.3:31
-#, no-wrap
-msgid "RANDOM"
+#: build/C/man3/system.3:107
+msgid ""
+"In the last two cases, the return value is a \"wait status\" that can be "
+"examined using the macros described in B<waitpid>(2). (i.e., B<WIFEXITED>() "
+"B<WEXITSTATUS>() and so on)."
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:34
-msgid "random, srandom, initstate, setstate - random number generator"
+#: build/C/man3/system.3:110
+msgid "B<system>() does not affect the wait status of any other children."
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:39
-#, no-wrap
-msgid "B<long int random(void);>\n"
+#: build/C/man3/system.3:115
+msgid "The B<system>() function is thread-safe."
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:41
-#, no-wrap
-msgid "B<void srandom(unsigned int >I<seed>B<);>\n"
+#: build/C/man3/system.3:117
+msgid "C89, C99, POSIX.1-2001."
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:43
-#, no-wrap
+#: build/C/man3/system.3:134
msgid ""
-"B<char *initstate(unsigned int >I<seed>B<, char *>I<state>B<, size_t "
-">I<n>B<);>\n"
+"B<system>() provides simplicity and convenience: it handles all of the "
+"details of calling B<fork>(2), B<execl>(3), and B<waitpid>(2), as well as "
+"the necessary manipulations of signals; in addition, the shell performs the "
+"usual substitutions and I/O redirections for I<command>. The main cost of "
+"B<system>() is inefficiency: additional system calls are required to create "
+"the process that runs the shell and to execute the shell."
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:45
-#, no-wrap
-msgid "B<char *setstate(char *>I<state>B<);>\n"
+#: build/C/man3/system.3:146
+msgid ""
+"If the B<_XOPEN_SOURCE> feature test macro is defined (before including "
+"I<any> header files), then the macros described in B<waitpid>(2) "
+"(B<WEXITSTATUS>(), etc.) are made available when including "
+"I<E<lt>stdlib.hE<gt>>."
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:57
-msgid "B<random>(), B<srandom>(), B<initstate>(), B<setstate>():"
+#: build/C/man3/system.3:157
+msgid ""
+"As mentioned, B<system>() ignores B<SIGINT> and B<SIGQUIT>. This may make "
+"programs that call it from a loop uninterruptible, unless they take care "
+"themselves to check the exit status of the child. For example:"
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:60
+#: build/C/man3/system.3:162
+#, no-wrap
msgid ""
-"_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
-"_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
+" while (something) {\n"
+" int ret = system(\"foo\");\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:71
+#: build/C/man3/system.3:167
+#, no-wrap
msgid ""
-"The B<random>() function uses a nonlinear additive feedback random number "
-"generator employing a default table of size 31 long integers to return "
-"successive pseudo-random numbers in the range from 0 to B<RAND_MAX>. The "
-"period of this random number generator is very large, approximately I<16\\ "
-"*\\ ((2^31)\\ -\\ 1)>."
+" if (WIFSIGNALED(ret) &&\n"
+" (WTERMSIG(ret) == SIGINT || WTERMSIG(ret) == SIGQUIT))\n"
+" break;\n"
+" }\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:85
+#: build/C/man3/system.3:187
msgid ""
-"The B<srandom>() function sets its argument as the seed for a new sequence "
-"of pseudo-random integers to be returned by B<random>(). These sequences "
-"are repeatable by calling B<srandom>() with the same seed value. If no "
-"seed value is provided, the B<random>() function is automatically seeded "
-"with a value of 1."
+"Do not use B<system>() from a program with set-user-ID or set-group-ID "
+"privileges, because strange values for some environment variables might be "
+"used to subvert system integrity. Use the B<exec>(3) family of functions "
+"instead, but not B<execlp>(3) or B<execvp>(3). B<system>() will not, in "
+"fact, work properly from programs with set-user-ID or set-group-ID "
+"privileges on systems on which I</bin/sh> is bash version 2, since bash 2 "
+"drops privileges on startup. (Debian uses a modified bash which does not do "
+"this when invoked as B<sh>.)"
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:100
+#: build/C/man3/system.3:201
msgid ""
-"The B<initstate>() function allows a state array I<state> to be initialized "
-"for use by B<random>(). The size of the state array I<n> is used by "
-"B<initstate>() to decide how sophisticated a random number generator it "
-"should use\\(emthe larger the state array, the better the random numbers "
-"will be. I<seed> is the seed for the initialization, which specifies a "
-"starting point for the random number sequence, and provides for restarting "
-"at the same point."
+"In versions of glibc before 2.1.3, the check for the availability of "
+"I</bin/sh> was not actually performed if I<command> was NULL; instead it was "
+"always assumed to be available, and B<system>() always returned 1 in this "
+"case. Since glibc 2.1.3, this check is performed because, even though "
+"POSIX.1-2001 requires a conforming implementation to provide a shell, that "
+"shell may not be available or executable if the calling program has "
+"previously called B<chroot>(2) (which is not specified by POSIX.1-2001)."
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:116
+#: build/C/man3/system.3:207
msgid ""
-"The B<setstate>() function changes the state array used by the B<random>() "
-"function. The state array I<state> is used for random number generation "
-"until the next call to B<initstate>() or B<setstate>(). I<state> must "
-"first have been initialized using B<initstate>() or be the result of a "
-"previous call of B<setstate>()."
+"It is possible for the shell command to terminate with a status of 127, "
+"which yields a B<system>() return value that is indistinguishable from the "
+"case where a shell could not be executed in the child process."
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:130
+#: build/C/man3/system.3:215
msgid ""
-"The B<random>() function returns a value between 0 and B<RAND_MAX>. The "
-"B<srandom>() function returns no value. The B<initstate>() function "
-"returns a pointer to the previous state array. The B<setstate>() function "
-"returns a pointer to the previous state array, or NULL on error."
+"B<sh>(1), B<sigaction>(2), B<sigprocmask>(2), B<fork>(2), B<wait>(2), "
+"B<exec>(3), B<signal>(7)"
msgstr ""
-#. type: Plain text
-#: build/C/man3/random.3:135
-msgid "A state array of less than 8 bytes was specified to B<initstate>()."
+#. type: TH
+#: build/C/man7/vdso.7:13
+#, no-wrap
+msgid "VDSO"
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:137 build/C/man3/setenv.3:109
-msgid "4.3BSD, POSIX.1-2001."
+#: build/C/man7/vdso.7:16
+msgid "vDSO - overview of the virtual ELF dynamic shared object"
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:143
-msgid ""
-"Current \"optimal\" values for the size of the state array I<n> are 8, 32, "
-"64, 128, and 256 bytes; other amounts will be rounded down to the nearest "
-"known amount. Using less than 8 bytes will cause an error."
+#: build/C/man7/vdso.7:18
+msgid "B<#include E<lt>sys/auxv.hE<gt>>"
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:150
-msgid ""
-"This function should not be used in cases where multiple threads use "
-"B<random>() and the behavior should be reproducible. Use B<random_r>(3) "
-"for that purpose."
+#: build/C/man7/vdso.7:20
+msgid "B<void *vdso = (uintptr_t) getauxval(AT_SYSINFO_EHDR);>"
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:157
+#: build/C/man7/vdso.7:29
msgid ""
-"Random-number generation is a complex topic. I<Numerical Recipes in C: The "
-"Art of Scientific Computing> (William H. Press, Brian P. Flannery, Saul "
-"A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, "
-"2007, 3rd ed.) provides an excellent discussion of practical random-number "
-"generation issues in Chapter 7 (Random Numbers)."
+"The \"vDSO\" (virtual dynamic shared object) is a small shared library that "
+"the kernel automatically maps into the address space of all user-space "
+"applications. Applications usually do not need to concern themselves with "
+"these details as the vDSO is most commonly called by the C library. This "
+"way you can code in the normal way using standard functions and the C "
+"library will take care of using any functionality that is available via the "
+"vDSO."
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:163
+#: build/C/man7/vdso.7:37
msgid ""
-"For a more theoretical discussion which also covers many practical issues in "
-"depth, see Chapter 3 (Random Numbers) in Donald E. Knuth's I<The Art of "
-"Computer Programming>, volume 2 (Seminumerical Algorithms), 2nd ed.; "
-"Reading, Massachusetts: Addison-Wesley Publishing Company, 1981."
+"Why does the vDSO exist at all? There are some system calls the kernel "
+"provides that user-space code ends up using frequently, to the point that "
+"such calls can dominate overall performance. This is due both to the "
+"frequency of the call as well as the context-switch overhead that results "
+"from exiting user space and entering the kernel."
msgstr ""
#. type: Plain text
-#: build/C/man3/random.3:168
-msgid "B<drand48>(3), B<rand>(3), B<random_r>(3), B<srand>(3)"
-msgstr ""
-
-#. type: TH
-#: build/C/man3/random_r.3:24
-#, no-wrap
-msgid "RANDOM_R"
+#: build/C/man7/vdso.7:42
+msgid ""
+"The rest of this documentation is geared toward the curious and/or C library "
+"writers rather than general developers. If you're trying to call the vDSO "
+"in your own application rather than using the C library, you're most likely "
+"doing it wrong."
msgstr ""
-#. type: TH
-#: build/C/man3/random_r.3:24
+#. type: SS
+#: build/C/man7/vdso.7:42
#, no-wrap
-msgid "2008-03-07"
+msgid "Example background"
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:28
+#: build/C/man7/vdso.7:56
msgid ""
-"random_r, srandom_r, initstate_r, setstate_r - reentrant random number "
-"generator"
-msgstr ""
-
-#. type: Plain text
-#: build/C/man3/random_r.3:33
-#, no-wrap
-msgid "B<int random_r(struct random_data *>I<buf>B<, int32_t *>I<result>B<);>\n"
+"Making system calls can be slow. In x86 32-bit systems, you can trigger a "
+"software interrupt (I<int $0x80>) to tell the kernel you wish to make a "
+"system call. However, this instruction is expensive: it goes through the "
+"full interrupt-handling paths in the processor's microcode as well as in the "
+"kernel. Newer processors have faster (but backward incompatible) "
+"instructions to initiate system calls. Rather than require the C library to "
+"figure out if this functionality is available at run time, the C library can "
+"use functions provided by the kernel in the vDSO."
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:35
-#, no-wrap
-msgid "B<int srandom_r(unsigned int >I<seed>B<, struct random_data *>I<buf>B<);>\n"
+#: build/C/man7/vdso.7:63
+msgid ""
+"Note that the terminology can be confusing. On x86 systems, the vDSO "
+"function used to determine the preferred method of making a system call is "
+"named \"__kernel_vsyscall\", but on x86_64, the term \"vsyscall\" also "
+"refers to an obsolete way to ask the kernel what time it is or what CPU the "
+"caller is on."
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:38
-#, no-wrap
+#: build/C/man7/vdso.7:79
msgid ""
-"B<int initstate_r(unsigned int >I<seed>B<, char *>I<statebuf>B<,>\n"
-"B< size_t >I<statelen>B<, struct random_data *>I<buf>B<);>\n"
+"One frequently used system call is B<gettimeofday>(2). This system call is "
+"called both directly by user-space applications as well as indirectly by the "
+"C library. Think timestamps or timing loops or polling\\(emall of these "
+"frequently need to know what time it is right now. This information is also "
+"not secret\\(emany application in any privilege mode (root or any "
+"unprivileged user) will get the same answer. Thus the kernel arranges for "
+"the information required to answer this question to be placed in memory the "
+"process can access. Now a call to B<gettimeofday>(2) changes from a system "
+"call to a normal function call and a few memory accesses."
msgstr ""
-#. type: Plain text
-#: build/C/man3/random_r.3:40
+#. type: SS
+#: build/C/man7/vdso.7:79
#, no-wrap
-msgid "B<int setstate_r(char *>I<statebuf>B<, struct random_data *>I<buf>B<);>\n"
+msgid "Finding the vDSO"
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:52
-msgid "B<random_r>(), B<srandom_r>(), B<initstate_r>(), B<setstate_r>():"
+#: build/C/man7/vdso.7:86
+msgid ""
+"The base address of the vDSO (if one exists) is passed by the kernel to each "
+"program in the initial auxiliary vector (see B<getauxval>(3)), via the "
+"B<AT_SYSINFO_EHDR> tag."
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:54
-msgid "_SVID_SOURCE || _BSD_SOURCE"
+#: build/C/man7/vdso.7:95
+msgid ""
+"You must not assume the vDSO is mapped at any particular location in the "
+"user's memory map. The base address will usually be randomized at run time "
+"every time a new process image is created (at B<execve>(2) time). This is "
+"done for security reasons, to prevent \"return-to-libc\" attacks."
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:62
+#: build/C/man7/vdso.7:104
msgid ""
-"These functions are the reentrant equivalents of the functions described in "
-"B<random>(3). They are suitable for use in multithreaded programs where "
-"each thread needs to obtain an independent, reproducible sequence of random "
-"numbers."
+"For some architectures, there is also an B<AT_SYSINFO> tag. This is used "
+"only for locating the vsyscall entry point and is frequently omitted or set "
+"to 0 (meaning it's not available). This tag is a throwback to the initial "
+"vDSO work (see I<History> below) and its use should be avoided."
+msgstr ""
+
+#. type: SS
+#: build/C/man7/vdso.7:104
+#, no-wrap
+msgid "File format"
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:73
-msgid ""
-"The B<random_r>() function is like B<random>(3), except that instead of "
-"using state information maintained in a global variable, it uses the state "
-"information in the argument pointed to by I<buf>. The generated random "
-"number is returned in the argument I<result>."
+#: build/C/man7/vdso.7:111
+msgid ""
+"Since the vDSO is a fully formed ELF image, you can do symbol lookups on "
+"it. This allows new symbols to be added with newer kernel releases, and "
+"allows the C library to detect available functionality at run time when "
+"running under different kernel versions. Oftentimes the C library will do "
+"detection with the first call and then cache the result for subsequent "
+"calls."
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:82
+#: build/C/man7/vdso.7:120
msgid ""
-"The B<srandom_r>() function is like B<srandom>(3), except that it "
-"initializes the seed for the random number generator whose state is "
-"maintained in the object pointed to by I<buf>, instead of the seed "
-"associated with the global state variable."
+"All symbols are also versioned (using the GNU version format). This allows "
+"the kernel to update the function signature without breaking backward "
+"compatibility. This means changing the arguments that the function accepts "
+"as well as the return value. Thus, when looking up a symbol in the vDSO, "
+"you must always include the version to match the ABI you expect."
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:90
+#: build/C/man7/vdso.7:125
msgid ""
-"The B<initstate_r>() function is like B<initstate>(3) except that it "
-"initializes the state in the object pointed to by I<buf>, rather than "
-"initializing the global state variable."
+"Typically the vDSO follows the naming convention of prefixing all symbols "
+"with \"__vdso_\" or \"__kernel_\" so as to distinguish them from other "
+"standard symbols. For example, the \"gettimeofday\" function is named "
+"\"__vdso_gettimeofday\"."
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:98
+#: build/C/man7/vdso.7:129
msgid ""
-"The B<setstate_r>() function is like B<setstate>(3) except that it "
-"modifies the state in the object pointer to by I<buf>, rather than modifying "
-"the global state variable."
+"You use the standard C calling conventions when calling any of these "
+"functions. No need to worry about weird register or stack behavior."
msgstr ""
-#. type: Plain text
-#: build/C/man3/random_r.3:100
-msgid "All of these functions return 0 on success, or -1 on error."
+#. type: SS
+#: build/C/man7/vdso.7:130
+#, no-wrap
+msgid "Source"
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:105
-msgid "A state array of less than 8 bytes was specified to B<initstate_r>()."
+#: build/C/man7/vdso.7:134
+msgid ""
+"When you compile the kernel, it will automatically compile and link the vDSO "
+"code for you. You will frequently find it under the architecture-specific "
+"directory:"
msgstr ""
#. type: Plain text
-#: build/C/man3/random_r.3:114
-msgid "The I<statebuf> or I<buf> argument to B<setstate_r>() was NULL."
+#: build/C/man7/vdso.7:136
+#, no-wrap
+msgid " find arch/$ARCH/ -name '*vdso*.so*' -o -name '*gate*.so*'\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/random_r.3:123
-msgid "The I<buf> or I<result> argument to B<random_r>() was NULL."
+#. type: SS
+#: build/C/man7/vdso.7:137
+#, no-wrap
+msgid "vDSO names"
msgstr ""
-#. These functions appear to be on Tru64, but don't seem to be on
-#. Solaris, HP-UX, or FreeBSD.
#. type: Plain text
-#: build/C/man3/random_r.3:127
-msgid "These functions are nonstandard glibc extensions."
+#: build/C/man7/vdso.7:143
+msgid ""
+"The name of the vDSO varies across architectures. It will often show up in "
+"things like glibc's B<ldd>(1) output. The exact name should not matter to "
+"any code, so do not hardcode it."
msgstr ""
-#. type: TH
-#: build/C/man3/rpmatch.3:27
+#. type: tbl table
+#: build/C/man7/vdso.7:148
#, no-wrap
-msgid "RPMATCH"
+msgid "user ABI\tvDSO name\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:30
-msgid "rpmatch - determine if the answer to a question is affirmative or negative"
+#. type: tbl table
+#: 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
+#, no-wrap
+msgid "_\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:35
+#. type: tbl table
+#: build/C/man7/vdso.7:150
#, no-wrap
-msgid "B<int rpmatch(const char *>I<response>B<);>\n"
+msgid "aarch64\tlinux-vdso.so.1\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:44
-msgid "B<rpmatch>(): _SVID_SOURCE"
+#. type: tbl table
+#: build/C/man7/vdso.7:151
+#, no-wrap
+msgid "ia64\tlinux-gate.so.1\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:48
-msgid ""
-"B<rpmatch>() handles a user response to yes or no questions, with support "
-"for internationalization."
+#. type: tbl table
+#: build/C/man7/vdso.7:152
+#, no-wrap
+msgid "ppc/32\tlinux-vdso32.so.1\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:54
-msgid ""
-"I<response> should be a null-terminated string containing a user-supplied "
-"response, perhaps obtained with B<fgets>(3) or B<getline>(3)."
+#. type: tbl table
+#: build/C/man7/vdso.7:153
+#, no-wrap
+msgid "ppc/64\tlinux-vdso64.so.1\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:60
-msgid ""
-"The user's language preference is taken into account per the environment "
-"variables B<LANG>, B<LC_MESSAGES>, and B<LC_ALL>, if the program has called "
-"B<setlocale>(3) to effect their changes."
+#. type: tbl table
+#: build/C/man7/vdso.7:154
+#, no-wrap
+msgid "s390\tlinux-vdso32.so.1\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:64
-msgid ""
-"Regardless of the locale, responses matching B<^[Yy]> are always accepted as "
-"affirmative, and those matching B<^[Nn]> are always accepted as negative."
+#. type: tbl table
+#: build/C/man7/vdso.7:155
+#, no-wrap
+msgid "s390x\tlinux-vdso64.so.1\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:71
-msgid ""
-"After examining I<response>, B<rpmatch>() returns 0 for a recognized "
-"negative response (\"no\"), 1 for a recognized positive response (\"yes\"), "
-"and -1 when the value of I<response> is unrecognized."
+#. type: tbl table
+#: build/C/man7/vdso.7:156
+#, no-wrap
+msgid "sh\tlinux-gate.so.1\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:75
-msgid ""
-"A return value of -1 may indicate either an invalid input, or some other "
-"error. It is incorrect to only test if the return value is nonzero."
+#. type: tbl table
+#: build/C/man7/vdso.7:157
+#, no-wrap
+msgid "i386\tlinux-gate.so.1\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:85
-msgid ""
-"B<rpmatch>() can fail for any of the reasons that B<regcomp>(3) or "
-"B<regexec>(3) can fail; the cause of the error is not available from "
-"I<errno> or anywhere else, but indicates a failure of the regex engine (but "
-"this case is indistinguishable from that of an unrecognized value of "
-"I<response>)."
+#. type: tbl table
+#: build/C/man7/vdso.7:158
+#, no-wrap
+msgid "x86_64\tlinux-vdso.so.1\n"
msgstr ""
-#. It is available on at least AIX 5.1 and FreeBSD 6.0.
-#. type: Plain text
-#: build/C/man3/rpmatch.3:90
-msgid ""
-"B<rpmatch>() is not required by any standard, but is available on a few "
-"other systems."
+#. type: tbl table
+#: build/C/man7/vdso.7:159
+#, no-wrap
+msgid "x86/x32\tlinux-vdso.so.1\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:102
-msgid ""
-"The B<rpmatch>() implementation looks at only the first character of "
-"I<response>. As a consequence, \"nyes\" returns 0, and \"ynever; not in a "
-"million years\" returns 1. It would be preferable to accept input strings "
-"much more strictly, for example (using the extended regular expression "
-"notation described in B<regex>(7)): B<^([yY]|yes|YES)$> and "
-"B<^([nN]|no|NO)$>."
+#. type: SH
+#: build/C/man7/vdso.7:165
+#, no-wrap
+msgid "ARCHITECTURE-SPECIFIC NOTES"
msgstr ""
#. type: Plain text
-#: build/C/man3/rpmatch.3:106
-msgid ""
-"The following program displays the results when B<rpmatch>() is applied to "
-"the string given in the program's command-line argument."
+#: build/C/man7/vdso.7:168
+msgid "The subsections below provide architecture-specific notes on the vDSO."
msgstr ""
#. type: Plain text
-#: build/C/man3/rpmatch.3:113
-#, no-wrap
+#: build/C/man7/vdso.7:177
msgid ""
-"#define _SVID_SOURCE\n"
-"#include E<lt>locale.hE<gt>\n"
-"#include E<lt>stdlib.hE<gt>\n"
-"#include E<lt>string.hE<gt>\n"
-"#include E<lt>stdio.hE<gt>\n"
+"Note that the vDSO that is used is based on the ABI of your user-space code "
+"and not the ABI of the kernel. Thus, for example, when you run an i386 "
+"32-bit ELF binary, you'll get the same vDSO regardless of whether you run it "
+"under an i386 32-bit kernel or under an x86_64 64-bit kernel. Therefore, "
+"the name of the user-space ABI should be used to determine which of the "
+"sections below is relevant."
msgstr ""
-#. type: Plain text
-#: build/C/man3/rpmatch.3:121
+#. type: SS
+#: build/C/man7/vdso.7:177
#, no-wrap
-msgid ""
-"int\n"
-"main(int argc, char *argv[])\n"
-"{\n"
-" if (argc != 2 || strcmp(argv[1], \"--help\") == 0) {\n"
-" fprintf(stderr, \"%s response\\en\", argv[0]);\n"
-" exit(EXIT_FAILURE);\n"
-" }\n"
+msgid "ARM functions"
msgstr ""
+#. See linux/arch/arm/kernel/entry-armv.S
+#. See linux/Documentation/arm/kernel_user_helpers.txt
#. type: Plain text
-#: build/C/man3/rpmatch.3:126
-#, no-wrap
+#: build/C/man7/vdso.7:184
msgid ""
-" setlocale(LC_ALL, \"\");\n"
-" printf(\"rpmatch() returns: %d\\en\", rpmatch(argv[1]));\n"
-" exit(EXIT_SUCCESS);\n"
-"}\n"
+"The ARM port has a code page full of utility functions. Since it's just a "
+"raw page of code, there is no ELF information for doing symbol lookups or "
+"versioning. It does provide support for different versions though."
msgstr ""
#. type: Plain text
-#: build/C/man3/rpmatch.3:133
+#: build/C/man7/vdso.7:189
msgid ""
-"B<fgets>(3), B<getline>(3), B<nl_langinfo>(3), B<regcomp>(3), "
-"B<setlocale>(3)"
+"For information on this code page, it's best to refer to the kernel "
+"documentation as it's extremely detailed and covers everything you need to "
+"know: I<Documentation/arm/kernel_user_helpers.txt>."
msgstr ""
-#. type: TH
-#: build/C/man3/setenv.3:35
+#. type: SS
+#: build/C/man7/vdso.7:189
#, no-wrap
-msgid "SETENV"
+msgid "aarch64 functions"
msgstr ""
+#. See linux/arch/x86/vdso/vdso32.lds.S
#. type: Plain text
-#: build/C/man3/setenv.3:38
-msgid "setenv - change or add an environment variable"
+#: 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
+msgid "The table below lists the symbols exported by the vDSO."
msgstr ""
-#. type: Plain text
-#: build/C/man3/setenv.3:43
+#. type: tbl table
+#: 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
#, no-wrap
-msgid ""
-"B<int setenv(const char *>I<name>B<, const char *>I<value>B<, int "
-">I<overwrite>B<);>\n"
+msgid "symbol\tversion\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/setenv.3:45
+#. type: tbl table
+#: build/C/man7/vdso.7:199
#, no-wrap
-msgid "B<int unsetenv(const char *>I<name>B<);>\n"
+msgid "__kernel_rt_sigreturn\tLINUX_2.6.39\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/setenv.3:55
-msgid "B<setenv>(), B<unsetenv>():"
+#. type: tbl table
+#: build/C/man7/vdso.7:200
+#, no-wrap
+msgid "__kernel_gettimeofday\tLINUX_2.6.39\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/setenv.3:57
-msgid ""
-"_BSD_SOURCE || _POSIX_C_SOURCE\\ E<gt>=\\ 200112L || _XOPEN_SOURCE\\ "
-"E<gt>=\\ 600"
+#. type: tbl table
+#: build/C/man7/vdso.7:201
+#, no-wrap
+msgid "__kernel_clock_gettime\tLINUX_2.6.39\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/setenv.3:75
-msgid ""
-"The B<setenv>() function adds the variable I<name> to the environment with "
-"the value I<value>, if I<name> does not already exist. If I<name> does "
-"exist in the environment, then its value is changed to I<value> if "
-"I<overwrite> is nonzero; if I<overwrite> is zero, then the value of I<name> "
-"is not changed. This function makes copies of the strings pointed to by "
-"I<name> and I<value> (by contrast with B<putenv>(3))."
+#. type: tbl table
+#: build/C/man7/vdso.7:202
+#, no-wrap
+msgid "__kernel_clock_getres\tLINUX_2.6.39\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/setenv.3:84
-msgid ""
-"The B<unsetenv>() function deletes the variable I<name> from the "
-"environment. If I<name> does not exist in the environment, then the "
-"function succeeds, and the environment is unchanged."
+#. type: SS
+#: build/C/man7/vdso.7:208
+#, no-wrap
+msgid "bfin (Blackfin) functions"
msgstr ""
+#. See linux/arch/blackfin/kernel/fixed_code.S
+#. See http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:fixed-code
#. type: Plain text
-#: build/C/man3/setenv.3:91
+#: build/C/man7/vdso.7:220
msgid ""
-"The B<setenv>() function returns zero on success, or -1 on error, with "
-"I<errno> set to indicate the cause of the error."
+"As this CPU lacks a memory management unit (MMU), it doesn't set up a vDSO "
+"in the normal sense. Instead, it maps at boot time a few raw functions into "
+"a fixed location in memory. User-space applications then call directly into "
+"that region. There is no provision for backward compatibility beyond "
+"sniffing raw opcodes, but as this is an embedded CPU, it can get away with "
+"things\\(emsome of the object formats it runs aren't even ELF based (they're "
+"bFLT/FLAT)."
msgstr ""
#. type: Plain text
-#: build/C/man3/setenv.3:98
+#: build/C/man7/vdso.7:223
msgid ""
-"The B<unsetenv>() function returns zero on success, or -1 on error, with "
-"I<errno> set to indicate the cause of the error."
+"For information on this code page, it's best to refer to the public "
+"documentation:"
msgstr ""
#. type: Plain text
-#: build/C/man3/setenv.3:104
-msgid ""
-"I<name> is NULL, points to a string of length 0, or contains an \\(aq=\\(aq "
-"character."
+#: build/C/man7/vdso.7:225
+msgid "http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:fixed-code"
msgstr ""
-#. type: Plain text
-#: build/C/man3/setenv.3:107
-msgid "Insufficient memory to add a new variable to the environment."
+#. type: SS
+#: build/C/man7/vdso.7:225
+#, no-wrap
+msgid "ia64 (Itanium) functions"
msgstr ""
-#. type: Plain text
-#: build/C/man3/setenv.3:115
-msgid ""
-"POSIX.1-2001 does not require B<setenv>() or B<unsetenv>() to be "
-"reentrant."
+#. type: tbl table
+#: build/C/man7/vdso.7:236
+#, no-wrap
+msgid "__kernel_sigtramp\tLINUX_2.5\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/setenv.3:121
-msgid ""
-"Prior to glibc 2.2.2, B<unsetenv>() was prototyped as returning I<void>; "
-"more recent glibc versions follow the POSIX.1-2001-compliant prototype shown "
-"in the SYNOPSIS."
+#. type: tbl table
+#: build/C/man7/vdso.7:237
+#, no-wrap
+msgid "__kernel_syscall_via_break\tLINUX_2.5\n"
+msgstr ""
+
+#. type: tbl table
+#: build/C/man7/vdso.7:238
+#, no-wrap
+msgid "__kernel_syscall_via_epc\tLINUX_2.5\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/setenv.3:130
+#: build/C/man7/vdso.7:257
msgid ""
-"POSIX.1-2001 specifies that if I<name> contains an \\(aq=\\(aq character, "
-"then B<setenv>() should fail with the error B<EINVAL>; however, versions of "
-"glibc before 2.3.4 allowed an \\(aq=\\(aq sign in I<name>."
+"The Itanium port is somewhat tricky. In addition to the vDSO above, it also "
+"has \"light-weight system calls\" (also known as \"fast syscalls\" or "
+"\"fsys\"). You can invoke these via the I<__kernel_syscall_via_epc> vDSO "
+"helper. The system calls listed here have the same semantics as if you "
+"called them directly via B<syscall>(2), so refer to the relevant "
+"documentation for each. The table below lists the functions available via "
+"this mechanism."
msgstr ""
-#. type: Plain text
-#: build/C/man3/setenv.3:135
-msgid "B<clearenv>(3), B<getenv>(3), B<putenv>(3), B<environ>(7)"
+#. type: tbl table
+#: build/C/man7/vdso.7:262
+#, no-wrap
+msgid "function\n"
msgstr ""
-#. type: TH
-#: build/C/man3/strtod.3:43
+#. type: tbl table
+#: build/C/man7/vdso.7:264
#, no-wrap
-msgid "STRTOD"
+msgid "clock_gettime\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:46
-msgid "strtod, strtof, strtold - convert ASCII string to floating-point number"
+#. type: tbl table
+#: build/C/man7/vdso.7:265
+#, no-wrap
+msgid "getcpu\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:50
-msgid "B<double strtod(const char *>I<nptr>B<, char **>I<endptr>B<);>"
+#. type: tbl table
+#: build/C/man7/vdso.7:266
+#, no-wrap
+msgid "getpid\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:52
-msgid "B<float strtof(const char *>I<nptr>B<, char **>I<endptr>B<);>"
+#. type: tbl table
+#: build/C/man7/vdso.7:267
+#, no-wrap
+msgid "getppid\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:54
-msgid "B<long double strtold(const char *>I<nptr>B<, char **>I<endptr>B<);>"
+#. type: tbl table
+#: build/C/man7/vdso.7:268
+#, no-wrap
+msgid "gettimeofday\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:63
-msgid "B<strtof>(), B<strtold>():"
+#. type: tbl table
+#: build/C/man7/vdso.7:269
+#, no-wrap
+msgid "set_tid_address\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:85
-msgid ""
-"The B<strtod>(), B<strtof>(), and B<strtold>() functions convert the "
-"initial portion of the string pointed to by I<nptr> to I<double>, I<float>, "
-"and I<long double> representation, respectively."
+#. type: SS
+#: build/C/man7/vdso.7:275
+#, no-wrap
+msgid "parisc (hppa) functions"
msgstr ""
+#. See linux/arch/parisc/kernel/syscall.S
+#. See linux/Documentation/parisc/registers
#. type: Plain text
-#: build/C/man3/strtod.3:92
+#: build/C/man7/vdso.7:286
msgid ""
-"The expected form of the (initial portion of the) string is optional leading "
-"white space as recognized by B<isspace>(3), an optional plus (\\(aq+\\(aq) "
-"or minus sign (\\(aq-\\(aq) and then either (i) a decimal number, or (ii) a "
-"hexadecimal number, or (iii) an infinity, or (iv) a NAN (not-a-number)."
+"The parisc port has a code page full of utility functions called a gateway "
+"page. Rather than use the normal ELF auxiliary vector approach, it passes "
+"the address of the page to the process via the SR2 register. The "
+"permissions on the page are such that merely executing those addresses "
+"automatically executes with kernel privileges and not in user space. This "
+"is done to match the way HP-UX works."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtod.3:101
+#: build/C/man7/vdso.7:291
msgid ""
-"A I<decimal number> consists of a nonempty sequence of decimal digits "
-"possibly containing a radix character (decimal point, locale-dependent, "
-"usually \\(aq.\\(aq), optionally followed by a decimal exponent. A decimal "
-"exponent consists of an \\(aqE\\(aq or \\(aqe\\(aq, followed by an optional "
-"plus or minus sign, followed by a nonempty sequence of decimal digits, and "
-"indicates multiplication by a power of 10."
+"Since it's just a raw page of code, there is no ELF information for doing "
+"symbol lookups or versioning. Simply call into the appropriate offset via "
+"the branch instruction, for example:"
msgstr ""
#. type: Plain text
-#: build/C/man3/strtod.3:112
-msgid ""
-"A I<hexadecimal number> consists of a \"0x\" or \"0X\" followed by a "
-"nonempty sequence of hexadecimal digits possibly containing a radix "
-"character, optionally followed by a binary exponent. A binary exponent "
-"consists of a \\(aqP\\(aq or \\(aqp\\(aq, followed by an optional plus or "
-"minus sign, followed by a nonempty sequence of decimal digits, and indicates "
-"multiplication by a power of 2. At least one of radix character and binary "
-"exponent must be present."
+#: build/C/man7/vdso.7:293
+#, no-wrap
+msgid " ble E<lt>offsetE<gt>(%sr2, %r0)\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:116
-msgid "An I<infinity> is either \"INF\" or \"INFINITY\", disregarding case."
+#. type: tbl table
+#: build/C/man7/vdso.7:298
+#, no-wrap
+msgid "offset\tfunction\n"
msgstr ""
-#. From glibc 2.8's stdlib/strtod_l.c:
-#. We expect it to be a number which is put in the
-#. mantissa of the number.
-#. type: Plain text
-#: build/C/man3/strtod.3:126
-msgid ""
-"A I<NAN> is \"NAN\" (disregarding case) optionally followed by \\(aq(\\(aq, "
-"a sequence of characters, followed by \\(aq)\\(aq. The character string "
-"specifies in an implementation-dependent way the type of NAN."
+#. type: tbl table
+#: build/C/man7/vdso.7:300
+#, no-wrap
+msgid "00b0\tlws_entry\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:128
-msgid "These functions return the converted value, if any."
+#. type: tbl table
+#: build/C/man7/vdso.7:301
+#, no-wrap
+msgid "00e0\tset_thread_pointer\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:135
-msgid ""
-"If I<endptr> is not NULL, a pointer to the character after the last "
-"character used in the conversion is stored in the location referenced by "
-"I<endptr>."
+#. type: tbl table
+#: build/C/man7/vdso.7:302
+#, no-wrap
+msgid "0100\tlinux_gateway_entry (syscall)\n"
+msgstr ""
+
+#. type: tbl table
+#: build/C/man7/vdso.7:303
+#, no-wrap
+msgid "0268\tsyscall_nosys\n"
+msgstr ""
+
+#. type: tbl table
+#: build/C/man7/vdso.7:304
+#, no-wrap
+msgid "0274\ttracesys\n"
+msgstr ""
+
+#. type: tbl table
+#: build/C/man7/vdso.7:305
+#, no-wrap
+msgid "0324\ttracesys_next\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:140
-msgid ""
-"If no conversion is performed, zero is returned and the value of I<nptr> is "
-"stored in the location referenced by I<endptr>."
+#. type: tbl table
+#: build/C/man7/vdso.7:306
+#, no-wrap
+msgid "0368\ttracesys_exit\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:154
-msgid ""
-"If the correct value would cause overflow, plus or minus B<HUGE_VAL> "
-"(B<HUGE_VALF>, B<HUGE_VALL>) is returned (according to the sign of the "
-"value), and B<ERANGE> is stored in I<errno>. If the correct value would "
-"cause underflow, zero is returned and B<ERANGE> is stored in I<errno>."
+#. type: tbl table
+#: build/C/man7/vdso.7:307
+#, no-wrap
+msgid "03a0\ttracesys_sigexit\n"
msgstr ""
-#. type: TP
-#: build/C/man3/strtod.3:155 build/C/man3/strtol.3:131 build/C/man3/strtoul.3:134
+#. type: tbl table
+#: build/C/man7/vdso.7:308
#, no-wrap
-msgid "B<ERANGE>"
+msgid "03b8\tlws_start\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:158
-msgid "Overflow or underflow occurred."
+#. type: tbl table
+#: build/C/man7/vdso.7:309
+#, no-wrap
+msgid "03dc\tlws_exit_nosys\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:163
-msgid "C89 describes B<strtod>(), C99 describes the other two functions."
+#. type: tbl table
+#: build/C/man7/vdso.7:310
+#, no-wrap
+msgid "03e0\tlws_exit\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:172
-msgid ""
-"Since 0 can legitimately be returned on both success and failure, the "
-"calling program should set I<errno> to 0 before the call, and then determine "
-"if an error occurred by checking whether I<errno> has a nonzero value after "
-"the call."
+#. type: tbl table
+#: build/C/man7/vdso.7:311
+#, no-wrap
+msgid "03e4\tlws_compare_and_swap64\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:177 build/C/man3/strtoul.3:188
-msgid ""
-"See the example on the B<strtol>(3) manual page; the use of the functions "
-"described in this manual page is similar."
+#. type: tbl table
+#: build/C/man7/vdso.7:312
+#, no-wrap
+msgid "03e8\tlws_compare_and_swap\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtod.3:183
-msgid "B<atof>(3), B<atoi>(3), B<atol>(3), B<strtol>(3), B<strtoul>(3)"
+#. type: tbl table
+#: build/C/man7/vdso.7:313
+#, no-wrap
+msgid "0404\tcas_wouldblock\n"
msgstr ""
-#. type: TH
-#: build/C/man3/strtoimax.3:23
+#. type: tbl table
+#: build/C/man7/vdso.7:314
#, no-wrap
-msgid "STRTOIMAX"
+msgid "0410\tcas_action\n"
msgstr ""
-#. type: TH
-#: build/C/man3/strtoimax.3:23
+#. type: SS
+#: build/C/man7/vdso.7:320
#, no-wrap
-msgid "2003-11-28"
+msgid "ppc/32 functions"
msgstr ""
+#. See linux/arch/powerpc/kernel/vdso32/vdso32.lds.S
#. type: Plain text
-#: build/C/man3/strtoimax.3:26
-msgid "strtoimax, strtoumax - convert string to integer"
+#: build/C/man7/vdso.7:327
+msgid ""
+"The table below lists the symbols exported by the vDSO. The functions "
+"marked with a I<*> are available only when the kernel is a PowerPC64 "
+"(64-bit) kernel."
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtoimax.3:29
+#. type: tbl table
+#: build/C/man7/vdso.7:334 build/C/man7/vdso.7:360
#, no-wrap
-msgid "B<#include E<lt>inttypes.hE<gt>>\n"
+msgid "__kernel_clock_getres\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtoimax.3:31
+#. type: tbl table
+#: build/C/man7/vdso.7:335 build/C/man7/vdso.7:361
#, no-wrap
-msgid ""
-"B<intmax_t strtoimax(const char *>I<nptr>B<, char **>I<endptr>B<, int "
-">I<base>B<);>\n"
+msgid "__kernel_clock_gettime\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtoimax.3:33
+#. type: tbl table
+#: build/C/man7/vdso.7:336 build/C/man7/vdso.7:362
#, no-wrap
-msgid ""
-"B<uintmax_t strtoumax(const char *>I<nptr>B<, char **>I<endptr>B<, int "
-">I<base>B<);>\n"
+msgid "__kernel_datapage_offset\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtoimax.3:44
-msgid ""
-"These functions are just like B<strtol>(3) and B<strtoul>(3), except that "
-"they return a value of type I<intmax_t> and I<uintmax_t>, respectively."
+#. type: tbl table
+#: build/C/man7/vdso.7:337 build/C/man7/vdso.7:363
+#, no-wrap
+msgid "__kernel_get_syscall_map\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtoimax.3:57
-msgid ""
-"On success, the converted value is returned. If nothing was found to "
-"convert, zero is returned. On overflow or underflow B<INTMAX_MAX> or "
-"B<INTMAX_MIN> or B<UINTMAX_MAX> is returned, and I<errno> is set to "
-"B<ERANGE>."
+#. type: tbl table
+#: build/C/man7/vdso.7:338 build/C/man7/vdso.7:364
+#, no-wrap
+msgid "__kernel_get_tbfreq\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtoimax.3:65
-msgid "B<imaxabs>(3), B<imaxdiv>(3), B<strtol>(3), B<strtoul>(3), B<wcstoimax>(3)"
+#. type: tbl table
+#: build/C/man7/vdso.7:339
+#, no-wrap
+msgid "__kernel_getcpu I<*>\tLINUX_2.6.15\n"
msgstr ""
-#. type: TH
-#: build/C/man3/strtol.3:29
+#. type: tbl table
+#: build/C/man7/vdso.7:340 build/C/man7/vdso.7:366
#, no-wrap
-msgid "STRTOL"
+msgid "__kernel_gettimeofday\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:32
-msgid "strtol, strtoll, strtoq - convert a string to a long integer"
+#. type: tbl table
+#: build/C/man7/vdso.7:341
+#, no-wrap
+msgid "__kernel_sigtramp_rt32\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:37
+#. type: tbl table
+#: build/C/man7/vdso.7:342
#, no-wrap
-msgid ""
-"B<long int strtol(const char *>I<nptr>B<, char **>I<endptr>B<, int "
-">I<base>B<);>\n"
+msgid "__kernel_sigtramp32\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:40
+#. type: tbl table
+#: build/C/man7/vdso.7:343 build/C/man7/vdso.7:368
#, no-wrap
-msgid ""
-"B<long long int strtoll(const char *>I<nptr>B<, char **>I<endptr>B<, int "
-">I<base>B<);>\n"
+msgid "__kernel_sync_dicache\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:49
-msgid "B<strtoll>():"
+#. type: tbl table
+#: build/C/man7/vdso.7:344 build/C/man7/vdso.7:369
+#, no-wrap
+msgid "__kernel_sync_dicache_p5\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:52 build/C/man3/strtoul.3:55
-msgid ""
-"XOPEN_SOURCE\\ E<gt>=\\ 600 || _BSD_SOURCE || _SVID_SOURCE || _ISOC99_SOURCE "
-"|| _POSIX_C_SOURCE\\ E<gt>=\\ 200112L;"
+#. type: SS
+#: build/C/man7/vdso.7:350
+#, no-wrap
+msgid "ppc/64 functions"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:63
-msgid ""
-"The B<strtol>() function converts the initial part of the string in I<nptr> "
-"to a long integer value according to the given I<base>, which must be "
-"between 2 and 36 inclusive, or be the special value 0."
+#. type: tbl table
+#: build/C/man7/vdso.7:365
+#, no-wrap
+msgid "__kernel_getcpu\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:72 build/C/man3/strtoul.3:79
-msgid ""
-"The string may begin with an arbitrary amount of white space (as determined "
-"by B<isspace>(3)) followed by a single optional \\(aq+\\(aq or \\(aq-\\(aq "
-"sign. If I<base> is zero or 16, the string may then include a \"0x\" "
-"prefix, and the number will be read in base 16; otherwise, a zero I<base> is "
-"taken as 10 (decimal) unless the next character is \\(aq0\\(aq, in which "
-"case it is taken as 8 (octal)."
+#. type: tbl table
+#: build/C/man7/vdso.7:367
+#, no-wrap
+msgid "__kernel_sigtramp_rt64\tLINUX_2.6.15\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:81
-msgid ""
-"The remainder of the string is converted to a I<long int> value in the "
-"obvious manner, stopping at the first character which is not a valid digit "
-"in the given base. (In bases above 10, the letter \\(aqA\\(aq in either "
-"upper or lower case represents 10, \\(aqB\\(aq represents 11, and so forth, "
-"with \\(aqZ\\(aq representing 35.)"
+#. type: SS
+#: build/C/man7/vdso.7:375
+#, no-wrap
+msgid "s390 functions"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:93
-msgid ""
-"If I<endptr> is not NULL, B<strtol>() stores the address of the first "
-"invalid character in I<*endptr>. If there were no digits at all, "
-"B<strtol>() stores the original value of I<nptr> in I<*endptr> (and returns "
-"0). In particular, if I<*nptr> is not \\(aq\\e0\\(aq but I<**endptr> is "
-"\\(aq\\e0\\(aq on return, the entire string is valid."
+#. type: tbl table
+#: build/C/man7/vdso.7:385 build/C/man7/vdso.7:403
+#, no-wrap
+msgid "__kernel_clock_getres\tLINUX_2.6.29\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:99
-msgid ""
-"The B<strtoll>() function works just like the B<strtol>() function but "
-"returns a long long integer value."
+#. type: tbl table
+#: build/C/man7/vdso.7:386 build/C/man7/vdso.7:404
+#, no-wrap
+msgid "__kernel_clock_gettime\tLINUX_2.6.29\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:124
-msgid ""
-"The B<strtol>() function returns the result of the conversion, unless the "
-"value would underflow or overflow. If an underflow occurs, B<strtol>() "
-"returns B<LONG_MIN>. If an overflow occurs, B<strtol>() returns "
-"B<LONG_MAX>. In both cases, I<errno> is set to B<ERANGE>. Precisely the "
-"same holds for B<strtoll>() (with B<LLONG_MIN> and B<LLONG_MAX> instead of "
-"B<LONG_MIN> and B<LONG_MAX>)."
+#. type: tbl table
+#: build/C/man7/vdso.7:387 build/C/man7/vdso.7:405
+#, no-wrap
+msgid "__kernel_gettimeofday\tLINUX_2.6.29\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:131 build/C/man3/strtoul.3:134
-msgid "(not in C99) The given I<base> contains an unsupported value."
+#. type: SS
+#: build/C/man7/vdso.7:393
+#, no-wrap
+msgid "s390x functions"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:134 build/C/man3/strtoul.3:137
-msgid "The resulting value was out of range."
+#. type: SS
+#: build/C/man7/vdso.7:411
+#, no-wrap
+msgid "sh (SuperH) functions"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:137 build/C/man3/strtoul.3:140
-msgid ""
-"The implementation may also set I<errno> to B<EINVAL> in case no conversion "
-"was performed (no digits seen, and 0 returned)."
+#. type: tbl table
+#: build/C/man7/vdso.7:421
+#, no-wrap
+msgid "__kernel_rt_sigreturn\tLINUX_2.6\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:142
-msgid ""
-"B<strtol>() conforms to SVr4, 4.3BSD, C89, C99 and POSIX.1-2001, and "
-"B<strtoll>() to C99 and POSIX.1-2001."
+#. type: tbl table
+#: build/C/man7/vdso.7:422
+#, no-wrap
+msgid "__kernel_sigreturn\tLINUX_2.6\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:160
-msgid ""
-"Since B<strtol>() can legitimately return 0, B<LONG_MAX>, or B<LONG_MIN> "
-"(B<LLONG_MAX> or B<LLONG_MIN> for B<strtoll>()) on both success and "
-"failure, the calling program should set I<errno> to 0 before the call, and "
-"then determine if an error occurred by checking whether I<errno> has a "
-"nonzero value after the call."
+#. type: tbl table
+#: build/C/man7/vdso.7:423
+#, no-wrap
+msgid "__kernel_vsyscall\tLINUX_2.6\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:164
-msgid ""
-"In locales other than the \"C\" locale, other strings may also be accepted. "
-"(For example, the thousands separator of the current locale may be "
-"supported.)"
+#. type: SS
+#: build/C/man7/vdso.7:429
+#, no-wrap
+msgid "i386 functions"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:166 build/C/man3/strtoul.3:165
-msgid "BSD also has"
+#. type: tbl table
+#: build/C/man7/vdso.7:439
+#, no-wrap
+msgid "__kernel_sigreturn\tLINUX_2.5\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:170
+#. type: tbl table
+#: build/C/man7/vdso.7:440
#, no-wrap
-msgid ""
-"B<quad_t strtoq(const char *>I<nptr>B<, char **>I<endptr>B<, int "
-">I<base>B<);>\n"
+msgid "__kernel_rt_sigreturn\tLINUX_2.5\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:179
-msgid ""
-"with completely analogous definition. Depending on the wordsize of the "
-"current architecture, this may be equivalent to B<strtoll>() or to "
-"B<strtol>()."
+#. type: tbl table
+#: build/C/man7/vdso.7:441
+#, no-wrap
+msgid "__kernel_vsyscall\tLINUX_2.5\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:193
-msgid ""
-"The program shown below demonstrates the use of B<strtol>(). The first "
-"command-line argument specifies a string from which B<strtol>() should "
-"parse a number. The second (optional) argument specifies the base to be "
-"used for the conversion. (This argument is converted to numeric form using "
-"B<atoi>(3), a function that performs no error checking and has a simpler "
-"interface than B<strtol>().) Some examples of the results produced by this "
-"program are the following:"
+#. Added in 7a59ed415f5b57469e22e41fc4188d5399e0b194 and updated
+#. in 37c975545ec63320789962bf307f000f08fabd48.
+#. type: tbl table
+#: build/C/man7/vdso.7:444
+#, no-wrap
+msgid "__vdso_clock_gettime\tLINUX_2.6 (exported since Linux 3.15)\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:209
+#. type: tbl table
+#: build/C/man7/vdso.7:445
#, no-wrap
-msgid ""
-"$B< ./a.out 123>\n"
-"strtol() returned 123\n"
-"$B< ./a.out \\(aq 123\\(aq>\n"
-"strtol() returned 123\n"
-"$B< ./a.out 123abc>\n"
-"strtol() returned 123\n"
-"Further characters after number: abc\n"
-"$B< ./a.out 123abc 55>\n"
-"strtol: Invalid argument\n"
-"$B< ./a.out \\(aq\\(aq>\n"
-"No digits were found\n"
-"$B< ./a.out 4000000000>\n"
-"strtol: Numerical result out of range\n"
+msgid "__vdso_gettimeofday\tLINUX_2.6 (exported since Linux 3.15)\n"
+msgstr ""
+
+#. type: tbl table
+#: build/C/man7/vdso.7:446
+#, no-wrap
+msgid "__vdso_time\tLINUX_2.6 (exported since Linux 3.15)\n"
msgstr ""
#. type: SS
-#: build/C/man3/strtol.3:211
+#: build/C/man7/vdso.7:452
#, no-wrap
-msgid "Program source"
+msgid "x86_64 functions"
msgstr ""
+#. See linux/arch/x86/vdso/vdso.lds.S
#. type: Plain text
-#: build/C/man3/strtol.3:218
-#, no-wrap
+#: build/C/man7/vdso.7:457
msgid ""
-"#include E<lt>stdlib.hE<gt>\n"
-"#include E<lt>limits.hE<gt>\n"
-"#include E<lt>stdio.hE<gt>\n"
-"#include E<lt>errno.hE<gt>\n"
+"The table below lists the symbols exported by the vDSO. All of these "
+"symbols are also available without the \"__vdso_\" prefix, but you should "
+"ignore those and stick to the names below."
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:225
+#. type: tbl table
+#: build/C/man7/vdso.7:464 build/C/man7/vdso.7:483
#, no-wrap
-msgid ""
-"int\n"
-"main(int argc, char *argv[])\n"
-"{\n"
-" int base;\n"
-" char *endptr, *str;\n"
-" long val;\n"
+msgid "__vdso_clock_gettime\tLINUX_2.6\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:230
+#. type: tbl table
+#: build/C/man7/vdso.7:465 build/C/man7/vdso.7:484
#, no-wrap
-msgid ""
-" if (argc E<lt> 2) {\n"
-" fprintf(stderr, \"Usage: %s str [base]\\en\", argv[0]);\n"
-" exit(EXIT_FAILURE);\n"
-" }\n"
+msgid "__vdso_getcpu\tLINUX_2.6\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:233
+#. type: tbl table
+#: build/C/man7/vdso.7:466 build/C/man7/vdso.7:485
#, no-wrap
-msgid ""
-" str = argv[1];\n"
-" base = (argc E<gt> 2) ? atoi(argv[2]) : 10;\n"
+msgid "__vdso_gettimeofday\tLINUX_2.6\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:236
+#. type: tbl table
+#: build/C/man7/vdso.7:467 build/C/man7/vdso.7:486
#, no-wrap
-msgid ""
-" errno = 0; /* To distinguish success/failure after call */\n"
-" val = strtol(str, &endptr, base);\n"
+msgid "__vdso_time\tLINUX_2.6\n"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:238
+#. type: SS
+#: build/C/man7/vdso.7:473
#, no-wrap
-msgid " /* Check for various possible errors */\n"
+msgid "x86/x32 functions"
msgstr ""
-#. type: Plain text
-#: build/C/man3/strtol.3:244
+#. type: SS
+#: build/C/man7/vdso.7:492
#, no-wrap
-msgid ""
-" if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))\n"
-" || (errno != 0 && val == 0)) {\n"
-" perror(\"strtol\");\n"
-" exit(EXIT_FAILURE);\n"
-" }\n"
+msgid "History"
msgstr ""
#. type: Plain text
-#: build/C/man3/strtol.3:249
-#, no-wrap
+#: build/C/man7/vdso.7:499
msgid ""
-" if (endptr == str) {\n"
-" fprintf(stderr, \"No digits were found\\en\");\n"
-" exit(EXIT_FAILURE);\n"
-" }\n"
+"The vDSO was originally just a single function\\(emthe vsyscall. In older "
+"kernels, you might see that name in a process's memory map rather than "
+"\"vdso\". Over time, people realized that this mechanism was a great way to "
+"pass more functionality to user space, so it was reconceived as a vDSO in "
+"the current format."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtol.3:251
-#, no-wrap
-msgid " /* If we got here, strtol() successfully parsed a number */\n"
+#: build/C/man7/vdso.7:503
+msgid "B<syscalls>(2), B<getauxval>(3), B<proc>(5)"
msgstr ""
#. type: Plain text
-#: build/C/man3/strtol.3:253
-#, no-wrap
-msgid " printf(\"strtol() returned %ld\\en\", val);\n"
+#: build/C/man7/vdso.7:505
+msgid "The documents, examples, and source code in the Linux source code tree:"
msgstr ""
#. type: Plain text
-#: build/C/man3/strtol.3:256
+#: build/C/man7/vdso.7:511
#, no-wrap
msgid ""
-" if (*endptr != \\(aq\\e0\\(aq) /* Not necessarily an "
-"error... */\n"
-" printf(\"Further characters after number: %s\\en\", endptr);\n"
+"Documentation/ABI/stable/vdso\n"
+"Documentation/ia64/fsys.txt\n"
+"Documentation/vDSO/* (includes examples of using the vDSO)\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/strtol.3:266
-msgid "B<atof>(3), B<atoi>(3), B<atol>(3), B<strtod>(3), B<strtoul>(3)"
-msgstr ""
-
-#. type: TH
-#: build/C/man3/strtoul.3:31
+#: build/C/man7/vdso.7:513
#, no-wrap
-msgid "STRTOUL"
+msgid "find arch/ -iname '*vdso*' -o -iname '*gate*'\n"
msgstr ""
#. type: TH
-#: build/C/man3/strtoul.3:31
+#: build/C/man3/wcstombs.3:16
#, no-wrap
-msgid "2011-09-15"
+msgid "WCSTOMBS"
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:34
-msgid "strtoul, strtoull, strtouq - convert a string to an unsigned long integer"
+#: build/C/man3/wcstombs.3:19
+msgid "wcstombs - convert a wide-character string to a multibyte string"
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:40
+#: build/C/man3/wcstombs.3:24
#, no-wrap
msgid ""
-"B<unsigned long int strtoul(const char *>I<nptr>B<, char **>I<endptr>B<, int "
-">I<base>B<);>\n"
+"B<size_t wcstombs(char *>I<dest>B<, const wchar_t *>I<src>B<, size_t "
+">I<n>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:43
-#, no-wrap
+#: build/C/man3/wcstombs.3:42
msgid ""
-"B<unsigned long long int strtoull(const char *>I<nptr>B<, char "
-"**>I<endptr>B<,>\n"
-"B< int >I<base>B<);>\n"
+"If I<dest> is not NULL, the B<wcstombs>() function converts the "
+"wide-character string I<src> to a multibyte string starting at I<dest>. At "
+"most I<n> bytes are written to I<dest>. The conversion starts in the "
+"initial state. The conversion can stop for three reasons:"
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:52
-msgid "B<strtoull>():"
+#: build/C/man3/wcstombs.3:48
+msgid ""
+"1. A wide character has been encountered that can not be represented as a "
+"multibyte sequence (according to the current locale). In this case, "
+"I<(size_t)\\ -1> is returned."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:69
+#: build/C/man3/wcstombs.3:53
msgid ""
-"The B<strtoul>() function converts the initial part of the string in "
-"I<nptr> to an I<unsigned long int> value according to the given I<base>, "
-"which must be between 2 and 36 inclusive, or be the special value 0."
+"2. The length limit forces a stop. In this case, the number of bytes "
+"written to I<dest> is returned, but the shift state at this point is lost."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:88
+#: build/C/man3/wcstombs.3:60
msgid ""
-"The remainder of the string is converted to an I<unsigned long int> value in "
-"the obvious manner, stopping at the first character which is not a valid "
-"digit in the given base. (In bases above 10, the letter \\(aqA\\(aq in "
-"either upper or lower case represents 10, \\(aqB\\(aq represents 11, and so "
-"forth, with \\(aqZ\\(aq representing 35.)"
+"3. The wide-character string has been completely converted, including the "
+"terminating null wide character (L\\(aq\\e0\\(aq). In this case, the "
+"conversion ends in the initial state. The number of bytes written to "
+"I<dest>, excluding the terminating null byte (\\(aq\\e0\\(aq), is returned."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:100
+#: build/C/man3/wcstombs.3:66
msgid ""
-"If I<endptr> is not NULL, B<strtoul>() stores the address of the first "
-"invalid character in I<*endptr>. If there were no digits at all, "
-"B<strtoul>() stores the original value of I<nptr> in I<*endptr> (and "
-"returns 0). In particular, if I<*nptr> is not \\(aq\\e0\\(aq but "
-"I<**endptr> is \\(aq\\e0\\(aq on return, the entire string is valid."
+"The programmer must ensure that there is room for at least I<n> bytes at "
+"I<dest>."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:108
+#: build/C/man3/wcstombs.3:74
msgid ""
-"The B<strtoull>() function works just like the B<strtoul>() function but "
-"returns an I<unsigned long long int> value."
+"If I<dest> is NULL, I<n> is ignored, and the conversion proceeds as above, "
+"except that the converted bytes are not written out to memory, and no length "
+"limit exists."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:127
+#: build/C/man3/wcstombs.3:79
msgid ""
-"The B<strtoul>() function returns either the result of the conversion or, "
-"if there was a leading minus sign, the negation of the result of the "
-"conversion represented as an unsigned value, unless the original "
-"(nonnegated) value would overflow; in the latter case, B<strtoul>() returns "
-"B<ULONG_MAX> and sets I<errno> to B<ERANGE>. Precisely the same holds for "
-"B<strtoull>() (with B<ULLONG_MAX> instead of B<ULONG_MAX>)."
+"In order to avoid the case 2 above, the programmer should make sure I<n> is "
+"greater than or equal to I<wcstombs(NULL,src,0)+1>."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:145
+#: build/C/man3/wcstombs.3:89
msgid ""
-"B<strtoul>() conforms to SVr4, C89, C99 and POSIX-2001, and B<strtoull>() "
-"to C99 and POSIX.1-2001."
+"The B<wcstombs>() function returns the number of bytes that make up the "
+"converted part of a multibyte sequence, not including the terminating null "
+"byte. If a wide character was encountered which could not be converted, "
+"I<(size_t)\\ -1> is returned."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:159
+#: build/C/man3/wcstombs.3:98
msgid ""
-"Since B<strtoul>() can legitimately return 0 or B<ULONG_MAX> (B<ULLONG_MAX> "
-"for B<strtoull>()) on both success and failure, the calling program should "
-"set I<errno> to 0 before the call, and then determine if an error occurred "
-"by checking whether I<errno> has a nonzero value after the call."
+"The behavior of B<wcstombs>() depends on the B<LC_CTYPE> category of the "
+"current locale."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:163
+#: build/C/man3/wcstombs.3:103
msgid ""
-"In locales other than the \"C\" locale, other strings may be accepted. (For "
-"example, the thousands separator of the current locale may be supported.)"
+"The function B<wcsrtombs>(3) provides a thread safe interface to the same "
+"functionality."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:169
+#: build/C/man3/wcstombs.3:109
+msgid "B<mblen>(3), B<mbtowc>(3), B<mbstowcs>(3), B<wcsrtombs>(3) B<wctom>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man3/wctomb.3:16
#, no-wrap
-msgid ""
-"B<u_quad_t strtouq(const char *>I<nptr>B<, char **>I<endptr>B<, int "
-">I<base>B<);>\n"
+msgid "WCTOMB"
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:178
-msgid ""
-"with completely analogous definition. Depending on the wordsize of the "
-"current architecture, this may be equivalent to B<strtoull>() or to "
-"B<strtoul>()."
+#: build/C/man3/wctomb.3:19
+msgid "wctomb - convert a wide character to a multibyte sequence"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man3/wctomb.3:24
+#, no-wrap
+msgid "B<int wctomb(char *>I<s>B<, wchar_t >I<wc>B<);>\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:183
+#: build/C/man3/wctomb.3:45
msgid ""
-"Negative values are considered valid input and are silently converted to the "
-"equivalent I<unsigned long int> value."
+"If I<s> is not NULL, the B<wctomb>() function converts the wide character "
+"I<wc> to its multibyte representation and stores it at the beginning of the "
+"character array pointed to by I<s>. It updates the shift state, which is "
+"stored in a static anonymous variable known only to the B<wctomb>() "
+"function, and returns the length of said multibyte representation, that is, "
+"the number of bytes written at I<s>."
msgstr ""
#. type: Plain text
-#: build/C/man3/strtoul.3:194
-msgid "B<atof>(3), B<atoi>(3), B<atol>(3), B<strtod>(3), B<strtol>(3)"
+#: build/C/man3/wctomb.3:51
+msgid ""
+"The programmer must ensure that there is room for at least B<MB_CUR_MAX> "
+"bytes at I<s>."
msgstr ""
-#. type: TH
-#: build/C/man3/system.3:28
-#, no-wrap
-msgid "SYSTEM"
+#. The Dinkumware doc and the Single UNIX specification say this, but
+#. glibc doesn't implement this.
+#. type: Plain text
+#: build/C/man3/wctomb.3:63
+msgid ""
+"If I<s> is NULL, the B<wctomb>() function resets the shift state, known "
+"only to this function, to the initial state, and returns nonzero if the "
+"encoding has nontrivial shift state, or zero if the encoding is stateless."
msgstr ""
-#. type: TH
-#: build/C/man3/system.3:28
-#, no-wrap
-msgid "2010-09-10"
+#. type: Plain text
+#: build/C/man3/wctomb.3:77
+msgid ""
+"If I<s> is not NULL, the B<wctomb>() function returns the number of bytes "
+"that have been written to the byte array at I<s>. If I<wc> can not be "
+"represented as a multibyte sequence (according to the current locale), -1 is "
+"returned."
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:31
-msgid "system - execute a shell command"
+#: build/C/man3/wctomb.3:84
+msgid ""
+"If I<s> is NULL, the B<wctomb>() function returns nonzero if the encoding "
+"has nontrivial shift state, or zero if the encoding is stateless."
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:36
-#, no-wrap
-msgid "B<int system(const char *>I<command>B<);>\n"
+#: build/C/man3/wctomb.3:89
+msgid "The B<wctomb>() function is not thread-safe."
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:52
+#: build/C/man3/wctomb.3:98
msgid ""
-"B<system>() executes a command specified in I<command> by calling B</bin/sh "
-"-c> I<command>, and returns after the command has been completed. During "
-"execution of the command, B<SIGCHLD> will be blocked, and B<SIGINT> and "
-"B<SIGQUIT> will be ignored."
+"The behavior of B<wctomb>() depends on the B<LC_CTYPE> category of the "
+"current locale."
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:67
+#: build/C/man3/wctomb.3:103
msgid ""
-"The value returned is -1 on error (e.g., B<fork>(2) failed), and the return "
-"status of the command otherwise. This latter return status is in the format "
-"specified in B<wait>(2). Thus, the exit code of the command will be "
-"I<WEXITSTATUS(status)>. In case I</bin/sh> could not be executed, the exit "
-"status will be that of a command that does I<exit(127)>."
+"The function B<wcrtomb>(3) provides a better interface to the same "
+"functionality."
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:73
+#: build/C/man3/wctomb.3:110
msgid ""
-"If the value of I<command> is NULL, B<system>() returns nonzero if the "
-"shell is available, and zero if not."
+"B<MB_CUR_MAX>(3), B<mblen>(3), B<mbstowcs>(3), B<mbtowc>(3), B<wcrtomb>(3), "
+"B<wcstombs>(3)"
+msgstr ""
+
+#. type: TH
+#: build/C/man2/getrandom.2:27
+#, no-wrap
+msgid "GETRANDOM"
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:76
-msgid "B<system>() does not affect the wait status of any other children."
+#: build/C/man2/getrandom.2:30
+msgid "getrandom - obtain a series of random bytes"
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:78
-msgid "C89, C99, POSIX.1-2001."
+#: build/C/man2/getrandom.2:32
+msgid "B<#include E<lt>linux/random.hE<gt>>"
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:91
+#: build/C/man2/getrandom.2:34
msgid ""
-"If the B<_XOPEN_SOURCE> feature test macro is defined (before including "
-"I<any> header files), then the macros described in B<wait>(2) "
-"(B<WEXITSTATUS>(), etc.) are made available when including "
-"I<E<lt>stdlib.hE<gt>>."
+"B<int getrandom(void *>I<buf>B<, size_t >I<buflen>B<, unsigned int "
+">I<flags>B<);>"
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:102
+#: build/C/man2/getrandom.2:44
msgid ""
-"As mentioned, B<system>() ignores B<SIGINT> and B<SIGQUIT>. This may make "
-"programs that call it from a loop uninterruptible, unless they take care "
-"themselves to check the exit status of the child. E.g."
+"The B<getrandom>() system call fills the buffer pointed to by I<buf> with "
+"up to I<buflen> random bytes. These bytes can be used to seed user-space "
+"random number generators or for cryptographic purposes."
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:107
-#, no-wrap
+#: build/C/man2/getrandom.2:58
msgid ""
-" while (something) {\n"
-" int ret = system(\"foo\");\n"
+"B<getrandom>() relies on entropy gathered from device drivers and other "
+"sources of environmental noise. Unnecessarily reading large quantities of "
+"data will have a negative impact on other users of the I</dev/random> and "
+"I</dev/urandom> devices. Therefore, B<getrandom>() should not be used for "
+"Monte Carlo simulations or other programs/algorithms which are doing "
+"probabilistic sampling."
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:112
-#, no-wrap
+#: build/C/man2/getrandom.2:80
msgid ""
-" if (WIFSIGNALED(ret) &&\n"
-" (WTERMSIG(ret) == SIGINT || WTERMSIG(ret) == SIGQUIT))\n"
-" break;\n"
-" }\n"
+"By default, B<getrandom>() draws entropy from the I</dev/urandom> pool. "
+"This behavior can be changed via the I<flags> argument. If the "
+"I</dev/urandom> pool has been initialized, reads of up to 256 bytes will "
+"always return as many bytes as requested and will not be interrupted by "
+"signals. No such guarantees apply for larger buffer sizes. For example, if "
+"the call is interrupted by a signal handler, it may return a partially "
+"filled buffer, or fail with the error B<EINTR>. If the pool has not yet "
+"been initialized, then the call blocks, unless B<GRND_RANDOM> is specified "
+"in I<flags>."
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:132
+#: build/C/man2/getrandom.2:85
msgid ""
-"Do not use B<system>() from a program with set-user-ID or set-group-ID "
-"privileges, because strange values for some environment variables might be "
-"used to subvert system integrity. Use the B<exec>(3) family of functions "
-"instead, but not B<execlp>(3) or B<execvp>(3). B<system>() will not, in "
-"fact, work properly from programs with set-user-ID or set-group-ID "
-"privileges on systems on which I</bin/sh> is bash version 2, since bash 2 "
-"drops privileges on startup. (Debian uses a modified bash which does not do "
-"this when invoked as B<sh>.)"
+"The I<flags> argument is a bit mask that can contain zero or more of the "
+"following values ORed together:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/getrandom.2:85
+#, no-wrap
+msgid "B<GRND_RANDOM>"
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:146
+#: build/C/man2/getrandom.2:106
msgid ""
-"In versions of glibc before 2.1.3, the check for the availability of "
-"I</bin/sh> was not actually performed if I<command> was NULL; instead it was "
-"always assumed to be available, and B<system>() always returned 1 in this "
-"case. Since glibc 2.1.3, this check is performed because, even though "
-"POSIX.1-2001 requires a conforming implementation to provide a shell, that "
-"shell may not be available or executable if the calling program has "
-"previously called B<chroot>(2) (which is not specified by POSIX.1-2001)."
+"If this bit is set, then random bytes are drawn from the I</dev/random> pool "
+"instead of the I</dev/urandom> pool. The I</dev/random> pool is limited "
+"based on the entropy that can be obtained from environmental noise. If the "
+"number of available bytes in I</dev/random> is less than requested in "
+"I<buflen>, the call returns just the available random bytes. If no random "
+"bytes are available, the behavior depends on the presence of "
+"B<GRND_NONBLOCK> in the I<flags> argument."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/getrandom.2:106
+#, no-wrap
+msgid "B<GRND_NONBLOCK>"
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:151
+#: build/C/man2/getrandom.2:123
msgid ""
-"It is possible for the shell command to return 127, so that code is not a "
-"sure indication that the B<execve>(2) call failed."
+"By default, when reading from I</dev/random>, B<getrandom>() blocks if no "
+"random bytes are available, and when reading from I</dev/urandom>, it blocks "
+"if the entropy pool has not yet been initialized. If the B<GRND_NONBLOCK> "
+"flag is set, then B<getrandom>() does not block in these cases, but instead "
+"immediately returns -1 with I<errno> set to B<EAGAIN>."
msgstr ""
#. type: Plain text
-#: build/C/man3/system.3:156
-msgid "B<sh>(1), B<signal>(2), B<wait>(2), B<exec>(3)"
+#: build/C/man2/getrandom.2:137
+msgid ""
+"On success, B<getrandom>() returns the number of bytes that were copied to "
+"the buffer I<buf>. This may be less than the number of bytes requested via "
+"I<buflen> if B<GRND_RANDOM> was specified in I<flags> and insufficient "
+"entropy was present in the I</dev/random> pool, or if the system call was "
+"interrupted by a signal."
msgstr ""
-#. type: TH
-#: build/C/man3/wcstombs.3:14
-#, no-wrap
-msgid "WCSTOMBS"
+#. type: Plain text
+#: build/C/man2/getrandom.2:141
+msgid "On error, -1 is returned, and I<errno> is set appropriately."
msgstr ""
-#. type: TH
-#: build/C/man3/wcstombs.3:14
+#. type: Plain text
+#: build/C/man2/getrandom.2:146
+msgid "An invalid flag was specified in I<flags>."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/getrandom.2:146
#, no-wrap
-msgid "2011-10-16"
+msgid "B<EFAULT>"
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:17
-msgid "wcstombs - convert a wide-character string to a multibyte string"
+#: build/C/man2/getrandom.2:151
+msgid "The address referred to by I<buf> is outside the accessible address space."
msgstr ""
-#. type: Plain text
-#: build/C/man3/wcstombs.3:22
+#. type: TP
+#: build/C/man2/getrandom.2:151
#, no-wrap
-msgid ""
-"B<size_t wcstombs(char *>I<dest>B<, const wchar_t *>I<src>B<, size_t "
-">I<n>B<);>\n"
+msgid "B<EAGAIN>"
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:33
+#: build/C/man2/getrandom.2:158
msgid ""
-"If I<dest> is not a NULL pointer, the B<wcstombs>() function converts the "
-"wide-character string I<src> to a multibyte string starting at I<dest>. At "
-"most I<n> bytes are written to I<dest>. The conversion starts in the "
-"initial state. The conversion can stop for three reasons:"
+"The requested entropy was not available, and B<getrandom>() would have "
+"blocked if the B<GRND_NONBLOCK> flag was not set."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/getrandom.2:158
+#, no-wrap
+msgid "B<EINTR>"
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:39
+#: build/C/man2/getrandom.2:168
msgid ""
-"1. A wide character has been encountered that can not be represented as a "
-"multibyte sequence (according to the current locale). In this case "
-"I<(size_t)\\ -1> is returned."
+"The call was interrupted by a signal handler; see the description of how "
+"interrupted B<read>(2) calls on \"slow\" devices are handled with and "
+"without the B<SA_RESTART> flag in the B<signal>(7) man page."
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:43
-msgid ""
-"2. The length limit forces a stop. In this case the number of bytes written "
-"to I<dest> is returned, but the shift state at this point is lost."
+#: build/C/man2/getrandom.2:171
+msgid "B<getrandom>() was introduced in version 3.17 of the Linux kernel."
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:49
-msgid ""
-"3. The wide-character string has been completely converted, including the "
-"terminating null wide character (L\\(aq\\e0\\(aq). In this case the "
-"conversion ends in the initial state. The number of bytes written to "
-"I<dest>, excluding the terminating null byte (\\(aq\\e0\\(aq), is returned."
+#: build/C/man2/getrandom.2:173
+msgid "This system call is Linux-specific."
+msgstr ""
+
+#. type: SS
+#: build/C/man2/getrandom.2:174
+#, no-wrap
+msgid "Maximum number of bytes returned"
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:52
-msgid ""
-"The programmer must ensure that there is room for at least I<n> bytes at "
-"I<dest>."
+#: build/C/man2/getrandom.2:176
+msgid "As of Linux 3.19 the following limits apply:"
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:56
+#: build/C/man2/getrandom.2:184
msgid ""
-"If I<dest> is NULL, I<n> is ignored, and the conversion proceeds as above, "
-"except that the converted bytes are not written out to memory, and that no "
-"length limit exists."
+"When reading from I</dev/urandom>, a maximum of 33554431 bytes is returned "
+"by a single call to B<getrandom>() on a system where I<int> has a size of "
+"32 bits."
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:59
-msgid ""
-"In order to avoid the case 2 above, the programmer should make sure I<n> is "
-"greater or equal to I<wcstombs(NULL,src,0)+1>."
+#: build/C/man2/getrandom.2:188
+msgid "When reading from I</dev/random>, a maximum of 512 bytes is returned."
+msgstr ""
+
+#. type: SS
+#: build/C/man2/getrandom.2:188
+#, no-wrap
+msgid "Initialization of the entropy pool"
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:68
+#: build/C/man2/getrandom.2:194
msgid ""
-"The B<wcstombs>() function returns the number of bytes that make up the "
-"converted part of multibyte sequence, not including the terminating null "
-"byte. If a wide character was encountered which could not be converted, "
-"I<(size_t)\\ -1> is returned."
+"The kernel collects bits of entropy from environment. When a sufficient "
+"number of random bits has been collected, the I</dev/urandom> entropy pool "
+"is considered to be initialized. This state is normally reached early in "
+"the system bootstrap phase."
+msgstr ""
+
+#. type: SS
+#: build/C/man2/getrandom.2:194
+#, no-wrap
+msgid "Interruption by a signal handler"
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:77
+#: build/C/man2/getrandom.2:218
msgid ""
-"The behavior of B<wcstombs>() depends on the B<LC_CTYPE> category of the "
-"current locale."
+"When reading from I</dev/urandom> (B<GRND_RANDOM> is not set), "
+"B<getrandom>() will block until the entropy pool has been initialized "
+"(unless the B<GRND_NONBLOCK> flag was specified). If a request is made to "
+"read a large number (more than 256) of bytes, B<getrandom>() will block "
+"until those bytes have been generated and transferred from kernel memory to "
+"I<buf>. When reading from I</dev/random> (B<GRND_RANDOM> is set), "
+"B<getrandom>() will block until some random bytes become available (unless "
+"the B<GRND_NONBLOCK> flag was specified)."
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:82
+#: build/C/man2/getrandom.2:243
msgid ""
-"The function B<wcsrtombs>(3) provides a thread safe interface to the same "
-"functionality."
+"The behavior when a call to B<getrandom>() that is blocked while reading "
+"from I</dev/urandom> is interrupted by a signal handler depends on the "
+"initialization state of the entropy buffer and on the request size, "
+"I<buflen>. If the entropy is not yet initialized, then the call will fail "
+"with the B<EINTR> error. If the entropy pool has been initialized and the "
+"request size is large (I<buflen>\\ E<gt>\\ 256), the call either succeeds, "
+"returning a partially filled buffer, or fails with the error B<EINTR.> If "
+"the entropy pool has been initialized and the request size is small "
+"(I<buflen>\\ E<lt>=\\ 256), then B<getrandom>() will not fail with "
+"B<EINTR>. Instead, it will return all of the bytes that have been "
+"requested."
msgstr ""
#. type: Plain text
-#: build/C/man3/wcstombs.3:85
-msgid "B<mbstowcs>(3), B<wcsrtombs>(3)"
+#: build/C/man2/getrandom.2:249
+msgid ""
+"When reading from I</dev/random>, blocking requests of any size can be "
+"interrupted by a signal (the call fails with the error B<EINTR>)."
msgstr ""
-#. type: TH
-#: build/C/man3/wctomb.3:14
-#, no-wrap
-msgid "WCTOMB"
+#. type: Plain text
+#: build/C/man2/getrandom.2:257
+msgid ""
+"Calling B<getrandom>() to read I</dev/urandom> for small values (E<lt>=\\ "
+"256) of I<buflen> is the preferred mode of usage."
msgstr ""
#. type: Plain text
-#: build/C/man3/wctomb.3:17
-msgid "wctomb - convert a wide character to a multibyte sequence"
+#: build/C/man2/getrandom.2:264
+msgid ""
+"The special treatment of small values of I<buflen> was designed for "
+"compatibility with OpenBSD's B<getentropy>() system call."
msgstr ""
#. type: Plain text
-#: build/C/man3/wctomb.3:22
+#: build/C/man2/getrandom.2:278
+msgid ""
+"The user of B<getrandom>() I<must> always check the return value, to "
+"determine whether either an error occurred or fewer bytes than requested "
+"were returned. In the case where B<GRND_RANDOM> is not specified and "
+"I<buflen> is less than or equal to 256, a return of fewer bytes than "
+"requested should never happen, but the careful programmer will check for "
+"this anyway!"
+msgstr ""
+
+#. type: SS
+#: build/C/man2/getrandom.2:278
#, no-wrap
-msgid "B<int wctomb(char *>I<s>B<, wchar_t >I<wc>B<);>\n"
+msgid "Choice of random device"
msgstr ""
#. type: Plain text
-#: build/C/man3/wctomb.3:36
+#: build/C/man2/getrandom.2:293
msgid ""
-"If I<s> is not NULL, the B<wctomb>() function converts the wide character "
-"I<wc> to its multibyte representation and stores it at the beginning of the "
-"character array pointed to by I<s>. It updates the shift state, which is "
-"stored in a static anonymous variable only known to the wctomb function, and "
-"returns the length of said multibyte representation, that is, the number of "
-"bytes written at I<s>."
+"Unless you are doing long-term key generation (and perhaps not even then), "
+"you probably shouldn't be using B<GRND_RANDOM.> The cryptographic algorithms "
+"used for I</dev/urandom> are quite conservative, and so should be sufficient "
+"for all purposes. The disadvantage of B<GRND_RANDOM> is that it can block. "
+"Furthermore, dealing with the partially fulfilled B<getrandom>() requests "
+"that can occur when using B<GRND_RANDOM> increases code complexity."
msgstr ""
-#. type: Plain text
-#: build/C/man3/wctomb.3:40
-msgid ""
-"The programmer must ensure that there is room for at least B<MB_CUR_MAX> "
-"bytes at I<s>."
+#. type: SS
+#: build/C/man2/getrandom.2:293
+#, no-wrap
+msgid "Emulating OpenBSD's getentropy()"
msgstr ""
-#. The Dinkumware doc and the Single UNIX specification say this, but
-#. glibc doesn't implement this.
#. type: Plain text
-#: build/C/man3/wctomb.3:50
+#: build/C/man2/getrandom.2:298
msgid ""
-"If I<s> is NULL, the B<wctomb>() function resets the shift state, only "
-"known to this function, to the initial state, and returns nonzero if the "
-"encoding has nontrivial shift state, or zero if the encoding is stateless."
+"The B<getentropy>() system call in OpenBSD can be emulated using the "
+"following function:"
msgstr ""
#. type: Plain text
-#: build/C/man3/wctomb.3:59
+#: build/C/man2/getrandom.2:305
+#, no-wrap
msgid ""
-"If I<s> is not NULL, the B<wctomb>() function returns the number of bytes "
-"that have been written to the byte array at I<s>. If I<wc> can not be "
-"represented as a multibyte sequence (according to the current locale), -1 is "
-"returned."
+"int\n"
+"getentropy(void *buf, size_t buflen)\n"
+"{\n"
+" int ret;\n"
msgstr ""
#. type: Plain text
-#: build/C/man3/wctomb.3:64
+#: build/C/man2/getrandom.2:317
+#, no-wrap
msgid ""
-"If I<s> is NULL, the B<wctomb>() function returns nonzero if the encoding "
-"has nontrivial shift state, or zero if the encoding is stateless."
+" if (buflen E<gt> 256)\n"
+" goto failure;\n"
+" ret = getrandom(buf, buflen, 0);\n"
+" if (ret E<lt> 0)\n"
+" return ret;\n"
+" if (ret == buflen)\n"
+" return 0;\n"
+"failure:\n"
+" errno = EIO;\n"
+" return -1;\n"
+"}\n"
msgstr ""
+#. FIXME patch proposed https://lkml.org/lkml/2014/11/29/16
#. type: Plain text
-#: build/C/man3/wctomb.3:73
-msgid ""
-"The behavior of B<wctomb>() depends on the B<LC_CTYPE> category of the "
-"current locale."
+#: build/C/man2/getrandom.2:322
+msgid "As of Linux 3.19, the following bug exists:"
msgstr ""
#. type: Plain text
-#: build/C/man3/wctomb.3:79
+#: build/C/man2/getrandom.2:326
msgid ""
-"This function is not multithread safe. The function B<wcrtomb>(3) provides "
-"a better interface to the same functionality."
+"Depending on CPU load, B<getrandom>() does not react to interrupts before "
+"reading all bytes requested."
msgstr ""
#. type: Plain text
-#: build/C/man3/wctomb.3:83
-msgid "B<MB_CUR_MAX>(3), B<wcrtomb>(3), B<wcstombs>(3)"
+#: build/C/man2/getrandom.2:330
+msgid "B<random>(4), B<urandom>(4), B<signal>(7)"
msgstr ""