OSDN Git Service

LDP: Update POT and ja.po to LDP v3.78
[linuxjm/LDP_man-pages.git] / po4a / man3 / po / man3.pot
1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5 #
6 #, fuzzy
7 msgid ""
8 msgstr ""
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2015-01-23 22:24+0900\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "Language: \n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18
19 #. type: TH
20 #: build/C/man3/__setfpucw.3:8
21 #, no-wrap
22 msgid "__SETFPUCW"
23 msgstr ""
24
25 #. type: TH
26 #: build/C/man3/__setfpucw.3:8
27 #, no-wrap
28 msgid "2012-12-31"
29 msgstr ""
30
31 #. type: TH
32 #: build/C/man3/__setfpucw.3:8 build/C/man3/queue.3:39
33 #, no-wrap
34 msgid "Linux"
35 msgstr ""
36
37 #. type: TH
38 #: build/C/man3/__setfpucw.3:8 build/C/man3/addseverity.3:9 build/C/man3/argz_add.3:10 build/C/man3/backtrace.3:27 build/C/man3/basename.3:27 build/C/man3/envz_add.3:10 build/C/man3/ftok.3:29 build/C/man3/longjmp.3:27 build/C/man3/offsetof.3:28 build/C/man3/program_invocation_name.3:24 build/C/man3/queue.3:39 build/C/man3/realpath.3:28 build/C/man3/setjmp.3:27 build/C/man3/xcrypt.3:13
39 #, no-wrap
40 msgid "Linux Programmer's Manual"
41 msgstr ""
42
43 #. type: SH
44 #: build/C/man3/__setfpucw.3:9 build/C/man3/addseverity.3:10 build/C/man3/argz_add.3:11 build/C/man3/backtrace.3:28 build/C/man3/basename.3:28 build/C/man3/envz_add.3:11 build/C/man3/ftok.3:30 build/C/man3/longjmp.3:28 build/C/man3/offsetof.3:29 build/C/man3/program_invocation_name.3:25 build/C/man3/queue.3:40 build/C/man3/realpath.3:29 build/C/man3/setjmp.3:28 build/C/man3/xcrypt.3:14
45 #, no-wrap
46 msgid "NAME"
47 msgstr ""
48
49 #. type: Plain text
50 #: build/C/man3/__setfpucw.3:11
51 msgid "__setfpucw - set FPU control word on i386 architecture (obsolete)"
52 msgstr ""
53
54 #. type: SH
55 #: build/C/man3/__setfpucw.3:11 build/C/man3/addseverity.3:12 build/C/man3/argz_add.3:15 build/C/man3/backtrace.3:31 build/C/man3/basename.3:30 build/C/man3/envz_add.3:14 build/C/man3/ftok.3:32 build/C/man3/longjmp.3:30 build/C/man3/offsetof.3:31 build/C/man3/program_invocation_name.3:28 build/C/man3/queue.3:48 build/C/man3/realpath.3:31 build/C/man3/setjmp.3:30 build/C/man3/xcrypt.3:16
56 #, no-wrap
57 msgid "SYNOPSIS"
58 msgstr ""
59
60 #. type: Plain text
61 #: build/C/man3/__setfpucw.3:13
62 msgid "B<#include E<lt>i386/fpu_control.hE<gt>>"
63 msgstr ""
64
65 #. type: Plain text
66 #: build/C/man3/__setfpucw.3:15
67 msgid "B<void __setfpucw(unsigned short >I<control_word>B<);>"
68 msgstr ""
69
70 #. type: SH
71 #: build/C/man3/__setfpucw.3:15 build/C/man3/addseverity.3:27 build/C/man3/argz_add.3:51 build/C/man3/backtrace.3:50 build/C/man3/basename.3:38 build/C/man3/envz_add.3:36 build/C/man3/ftok.3:39 build/C/man3/longjmp.3:46 build/C/man3/offsetof.3:37 build/C/man3/program_invocation_name.3:36 build/C/man3/queue.3:86 build/C/man3/realpath.3:51 build/C/man3/setjmp.3:49 build/C/man3/xcrypt.3:24
72 #, no-wrap
73 msgid "DESCRIPTION"
74 msgstr ""
75
76 #. type: Plain text
77 #: build/C/man3/__setfpucw.3:22
78 msgid ""
79 "B<__setfpucw>()  transfers I<control_word> to the registers of the FPU "
80 "(floating-point unit) on the i386 architecture.  This was used to control "
81 "floating-point precision, rounding and floating-point exceptions."
82 msgstr ""
83
84 #. type: SH
85 #: build/C/man3/__setfpucw.3:22 build/C/man3/addseverity.3:60 build/C/man3/argz_add.3:198 build/C/man3/backtrace.3:143 build/C/man3/basename.3:136 build/C/man3/envz_add.3:118 build/C/man3/ftok.3:75 build/C/man3/longjmp.3:90 build/C/man3/offsetof.3:63 build/C/man3/program_invocation_name.3:56 build/C/man3/queue.3:485 build/C/man3/realpath.3:135 build/C/man3/setjmp.3:88
86 #, no-wrap
87 msgid "CONFORMING TO"
88 msgstr ""
89
90 #. type: Plain text
91 #: build/C/man3/__setfpucw.3:24
92 msgid "This function was a nonstandard GNU extension."
93 msgstr ""
94
95 #. type: SH
96 #: build/C/man3/__setfpucw.3:24 build/C/man3/addseverity.3:67 build/C/man3/backtrace.3:145 build/C/man3/basename.3:138 build/C/man3/ftok.3:77 build/C/man3/longjmp.3:95 build/C/man3/program_invocation_name.3:59 build/C/man3/realpath.3:142 build/C/man3/setjmp.3:93
97 #, no-wrap
98 msgid "NOTES"
99 msgstr ""
100
101 #. type: Plain text
102 #: build/C/man3/__setfpucw.3:43
103 msgid ""
104 "As of glibc 2.1 this function does not exist anymore.  There are new "
105 "functions from C99, with prototypes in I<E<lt>fenv.hE<gt>>, to control FPU "
106 "rounding modes, like B<fegetround>(3), B<fesetround>(3), and the "
107 "floating-point environment, like B<fegetenv>(3), B<feholdexcept>(3), "
108 "B<fesetenv>(3), B<feupdateenv>(3), and FPU exception handling, like "
109 "B<feclearexcept>(3), B<fegetexceptflag>(3), B<feraiseexcept>(3), "
110 "B<fesetexceptflag>(3), and B<fetestexcept>(3)."
111 msgstr ""
112
113 #. type: Plain text
114 #: build/C/man3/__setfpucw.3:51
115 msgid ""
116 "If direct access to the FPU control word is still needed, the B<_FPU_GETCW> "
117 "and B<_FPU_SETCW> macros from I<E<lt>fpu_control.hE<gt>> can be used."
118 msgstr ""
119
120 #. type: SH
121 #: build/C/man3/__setfpucw.3:51 build/C/man3/backtrace.3:167 build/C/man3/basename.3:171 build/C/man3/envz_add.3:121 build/C/man3/offsetof.3:65
122 #, no-wrap
123 msgid "EXAMPLE"
124 msgstr ""
125
126 #. type: Plain text
127 #: build/C/man3/__setfpucw.3:53
128 msgid "B<__setfpucw(0x1372)>"
129 msgstr ""
130
131 #. type: Plain text
132 #: build/C/man3/__setfpucw.3:55
133 msgid "Set FPU control word on the i386 architecture to"
134 msgstr ""
135
136 #. type: Plain text
137 #: build/C/man3/__setfpucw.3:57
138 #, no-wrap
139 msgid "     - extended precision\n"
140 msgstr ""
141
142 #. type: Plain text
143 #: build/C/man3/__setfpucw.3:59
144 #, no-wrap
145 msgid "     - rounding to nearest\n"
146 msgstr ""
147
148 #. type: Plain text
149 #: build/C/man3/__setfpucw.3:61
150 #, no-wrap
151 msgid "     - exceptions on overflow, zero divide and NaN\n"
152 msgstr ""
153
154 #. type: SH
155 #: build/C/man3/__setfpucw.3:61 build/C/man3/addseverity.3:70 build/C/man3/argz_add.3:204 build/C/man3/backtrace.3:251 build/C/man3/basename.3:184 build/C/man3/envz_add.3:143 build/C/man3/ftok.3:106 build/C/man3/longjmp.3:132 build/C/man3/program_invocation_name.3:63 build/C/man3/realpath.3:224 build/C/man3/setjmp.3:141 build/C/man3/xcrypt.3:71
156 #, no-wrap
157 msgid "SEE ALSO"
158 msgstr ""
159
160 #. type: Plain text
161 #: build/C/man3/__setfpucw.3:63
162 msgid "B<feclearexcept>(3)"
163 msgstr ""
164
165 #. type: Plain text
166 #: build/C/man3/__setfpucw.3:65
167 msgid "I<E<lt>fpu_control.hE<gt>>"
168 msgstr ""
169
170 #. type: SH
171 #: build/C/man3/__setfpucw.3:65 build/C/man3/addseverity.3:72 build/C/man3/argz_add.3:206 build/C/man3/backtrace.3:256 build/C/man3/basename.3:187 build/C/man3/envz_add.3:145 build/C/man3/ftok.3:112 build/C/man3/longjmp.3:135 build/C/man3/offsetof.3:103 build/C/man3/program_invocation_name.3:65 build/C/man3/queue.3:491 build/C/man3/realpath.3:231 build/C/man3/setjmp.3:144 build/C/man3/xcrypt.3:73
172 #, no-wrap
173 msgid "COLOPHON"
174 msgstr ""
175
176 #. type: Plain text
177 #: build/C/man3/__setfpucw.3:73 build/C/man3/addseverity.3:80 build/C/man3/argz_add.3:214 build/C/man3/backtrace.3:264 build/C/man3/basename.3:195 build/C/man3/envz_add.3:153 build/C/man3/ftok.3:120 build/C/man3/longjmp.3:143 build/C/man3/offsetof.3:111 build/C/man3/program_invocation_name.3:73 build/C/man3/queue.3:499 build/C/man3/realpath.3:239 build/C/man3/setjmp.3:152 build/C/man3/xcrypt.3:81
178 msgid ""
179 "This page is part of release 3.78 of the Linux I<man-pages> project.  A "
180 "description of the project, information about reporting bugs, and the latest "
181 "version of this page, can be found at "
182 "\\%http://www.kernel.org/doc/man-pages/."
183 msgstr ""
184
185 #. type: TH
186 #: build/C/man3/addseverity.3:9
187 #, no-wrap
188 msgid "ADDSEVERITY"
189 msgstr ""
190
191 #. type: TH
192 #: build/C/man3/addseverity.3:9 build/C/man3/backtrace.3:27
193 #, no-wrap
194 msgid "2008-06-14"
195 msgstr ""
196
197 #. type: TH
198 #: build/C/man3/addseverity.3:9 build/C/man3/backtrace.3:27 build/C/man3/basename.3:27 build/C/man3/ftok.3:29 build/C/man3/offsetof.3:28 build/C/man3/program_invocation_name.3:24
199 #, no-wrap
200 msgid "GNU"
201 msgstr ""
202
203 #. type: Plain text
204 #: build/C/man3/addseverity.3:12
205 msgid "addseverity - introduce new severity classes"
206 msgstr ""
207
208 #. type: Plain text
209 #: build/C/man3/addseverity.3:16
210 #, no-wrap
211 msgid "B<#include E<lt>fmtmsg.hE<gt>>\n"
212 msgstr ""
213
214 #. type: Plain text
215 #: build/C/man3/addseverity.3:18
216 #, no-wrap
217 msgid "B<int addseverity(int >I<severity>B<, const char *>I<s>B<);>\n"
218 msgstr ""
219
220 #. type: Plain text
221 #: build/C/man3/addseverity.3:23 build/C/man3/longjmp.3:42 build/C/man3/realpath.3:42 build/C/man3/setjmp.3:42
222 msgid "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
223 msgstr ""
224
225 #. type: Plain text
226 #: build/C/man3/addseverity.3:27
227 msgid "B<addseverity>(): _SVID_SOURCE"
228 msgstr ""
229
230 #. type: Plain text
231 #: build/C/man3/addseverity.3:49
232 msgid ""
233 "This function allows the introduction of new severity classes which can be "
234 "addressed by the I<severity> argument of the B<fmtmsg>(3)  function.  By "
235 "default that latter function only knows how to print messages for severity "
236 "0-4 (with strings (none), HALT, ERROR, WARNING, INFO).  This call attaches "
237 "the given string I<s> to the given value I<severity>.  If I<s> is NULL, the "
238 "severity class with the numeric value I<severity> is removed.  It is not "
239 "possible to overwrite or remove one of the default severity classes.  The "
240 "severity value must be nonnegative."
241 msgstr ""
242
243 #. type: SH
244 #: build/C/man3/addseverity.3:49 build/C/man3/argz_add.3:192 build/C/man3/backtrace.3:118 build/C/man3/basename.3:121 build/C/man3/envz_add.3:112 build/C/man3/ftok.3:61 build/C/man3/longjmp.3:88 build/C/man3/offsetof.3:56 build/C/man3/realpath.3:91 build/C/man3/setjmp.3:78 build/C/man3/xcrypt.3:61
245 #, no-wrap
246 msgid "RETURN VALUE"
247 msgstr ""
248
249 #. type: Plain text
250 #: build/C/man3/addseverity.3:57
251 msgid ""
252 "Upon success, the value B<MM_OK> is returned.  Upon error, the return value "
253 "is B<MM_NOTOK>.  Possible errors include: out of memory, attempt to remove a "
254 "nonexistent or default severity class."
255 msgstr ""
256
257 #. type: SH
258 #: build/C/man3/addseverity.3:57 build/C/man3/backtrace.3:137 build/C/man3/xcrypt.3:67
259 #, no-wrap
260 msgid "VERSIONS"
261 msgstr ""
262
263 #. type: Plain text
264 #: build/C/man3/addseverity.3:60
265 msgid "B<addseverity>()  is provided in glibc since version 2.1."
266 msgstr ""
267
268 #. type: Plain text
269 #: build/C/man3/addseverity.3:67
270 msgid ""
271 "This function is not specified in the X/Open Portability Guide although the "
272 "B<fmtmsg>(3)  function is.  It is available on System V systems."
273 msgstr ""
274
275 #. type: Plain text
276 #: build/C/man3/addseverity.3:70
277 msgid ""
278 "New severity classes can also be added by setting the environment variable "
279 "B<SEV_LEVEL>."
280 msgstr ""
281
282 #. type: Plain text
283 #: build/C/man3/addseverity.3:72
284 msgid "B<fmtmsg>(3)"
285 msgstr ""
286
287 #. type: TH
288 #: build/C/man3/argz_add.3:10
289 #, no-wrap
290 msgid "ARGZ_ADD"
291 msgstr ""
292
293 #. type: TH
294 #: build/C/man3/argz_add.3:10 build/C/man3/envz_add.3:10
295 #, no-wrap
296 msgid "2014-05-28"
297 msgstr ""
298
299 #. type: Plain text
300 #: build/C/man3/argz_add.3:15
301 msgid ""
302 "argz_add, argz_add_sep, argz_append, argz_count, argz_create, "
303 "argz_create_sep, argz_delete, argz_extract, argz_insert, argz_next, "
304 "argz_replace, argz_stringify - functions to handle an argz list"
305 msgstr ""
306
307 #. type: Plain text
308 #: build/C/man3/argz_add.3:18
309 #, no-wrap
310 msgid "B<#include E<lt>argz.hE<gt>>\n"
311 msgstr ""
312
313 #. type: Plain text
314 #: build/C/man3/argz_add.3:21
315 #, no-wrap
316 msgid ""
317 "B<error_t argz_add(char **>I<argz>B<, size_t *>I<argz_len>B<, const char "
318 "*>I<str>B<);>\n"
319 msgstr ""
320
321 #. type: Plain text
322 #: build/C/man3/argz_add.3:24
323 #, no-wrap
324 msgid ""
325 "B<error_t argz_add_sep(char **>I<argz>B<, size_t *>I<argz_len>B<,>\n"
326 "B<                     const char *>I<str>B<, int >I<delim>B<);>\n"
327 msgstr ""
328
329 #. type: Plain text
330 #: build/C/man3/argz_add.3:27
331 #, no-wrap
332 msgid ""
333 "B<error_t argz_append(char **>I<argz>B<, size_t *>I<argz_len>B<,>\n"
334 "B<                     const char *>I<buf>B<, size_t >I<buf_len>B<);>\n"
335 msgstr ""
336
337 #. type: Plain text
338 #: build/C/man3/argz_add.3:29
339 #, no-wrap
340 msgid "B<size_t argz_count(const char *>I<argz>B<, size_t >I<argz_len>B<);>\n"
341 msgstr ""
342
343 #. type: Plain text
344 #: build/C/man3/argz_add.3:32
345 #, no-wrap
346 msgid ""
347 "B<error_t argz_create(char * const >I<argv>B<[], char **>I<argz>B<,>\n"
348 "B<                     size_t *>I<argz_len>B<);>\n"
349 msgstr ""
350
351 #. type: Plain text
352 #: build/C/man3/argz_add.3:35
353 #, no-wrap
354 msgid ""
355 "B<error_t argz_create_sep(const char *>I<str>B<, int >I<sep>B<, char "
356 "**>I<argz>B<,>\n"
357 "B<                     size_t *>I<argz_len>B<);>\n"
358 msgstr ""
359
360 #. type: Plain text
361 #: build/C/man3/argz_add.3:37
362 #, no-wrap
363 msgid ""
364 "B<void argz_delete(char **>I<argz>B<, size_t *>I<argz_len>B<, char "
365 "*>I<entry>B<);>\n"
366 msgstr ""
367
368 #. type: Plain text
369 #: build/C/man3/argz_add.3:39
370 #, no-wrap
371 msgid ""
372 "B<void argz_extract(const char *>I<argz>B<, size_t >I<argz_len>B<, char  "
373 "**>I<argv>B<);>\n"
374 msgstr ""
375
376 #. type: Plain text
377 #: build/C/man3/argz_add.3:42
378 #, no-wrap
379 msgid ""
380 "B<error_t argz_insert(char **>I<argz>B<, size_t *>I<argz_len>B<, char "
381 "*>I<before>B<,>\n"
382 "B<                     const char *>I<entry>B<);>\n"
383 msgstr ""
384
385 #. type: Plain text
386 #: build/C/man3/argz_add.3:44
387 #, no-wrap
388 msgid ""
389 "B<char *argz_next(const char *>I<argz>B<, size_t >I<argz_len>B<, const char "
390 "*>I<entry>B<);>\n"
391 msgstr ""
392
393 #. type: Plain text
394 #: build/C/man3/argz_add.3:48
395 #, no-wrap
396 msgid ""
397 "B<error_t argz_replace(char **>I<argz>B<, size_t *>I<argz_len>B<, const char "
398 "*>I<str>B<,>\n"
399 "B<                     const char *>I<with>B<, unsigned int "
400 "*>I<replace_count>B<);>\n"
401 msgstr ""
402
403 #. type: Plain text
404 #: build/C/man3/argz_add.3:50
405 #, no-wrap
406 msgid "B<void argz_stringify(char *>I<argz>B<, size_t >I<len>B<, int >I<sep>B<);>\n"
407 msgstr ""
408
409 #. type: Plain text
410 #: build/C/man3/argz_add.3:53 build/C/man3/envz_add.3:38
411 msgid "These functions are glibc-specific."
412 msgstr ""
413
414 #. type: Plain text
415 #: build/C/man3/argz_add.3:58
416 msgid ""
417 "An argz vector is a pointer to a character buffer together with a length.  "
418 "The intended interpretation of the character buffer is an array of strings, "
419 "where the strings are separated by null bytes (\\(aq\\e0\\(aq).  If the "
420 "length is nonzero, the last byte of the buffer must be a null byte."
421 msgstr ""
422
423 #. type: Plain text
424 #: build/C/man3/argz_add.3:67
425 msgid ""
426 "These functions are for handling argz vectors.  The pair (NULL,0) is an argz "
427 "vector, and, conversely, argz vectors of length 0 must have null pointer.  "
428 "Allocation of nonempty argz vectors is done using B<malloc>(3), so that "
429 "B<free>(3)  can be used to dispose of them again."
430 msgstr ""
431
432 #. type: Plain text
433 #: build/C/man3/argz_add.3:77
434 msgid ""
435 "B<argz_add>()  adds the string I<str> at the end of the array I<*argz>, and "
436 "updates I<*argz> and I<*argz_len>."
437 msgstr ""
438
439 #. type: Plain text
440 #: build/C/man3/argz_add.3:85
441 msgid ""
442 "B<argz_add_sep>()  is similar, but splits the string I<str> into substrings "
443 "separated by the delimiter I<delim>.  For example, one might use this on a "
444 "UNIX search path with delimiter \\(aq:\\(aq."
445 msgstr ""
446
447 #. type: Plain text
448 #: build/C/man3/argz_add.3:99
449 msgid ""
450 "B<argz_append>()  appends the argz vector (I<buf>,\\ I<buf_len>)  after "
451 "(I<*argz>,\\ I<*argz_len>)  and updates I<*argz> and I<*argz_len>.  (Thus, "
452 "I<*argz_len> will be increased by I<buf_len>.)"
453 msgstr ""
454
455 #. type: Plain text
456 #: build/C/man3/argz_add.3:104
457 msgid ""
458 "B<argz_count>()  counts the number of strings, that is, the number of null "
459 "bytes (\\(aq\\e0\\(aq), in (I<argz>,\\ I<argz_len>)."
460 msgstr ""
461
462 #. type: Plain text
463 #: build/C/man3/argz_add.3:112
464 msgid ""
465 "B<argz_create>()  converts a UNIX-style argument vector I<argv>, terminated "
466 "by I<(char\\ *)\\ 0>, into an argz vector (I<*argz>,\\ I<*argz_len>)."
467 msgstr ""
468
469 #. type: Plain text
470 #: build/C/man3/argz_add.3:120
471 msgid ""
472 "B<argz_create_sep>()  converts the null-terminated string I<str> into an "
473 "argz vector (I<*argz>,\\ I<*argz_len>)  by breaking it up at every "
474 "occurrence of the separator I<sep>."
475 msgstr ""
476
477 #. type: Plain text
478 #: build/C/man3/argz_add.3:130
479 msgid ""
480 "B<argz_delete>()  removes the substring pointed to by I<entry> from the argz "
481 "vector (I<*argz>,\\ I<*argz_len>)  and updates I<*argz> and I<*argz_len>."
482 msgstr ""
483
484 #. type: Plain text
485 #: build/C/man3/argz_add.3:145
486 msgid ""
487 "B<argz_extract>()  is the opposite of B<argz_create>().  It takes the argz "
488 "vector (I<argz>,\\ I<argz_len>)  and fills the array starting at I<argv> "
489 "with pointers to the substrings, and a final NULL, making a UNIX-style argv "
490 "vector.  The array I<argv> must have room for I<argz_count>(I<argz>, "
491 "I<argz_len>) + 1 pointers."
492 msgstr ""
493
494 #. type: Plain text
495 #: build/C/man3/argz_add.3:164
496 msgid ""
497 "B<argz_insert>()  is the opposite of B<argz_delete>().  It inserts the "
498 "argument I<entry> at position I<before> into the argz vector (I<*argz>,\\ "
499 "I<*argz_len>)  and updates I<*argz> and I<*argz_len>.  If I<before> is NULL, "
500 "then I<entry> will inserted at the end."
501 msgstr ""
502
503 #. type: Plain text
504 #: build/C/man3/argz_add.3:173
505 msgid ""
506 "B<argz_next>()  is a function to step trough the argz vector.  If I<entry> "
507 "is NULL, the first entry is returned.  Otherwise, the entry following is "
508 "returned.  It returns NULL if there is no following entry."
509 msgstr ""
510
511 #. type: Plain text
512 #: build/C/man3/argz_add.3:185
513 msgid ""
514 "B<argz_replace>()  replaces each occurrence of I<str> with I<with>, "
515 "reallocating argz as necessary.  If I<replace_count> is non-NULL, "
516 "I<*replace_count> will be incremented by the number of replacements."
517 msgstr ""
518
519 #. type: Plain text
520 #: build/C/man3/argz_add.3:192
521 msgid ""
522 "B<argz_stringify>()  is the opposite of B<argz_create_sep>().  It transforms "
523 "the argz vector into a normal string by replacing all null bytes "
524 "(\\(aq\\e0\\(aq) except the last by I<sep>."
525 msgstr ""
526
527 #. type: Plain text
528 #: build/C/man3/argz_add.3:198
529 msgid ""
530 "All argz functions that do memory allocation have a return type of "
531 "I<error_t>, and return 0 for success, and B<ENOMEM> if an allocation error "
532 "occurs."
533 msgstr ""
534
535 #. type: Plain text
536 #: build/C/man3/argz_add.3:201 build/C/man3/envz_add.3:121
537 msgid "These functions are a GNU extension.  Handle with care."
538 msgstr ""
539
540 #. type: SH
541 #: build/C/man3/argz_add.3:201 build/C/man3/basename.3:163 build/C/man3/realpath.3:193 build/C/man3/xcrypt.3:69
542 #, no-wrap
543 msgid "BUGS"
544 msgstr ""
545
546 #. type: Plain text
547 #: build/C/man3/argz_add.3:204
548 msgid ""
549 "Argz vectors without a terminating null byte may lead to Segmentation "
550 "Faults."
551 msgstr ""
552
553 #. type: Plain text
554 #: build/C/man3/argz_add.3:206
555 msgid "B<envz_add>(3)"
556 msgstr ""
557
558 #. type: TH
559 #: build/C/man3/backtrace.3:27
560 #, no-wrap
561 msgid "BACKTRACE"
562 msgstr ""
563
564 #. type: Plain text
565 #: build/C/man3/backtrace.3:31
566 msgid ""
567 "backtrace, backtrace_symbols, backtrace_symbols_fd - support for application "
568 "self-debugging"
569 msgstr ""
570
571 #. type: Plain text
572 #: build/C/man3/backtrace.3:33
573 msgid "B<#include E<lt>execinfo.hE<gt>>"
574 msgstr ""
575
576 #. type: Plain text
577 #: build/C/man3/backtrace.3:38
578 msgid "B<int backtrace(void> B<**>I<buffer>B<,> B<int> I<size>B<);>"
579 msgstr ""
580
581 #. type: Plain text
582 #: build/C/man3/backtrace.3:43
583 msgid ""
584 "B<char **backtrace_symbols(void *const> B<*>I<buffer>B<,> B<int> "
585 "I<size>B<);>"
586 msgstr ""
587
588 #. type: Plain text
589 #: build/C/man3/backtrace.3:50
590 msgid ""
591 "B<void backtrace_symbols_fd(void *const> B<*>I<buffer>B<,> B<int> "
592 "I<size>B<,> B<int> I<fd>B<);>"
593 msgstr ""
594
595 #. type: Plain text
596 #: build/C/man3/backtrace.3:78
597 msgid ""
598 "B<backtrace>()  returns a backtrace for the calling program, in the array "
599 "pointed to by I<buffer>.  A backtrace is the series of currently active "
600 "function calls for the program.  Each item in the array pointed to by "
601 "I<buffer> is of type I<void\\ *>, and is the return address from the "
602 "corresponding stack frame.  The I<size> argument specifies the maximum "
603 "number of addresses that can be stored in I<buffer>.  If the backtrace is "
604 "larger than I<size>, then the addresses corresponding to the I<size> most "
605 "recent function calls are returned; to obtain the complete backtrace, make "
606 "sure that I<buffer> and I<size> are large enough."
607 msgstr ""
608
609 #. type: Plain text
610 #: build/C/man3/backtrace.3:103
611 msgid ""
612 "Given the set of addresses returned by B<backtrace>()  in I<buffer>, "
613 "B<backtrace_symbols>()  translates the addresses into an array of strings "
614 "that describe the addresses symbolically.  The I<size> argument specifies "
615 "the number of addresses in I<buffer>.  The symbolic representation of each "
616 "address consists of the function name (if this can be determined), a "
617 "hexadecimal offset into the function, and the actual return address (in "
618 "hexadecimal).  The address of the array of string pointers is returned as "
619 "the function result of B<backtrace_symbols>().  This array is B<malloc>(3)ed "
620 "by B<backtrace_symbols>(), and must be freed by the caller.  (The strings "
621 "pointed to by the array of pointers need not and should not be freed.)"
622 msgstr ""
623
624 #. type: Plain text
625 #: build/C/man3/backtrace.3:118
626 msgid ""
627 "B<backtrace_symbols_fd>()  takes the same I<buffer> and I<size> arguments as "
628 "B<backtrace_symbols>(), but instead of returning an array of strings to the "
629 "caller, it writes the strings, one per line, to the file descriptor I<fd>.  "
630 "B<backtrace_symbols_fd>()  does not call B<malloc>(3), and so can be "
631 "employed in situations where the latter function might fail."
632 msgstr ""
633
634 #. type: Plain text
635 #: build/C/man3/backtrace.3:130
636 msgid ""
637 "B<backtrace>()  returns the number of addresses returned in I<buffer>, which "
638 "is not greater than I<size>.  If the return value is less than I<size>, then "
639 "the full backtrace was stored; if it is equal to I<size>, then it may have "
640 "been truncated, in which case the addresses of the oldest stack frames are "
641 "not returned."
642 msgstr ""
643
644 #. type: Plain text
645 #: build/C/man3/backtrace.3:137
646 msgid ""
647 "On success, B<backtrace_symbols>()  returns a pointer to the array "
648 "B<malloc>(3)ed by the call; on error, NULL is returned."
649 msgstr ""
650
651 #. type: Plain text
652 #: build/C/man3/backtrace.3:143
653 msgid ""
654 "B<backtrace>(), B<backtrace_symbols>(), and B<backtrace_symbols_fd>()  are "
655 "provided in glibc since version 2.1."
656 msgstr ""
657
658 #. type: Plain text
659 #: build/C/man3/backtrace.3:145
660 msgid "These functions are GNU extensions."
661 msgstr ""
662
663 #. type: Plain text
664 #: build/C/man3/backtrace.3:149
665 msgid ""
666 "These functions make some assumptions about how a function's return address "
667 "is stored on the stack.  Note the following:"
668 msgstr ""
669
670 #. type: IP
671 #: build/C/man3/backtrace.3:149 build/C/man3/backtrace.3:155 build/C/man3/backtrace.3:157 build/C/man3/queue.3:93 build/C/man3/queue.3:95 build/C/man3/queue.3:97 build/C/man3/queue.3:99 build/C/man3/queue.3:109 build/C/man3/queue.3:131 build/C/man3/queue.3:133 build/C/man3/queue.3:135
672 #, no-wrap
673 msgid "*"
674 msgstr ""
675
676 #. type: Plain text
677 #: build/C/man3/backtrace.3:155
678 msgid ""
679 "Omission of the frame pointers (as implied by any of B<gcc>(1)'s nonzero "
680 "optimization levels) may cause these assumptions to be violated."
681 msgstr ""
682
683 #. type: Plain text
684 #: build/C/man3/backtrace.3:157
685 msgid "Inlined functions do not have stack frames."
686 msgstr ""
687
688 #. type: Plain text
689 #: build/C/man3/backtrace.3:159
690 msgid "Tail-call optimization causes one stack frame to replace another."
691 msgstr ""
692
693 #. type: Plain text
694 #: build/C/man3/backtrace.3:167
695 msgid ""
696 "The symbol names may be unavailable without the use of special linker "
697 "options.  For systems using the GNU linker, it is necessary to use the "
698 "I<-rdynamic> linker option.  Note that names of \"static\" functions are not "
699 "exposed, and won't be available in the backtrace."
700 msgstr ""
701
702 #. type: Plain text
703 #: build/C/man3/backtrace.3:174
704 msgid ""
705 "The program below demonstrates the use of B<backtrace>()  and "
706 "B<backtrace_symbols>().  The following shell session shows what we might see "
707 "when running the program:"
708 msgstr ""
709
710 #. type: Plain text
711 #: build/C/man3/backtrace.3:188
712 #, no-wrap
713 msgid ""
714 "$B< cc -rdynamic prog.c -o prog>\n"
715 "$B< ./prog 3>\n"
716 "backtrace() returned 8 addresses\n"
717 "\\&./prog(myfunc3+0x5c) [0x80487f0]\n"
718 "\\&./prog [0x8048871]\n"
719 "\\&./prog(myfunc+0x21) [0x8048894]\n"
720 "\\&./prog(myfunc+0x1a) [0x804888d]\n"
721 "\\&./prog(myfunc+0x1a) [0x804888d]\n"
722 "\\&./prog(main+0x65) [0x80488fb]\n"
723 "\\&/lib/libc.so.6(__libc_start_main+0xdc) [0xb7e38f9c]\n"
724 "\\&./prog [0x8048711]\n"
725 msgstr ""
726
727 #. type: SS
728 #: build/C/man3/backtrace.3:190 build/C/man3/offsetof.3:76
729 #, no-wrap
730 msgid "Program source"
731 msgstr ""
732
733 #. type: Plain text
734 #: build/C/man3/backtrace.3:197
735 #, no-wrap
736 msgid ""
737 "#include E<lt>execinfo.hE<gt>\n"
738 "#include E<lt>stdio.hE<gt>\n"
739 "#include E<lt>stdlib.hE<gt>\n"
740 "#include E<lt>unistd.hE<gt>\n"
741 msgstr ""
742
743 #. type: Plain text
744 #: build/C/man3/backtrace.3:205
745 #, no-wrap
746 msgid ""
747 "void\n"
748 "myfunc3(void)\n"
749 "{\n"
750 "    int j, nptrs;\n"
751 "#define SIZE 100\n"
752 "    void *buffer[100];\n"
753 "    char **strings;\n"
754 msgstr ""
755
756 #. type: Plain text
757 #: build/C/man3/backtrace.3:208
758 #, no-wrap
759 msgid ""
760 "    nptrs = backtrace(buffer, SIZE);\n"
761 "    printf(\"backtrace() returned %d addresses\\en\", nptrs);\n"
762 msgstr ""
763
764 #. type: Plain text
765 #: build/C/man3/backtrace.3:211
766 #, no-wrap
767 msgid ""
768 "    /* The call backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO)\n"
769 "       would produce similar output to the following: */\n"
770 msgstr ""
771
772 #. type: Plain text
773 #: build/C/man3/backtrace.3:217
774 #, no-wrap
775 msgid ""
776 "    strings = backtrace_symbols(buffer, nptrs);\n"
777 "    if (strings == NULL) {\n"
778 "        perror(\"backtrace_symbols\");\n"
779 "        exit(EXIT_FAILURE);\n"
780 "    }\n"
781 msgstr ""
782
783 #. type: Plain text
784 #: build/C/man3/backtrace.3:220
785 #, no-wrap
786 msgid ""
787 "    for (j = 0; j E<lt> nptrs; j++)\n"
788 "        printf(\"%s\\en\", strings[j]);\n"
789 msgstr ""
790
791 #. type: Plain text
792 #: build/C/man3/backtrace.3:223
793 #, no-wrap
794 msgid ""
795 "    free(strings);\n"
796 "}\n"
797 msgstr ""
798
799 #. type: Plain text
800 #: build/C/man3/backtrace.3:229
801 #, no-wrap
802 msgid ""
803 "static void   /* \"static\" means don\\(aqt export the symbol... */\n"
804 "myfunc2(void)\n"
805 "{\n"
806 "    myfunc3();\n"
807 "}\n"
808 msgstr ""
809
810 #. type: Plain text
811 #: build/C/man3/backtrace.3:238
812 #, no-wrap
813 msgid ""
814 "void\n"
815 "myfunc(int ncalls)\n"
816 "{\n"
817 "    if (ncalls E<gt> 1)\n"
818 "        myfunc(ncalls - 1);\n"
819 "    else\n"
820 "        myfunc2();\n"
821 "}\n"
822 msgstr ""
823
824 #. type: Plain text
825 #: build/C/man3/backtrace.3:246
826 #, no-wrap
827 msgid ""
828 "int\n"
829 "main(int argc, char *argv[])\n"
830 "{\n"
831 "    if (argc != 2) {\n"
832 "        fprintf(stderr, \"%s num-calls\\en\", argv[0]);\n"
833 "        exit(EXIT_FAILURE);\n"
834 "    }\n"
835 msgstr ""
836
837 #. type: Plain text
838 #: build/C/man3/backtrace.3:250
839 #, no-wrap
840 msgid ""
841 "    myfunc(atoi(argv[1]));\n"
842 "    exit(EXIT_SUCCESS);\n"
843 "}\n"
844 msgstr ""
845
846 #. type: Plain text
847 #: build/C/man3/backtrace.3:256
848 msgid "B<gcc>(1), B<ld>(1), B<dlopen>(3), B<malloc>(3)"
849 msgstr ""
850
851 #. type: TH
852 #: build/C/man3/basename.3:27
853 #, no-wrap
854 msgid "BASENAME"
855 msgstr ""
856
857 #. type: TH
858 #: build/C/man3/basename.3:27
859 #, no-wrap
860 msgid "2014-06-13"
861 msgstr ""
862
863 #. type: Plain text
864 #: build/C/man3/basename.3:30
865 msgid "basename, dirname - parse pathname components"
866 msgstr ""
867
868 #. type: Plain text
869 #: build/C/man3/basename.3:33
870 #, no-wrap
871 msgid "B<#include E<lt>libgen.hE<gt>>\n"
872 msgstr ""
873
874 #. type: Plain text
875 #: build/C/man3/basename.3:35
876 #, no-wrap
877 msgid "B<char *dirname(char *>I<path>B<);>\n"
878 msgstr ""
879
880 #. type: Plain text
881 #: build/C/man3/basename.3:37
882 #, no-wrap
883 msgid "B<char *basename(char *>I<path>B<);>\n"
884 msgstr ""
885
886 #. type: Plain text
887 #: build/C/man3/basename.3:42
888 msgid "Warning: there are two different functions B<basename>()  - see below."
889 msgstr ""
890
891 #. type: Plain text
892 #: build/C/man3/basename.3:55
893 msgid ""
894 "The functions B<dirname>()  and B<basename>()  break a null-terminated "
895 "pathname string into directory and filename components.  In the usual case, "
896 "B<dirname>()  returns the string up to, but not including, the final "
897 "\\(aq/\\(aq, and B<basename>()  returns the component following the final "
898 "\\(aq/\\(aq.  Trailing \\(aq/\\(aq characters are not counted as part of the "
899 "pathname."
900 msgstr ""
901
902 #. type: Plain text
903 #: build/C/man3/basename.3:78
904 msgid ""
905 "If I<path> does not contain a slash, B<dirname>()  returns the string \".\" "
906 "while B<basename>()  returns a copy of I<path>.  If I<path> is the string "
907 "\"/\", then both B<dirname>()  and B<basename>()  return the string \"/\".  "
908 "If I<path> is a null pointer or points to an empty string, then both "
909 "B<dirname>()  and B<basename>()  return the string \".\"."
910 msgstr ""
911
912 #. type: Plain text
913 #: build/C/man3/basename.3:84
914 msgid ""
915 "Concatenating the string returned by B<dirname>(), a \"/\", and the string "
916 "returned by B<basename>()  yields a complete pathname."
917 msgstr ""
918
919 #. type: Plain text
920 #: build/C/man3/basename.3:93
921 msgid ""
922 "Both B<dirname>()  and B<basename>()  may modify the contents of I<path>, so "
923 "it may be desirable to pass a copy when calling one of these functions."
924 msgstr ""
925
926 #. type: Plain text
927 #: build/C/man3/basename.3:102
928 msgid ""
929 "These functions may return pointers to statically allocated memory which may "
930 "be overwritten by subsequent calls.  Alternatively, they may return a "
931 "pointer to some part of I<path>, so that the string referred to by I<path> "
932 "should not be modified or freed until the pointer returned by the function "
933 "is no longer required."
934 msgstr ""
935
936 #. type: Plain text
937 #: build/C/man3/basename.3:109
938 msgid ""
939 "The following list of examples (taken from SUSv2)  shows the strings "
940 "returned by B<dirname>()  and B<basename>()  for different paths:"
941 msgstr ""
942
943 #. type: tbl table
944 #: build/C/man3/basename.3:113
945 #, no-wrap
946 msgid "path    \tdirname\tbasename\n"
947 msgstr ""
948
949 #. type: tbl table
950 #: build/C/man3/basename.3:114
951 #, no-wrap
952 msgid "/usr/lib\t/usr\tlib\n"
953 msgstr ""
954
955 #. type: tbl table
956 #: build/C/man3/basename.3:115
957 #, no-wrap
958 msgid "/usr/   \t/\tusr\n"
959 msgstr ""
960
961 #. type: tbl table
962 #: build/C/man3/basename.3:116
963 #, no-wrap
964 msgid "usr     \t.\tusr\n"
965 msgstr ""
966
967 #. type: tbl table
968 #: build/C/man3/basename.3:117
969 #, no-wrap
970 msgid "/       \t/\t/\n"
971 msgstr ""
972
973 #. type: tbl table
974 #: build/C/man3/basename.3:118
975 #, no-wrap
976 msgid "\\&.       \t.\t.\n"
977 msgstr ""
978
979 #. type: tbl table
980 #: build/C/man3/basename.3:119
981 #, no-wrap
982 msgid "\\&..      \t.\t..\n"
983 msgstr ""
984
985 #. type: Plain text
986 #: build/C/man3/basename.3:129
987 msgid ""
988 "Both B<dirname>()  and B<basename>()  return pointers to null-terminated "
989 "strings.  (Do not pass these pointers to B<free>(3).)"
990 msgstr ""
991
992 #. type: SH
993 #: build/C/man3/basename.3:129 build/C/man3/ftok.3:70
994 #, no-wrap
995 msgid "ATTRIBUTES"
996 msgstr ""
997
998 #. type: SS
999 #: build/C/man3/basename.3:130 build/C/man3/ftok.3:71
1000 #, no-wrap
1001 msgid "Multithreading (see pthreads(7))"
1002 msgstr ""
1003
1004 #. type: Plain text
1005 #: build/C/man3/basename.3:136
1006 msgid "The B<basename>()  and B<dirname>()  functions are thread-safe."
1007 msgstr ""
1008
1009 #. type: Plain text
1010 #: build/C/man3/basename.3:138 build/C/man3/ftok.3:77
1011 msgid "POSIX.1-2001."
1012 msgstr ""
1013
1014 #. type: Plain text
1015 #: build/C/man3/basename.3:143
1016 msgid ""
1017 "There are two different versions of B<basename>()  - the POSIX version "
1018 "described above, and the GNU version, which one gets after"
1019 msgstr ""
1020
1021 #. type: Plain text
1022 #: build/C/man3/basename.3:147
1023 #, no-wrap
1024 msgid "B<    #define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
1025 msgstr ""
1026
1027 #. type: Plain text
1028 #: build/C/man3/basename.3:149
1029 #, no-wrap
1030 msgid "B<#include E<lt>string.hE<gt>>\n"
1031 msgstr ""
1032
1033 #. type: Plain text
1034 #: build/C/man3/basename.3:157
1035 msgid ""
1036 "The GNU version never modifies its argument, and returns the empty string "
1037 "when I<path> has a trailing slash, and in particular also when it is \"/\".  "
1038 "There is no GNU version of B<dirname>()."
1039 msgstr ""
1040
1041 #. type: Plain text
1042 #: build/C/man3/basename.3:163
1043 msgid ""
1044 "With glibc, one gets the POSIX version of B<basename>()  when "
1045 "I<E<lt>libgen.hE<gt>> is included, and the GNU version otherwise."
1046 msgstr ""
1047
1048 #. type: Plain text
1049 #: build/C/man3/basename.3:171
1050 msgid ""
1051 "In the glibc implementation of the POSIX versions of these functions they "
1052 "modify their argument, and segfault when called with a static string like "
1053 "\"/usr/\".  Before glibc 2.2.1, the glibc version of B<dirname>()  did not "
1054 "correctly handle pathnames with trailing \\(aq/\\(aq characters, and "
1055 "generated a segfault if given a NULL argument."
1056 msgstr ""
1057
1058 #. type: Plain text
1059 #: build/C/man3/basename.3:176
1060 #, no-wrap
1061 msgid ""
1062 "char *dirc, *basec, *bname, *dname;\n"
1063 "char *path = \"/etc/passwd\";\n"
1064 msgstr ""
1065
1066 #. type: Plain text
1067 #: build/C/man3/basename.3:182
1068 #, no-wrap
1069 msgid ""
1070 "dirc = strdup(path);\n"
1071 "basec = strdup(path);\n"
1072 "dname = dirname(dirc);\n"
1073 "bname = basename(basec);\n"
1074 "printf(\"dirname=%s, basename=%s\\en\", dname, bname);\n"
1075 msgstr ""
1076
1077 #. type: Plain text
1078 #: build/C/man3/basename.3:187
1079 msgid "B<basename>(1), B<dirname>(1)"
1080 msgstr ""
1081
1082 #. type: TH
1083 #: build/C/man3/envz_add.3:10
1084 #, no-wrap
1085 msgid "ENVZ_ADD"
1086 msgstr ""
1087
1088 #. type: Plain text
1089 #: build/C/man3/envz_add.3:14
1090 msgid ""
1091 "envz_add, envz_entry, envz_get, envz_merge, envz_remove, envz_strip - "
1092 "environment string support"
1093 msgstr ""
1094
1095 #. type: Plain text
1096 #: build/C/man3/envz_add.3:17
1097 #, no-wrap
1098 msgid "B<#include E<lt>envz.hE<gt>>\n"
1099 msgstr ""
1100
1101 #. type: Plain text
1102 #: build/C/man3/envz_add.3:20
1103 #, no-wrap
1104 msgid ""
1105 "B<error_t envz_add(char **>I<envz>B<, size_t *>I<envz_len>B<,>\n"
1106 "B<                 const char *>I<name>B<, const char *>I<value>B<);>\n"
1107 msgstr ""
1108
1109 #. type: Plain text
1110 #: build/C/man3/envz_add.3:23
1111 #, no-wrap
1112 msgid ""
1113 "B<char *envz_entry(const char *>I<envz>B<, size_t >I<envz_len>B<, const char "
1114 "*>I<name>B<);>\n"
1115 msgstr ""
1116
1117 #. type: Plain text
1118 #: build/C/man3/envz_add.3:26
1119 #, no-wrap
1120 msgid ""
1121 "B<char *envz_get(const char *>I<envz>B<, size_t >I<envz_len>B<, const char "
1122 "*>I<name>B<);>\n"
1123 msgstr ""
1124
1125 #. type: Plain text
1126 #: build/C/man3/envz_add.3:30
1127 #, no-wrap
1128 msgid ""
1129 "B<error_t envz_merge(char **>I<envz>B<, size_t *>I<envz_len>B<,>\n"
1130 "B<                   const char *>I<envz2>B<, size_t >I<envz2_len>B<, int "
1131 ">I<override>B<);>\n"
1132 msgstr ""
1133
1134 #. type: Plain text
1135 #: build/C/man3/envz_add.3:33
1136 #, no-wrap
1137 msgid ""
1138 "B<void envz_remove(char **>I<envz>B<, size_t *>I<envz_len>B<, const char "
1139 "*>I<name>B<);>\n"
1140 msgstr ""
1141
1142 #. type: Plain text
1143 #: build/C/man3/envz_add.3:35
1144 #, no-wrap
1145 msgid "B<void envz_strip(char **>I<envz>B<, size_t *>I<envz_len>B<);>\n"
1146 msgstr ""
1147
1148 #. type: Plain text
1149 #: build/C/man3/envz_add.3:48
1150 msgid ""
1151 "An argz vector is a pointer to a character buffer together with a length, "
1152 "see B<argz_add>(3).  An envz vector is a special argz vector, namely one "
1153 "where the strings have the form \"name=value\".  Everything after the first "
1154 "\\(aq=\\(aq is considered to be the value.  If there is no \\(aq=\\(aq, the "
1155 "value is taken to be NULL.  (While the value in case of a trailing "
1156 "\\(aq=\\(aq is the empty string \"\".)"
1157 msgstr ""
1158
1159 #. type: Plain text
1160 #: build/C/man3/envz_add.3:50
1161 msgid "These functions are for handling envz vectors."
1162 msgstr ""
1163
1164 #. type: Plain text
1165 #: build/C/man3/envz_add.3:69
1166 msgid ""
1167 "B<envz_add>()  adds the string \"I<name>=I<value>\" (in case I<value> is "
1168 "non-NULL) or \"I<name>\" (in case I<value> is NULL) to the envz vector "
1169 "(I<*envz>,\\ I<*envz_len>)  and updates I<*envz> and I<*envz_len>.  If an "
1170 "entry with the same I<name> existed, it is removed."
1171 msgstr ""
1172
1173 #. type: Plain text
1174 #: build/C/man3/envz_add.3:76
1175 msgid ""
1176 "B<envz_entry>()  looks for I<name> in the envz vector (I<envz>,\\ "
1177 "I<envz_len>)  and returns the entry if found, or NULL if not."
1178 msgstr ""
1179
1180 #. type: Plain text
1181 #: build/C/man3/envz_add.3:87
1182 msgid ""
1183 "B<envz_get>()  looks for I<name> in the envz vector (I<envz>,\\ I<envz_len>)  "
1184 "and returns the value if found, or NULL if not.  (Note that the value can "
1185 "also be NULL, namely when there is an entry for I<name> without \\(aq=\\(aq "
1186 "sign.)"
1187 msgstr ""
1188
1189 #. type: Plain text
1190 #: build/C/man3/envz_add.3:102
1191 msgid ""
1192 "B<envz_merge>()  adds each entry in I<envz2> to I<*envz>, as if with "
1193 "B<envz_add>().  If I<override> is true, then values in I<envz2> will "
1194 "supersede those with the same name in I<*envz>, otherwise not."
1195 msgstr ""
1196
1197 #. type: Plain text
1198 #: build/C/man3/envz_add.3:109
1199 msgid ""
1200 "B<envz_remove>()  removes the entry for I<name> from (I<*envz>,\\ "
1201 "I<*envz_len>)  if there was one."
1202 msgstr ""
1203
1204 #. type: Plain text
1205 #: build/C/man3/envz_add.3:112
1206 msgid "B<envz_strip>()  removes all entries with value NULL."
1207 msgstr ""
1208
1209 #. type: Plain text
1210 #: build/C/man3/envz_add.3:118
1211 msgid ""
1212 "All envz functions that do memory allocation have a return type of "
1213 "I<error_t>, and return 0 for success, and B<ENOMEM> if an allocation error "
1214 "occurs."
1215 msgstr ""
1216
1217 #. type: Plain text
1218 #: build/C/man3/envz_add.3:126
1219 #, no-wrap
1220 msgid ""
1221 "#include E<lt>stdio.hE<gt>\n"
1222 "#include E<lt>stdlib.hE<gt>\n"
1223 "#include E<lt>envz.hE<gt>\n"
1224 msgstr ""
1225
1226 #. type: Plain text
1227 #: build/C/man3/envz_add.3:132
1228 #, no-wrap
1229 msgid ""
1230 "int\n"
1231 "main(int argc, char *argv[], char *envp[])\n"
1232 "{\n"
1233 "    int i, e_len = 0;\n"
1234 "    char *str;\n"
1235 msgstr ""
1236
1237 #. type: Plain text
1238 #: build/C/man3/envz_add.3:135
1239 #, no-wrap
1240 msgid ""
1241 "    for (i = 0; envp[i] != NULL; i++)\n"
1242 "        e_len += strlen(envp[i]) + 1;\n"
1243 msgstr ""
1244
1245 #. type: Plain text
1246 #: build/C/man3/envz_add.3:142
1247 #, no-wrap
1248 msgid ""
1249 "    str = envz_entry(*envp, e_len, \"HOME\");\n"
1250 "    printf(\"%s\\en\", str);\n"
1251 "    str = envz_get(*envp, e_len, \"HOME\");\n"
1252 "    printf(\"%s\\en\", str);\n"
1253 "    exit(EXIT_SUCCESS);\n"
1254 "}\n"
1255 msgstr ""
1256
1257 #. type: Plain text
1258 #: build/C/man3/envz_add.3:145
1259 msgid "B<argz_add>(3)"
1260 msgstr ""
1261
1262 #. type: TH
1263 #: build/C/man3/ftok.3:29
1264 #, no-wrap
1265 msgid "FTOK"
1266 msgstr ""
1267
1268 #. type: TH
1269 #: build/C/man3/ftok.3:29 build/C/man3/xcrypt.3:13
1270 #, no-wrap
1271 msgid "2014-08-19"
1272 msgstr ""
1273
1274 #. type: Plain text
1275 #: build/C/man3/ftok.3:32
1276 msgid "ftok - convert a pathname and a project identifier to a System V IPC key"
1277 msgstr ""
1278
1279 #. type: Plain text
1280 #: build/C/man3/ftok.3:36
1281 #, no-wrap
1282 msgid ""
1283 "B<#include E<lt>sys/types.hE<gt>>\n"
1284 "B<#include E<lt>sys/ipc.hE<gt>>\n"
1285 msgstr ""
1286
1287 #. type: Plain text
1288 #: build/C/man3/ftok.3:39
1289 msgid "B<key_t ftok(const char *>I<pathname>B<, int >I<proj_id>B<);>"
1290 msgstr ""
1291
1292 #. type: Plain text
1293 #: build/C/man3/ftok.3:54
1294 msgid ""
1295 "The B<ftok>()  function uses the identity of the file named by the given "
1296 "I<pathname> (which must refer to an existing, accessible file)  and the "
1297 "least significant 8 bits of I<proj_id> (which must be nonzero) to generate a "
1298 "I<key_t> type System V IPC key, suitable for use with B<msgget>(2), "
1299 "B<semget>(2), or B<shmget>(2)."
1300 msgstr ""
1301
1302 #. type: Plain text
1303 #: build/C/man3/ftok.3:61
1304 msgid ""
1305 "The resulting value is the same for all pathnames that name the same file, "
1306 "when the same value of I<proj_id> is used.  The value returned should be "
1307 "different when the (simultaneously existing) files or the project IDs "
1308 "differ."
1309 msgstr ""
1310
1311 #. type: Plain text
1312 #: build/C/man3/ftok.3:70
1313 msgid ""
1314 "On success, the generated I<key_t> value is returned.  On failure -1 is "
1315 "returned, with I<errno> indicating the error as for the B<stat>(2)  system "
1316 "call."
1317 msgstr ""
1318
1319 #. type: Plain text
1320 #: build/C/man3/ftok.3:75
1321 msgid "The B<ftok>()  function is thread-safe."
1322 msgstr ""
1323
1324 #. type: Plain text
1325 #: build/C/man3/ftok.3:79
1326 msgid "On some ancient systems, the prototype was:"
1327 msgstr ""
1328
1329 #. type: Plain text
1330 #: build/C/man3/ftok.3:82
1331 msgid "B<key_t ftok(char *>I<pathname>B<, char >I<proj_id>B<);>"
1332 msgstr ""
1333
1334 #. type: Plain text
1335 #: build/C/man3/ftok.3:94
1336 msgid ""
1337 "Today, I<proj_id> is an I<int>, but still only 8 bits are used.  Typical "
1338 "usage has an ASCII character I<proj_id>, that is why the behavior is said to "
1339 "be undefined when I<proj_id> is zero."
1340 msgstr ""
1341
1342 #. type: Plain text
1343 #: build/C/man3/ftok.3:106
1344 msgid ""
1345 "Of course, no guarantee can be given that the resulting I<key_t> is unique.  "
1346 "Typically, a best-effort attempt combines the given I<proj_id> byte, the "
1347 "lower 16 bits of the inode number, and the lower 8 bits of the device number "
1348 "into a 32-bit result.  Collisions may easily happen, for example between "
1349 "files on I</dev/hda1> and files on I</dev/sda1>."
1350 msgstr ""
1351
1352 #. type: Plain text
1353 #: build/C/man3/ftok.3:112
1354 msgid "B<msgget>(2), B<semget>(2), B<shmget>(2), B<stat>(2), B<svipc>(7)"
1355 msgstr ""
1356
1357 #. type: TH
1358 #: build/C/man3/longjmp.3:27
1359 #, no-wrap
1360 msgid "LONGJMP"
1361 msgstr ""
1362
1363 #. type: TH
1364 #: build/C/man3/longjmp.3:27
1365 #, no-wrap
1366 msgid "2009-01-13"
1367 msgstr ""
1368
1369 #. type: Plain text
1370 #: build/C/man3/longjmp.3:30
1371 msgid "longjmp, siglongjmp - nonlocal jump to a saved stack context"
1372 msgstr ""
1373
1374 #. type: Plain text
1375 #: build/C/man3/longjmp.3:33
1376 #, no-wrap
1377 msgid "B<#include E<lt>setjmp.hE<gt>>\n"
1378 msgstr ""
1379
1380 #. type: Plain text
1381 #: build/C/man3/longjmp.3:35
1382 #, no-wrap
1383 msgid "B<void longjmp(jmp_buf >I<env>B<, int >I<val>B<);>\n"
1384 msgstr ""
1385
1386 #. type: Plain text
1387 #: build/C/man3/longjmp.3:37
1388 #, no-wrap
1389 msgid "B<void siglongjmp(sigjmp_buf >I<env>B<, int >I<val>B<);>\n"
1390 msgstr ""
1391
1392 #. type: Plain text
1393 #: build/C/man3/longjmp.3:46
1394 msgid ""
1395 "B<siglongjmp>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
1396 "_POSIX_C_SOURCE"
1397 msgstr ""
1398
1399 #. type: Plain text
1400 #: build/C/man3/longjmp.3:70
1401 msgid ""
1402 "B<longjmp>()  and B<setjmp>(3)  are useful for dealing with errors and "
1403 "interrupts encountered in a low-level subroutine of a program.  B<longjmp>()  "
1404 "restores the environment saved by the last call of B<setjmp>(3)  with the "
1405 "corresponding I<env> argument.  After B<longjmp>()  is completed, program "
1406 "execution continues as if the corresponding call of B<setjmp>(3)  had just "
1407 "returned the value I<val>.  B<longjmp>()  cannot cause 0 to be returned.  If "
1408 "B<longjmp>()  is invoked with a second argument of 0, 1 will be returned "
1409 "instead."
1410 msgstr ""
1411
1412 #. type: Plain text
1413 #: build/C/man3/longjmp.3:88
1414 msgid ""
1415 "B<siglongjmp>()  is similar to B<longjmp>()  except for the type of its "
1416 "I<env> argument.  If, and only if, the B<sigsetjmp>(3)  call that set this "
1417 "I<env> used a nonzero I<savesigs> flag, B<siglongjmp>()  also restores the "
1418 "signal mask that was saved by B<sigsetjmp>(3)."
1419 msgstr ""
1420
1421 #. type: Plain text
1422 #: build/C/man3/longjmp.3:90
1423 msgid "These functions never return."
1424 msgstr ""
1425
1426 #. type: Plain text
1427 #: build/C/man3/longjmp.3:95
1428 msgid ""
1429 "C89, C99, and POSIX.1-2001 specify B<longjmp>().  POSIX.1-2001 specifies "
1430 "B<siglongjmp>()."
1431 msgstr ""
1432
1433 #. type: Plain text
1434 #: build/C/man3/longjmp.3:105
1435 msgid ""
1436 "POSIX does not specify whether B<longjmp>()  will restore the signal context "
1437 "(see B<setjmp>(3)  for some more details).  If you want to portably save and "
1438 "restore signal masks, use B<sigsetjmp>(3)  and B<siglongjmp>()."
1439 msgstr ""
1440
1441 #. type: Plain text
1442 #: build/C/man3/longjmp.3:109
1443 msgid ""
1444 "The values of automatic variables are unspecified after a call to "
1445 "B<longjmp>()  if they meet all the following criteria:"
1446 msgstr ""
1447
1448 #. type: IP
1449 #: build/C/man3/longjmp.3:109 build/C/man3/longjmp.3:113 build/C/man3/longjmp.3:119
1450 #, no-wrap
1451 msgid "\\(bu"
1452 msgstr ""
1453
1454 #. type: Plain text
1455 #: build/C/man3/longjmp.3:113
1456 msgid ""
1457 "they are local to the function that made the corresponding B<setjmp>(3)  "
1458 "call;"
1459 msgstr ""
1460
1461 #. type: Plain text
1462 #: build/C/man3/longjmp.3:119
1463 msgid ""
1464 "their values are changed between the calls to B<setjmp>(3)  and "
1465 "B<longjmp>(); and"
1466 msgstr ""
1467
1468 #. type: Plain text
1469 #: build/C/man3/longjmp.3:122
1470 msgid "they are not declared as I<volatile>."
1471 msgstr ""
1472
1473 #. type: Plain text
1474 #: build/C/man3/longjmp.3:125
1475 msgid "Analogous remarks apply for B<siglongjmp>()."
1476 msgstr ""
1477
1478 #. type: Plain text
1479 #: build/C/man3/longjmp.3:132
1480 msgid ""
1481 "B<longjmp>()  and B<siglongjmp>()  make programs hard to understand and "
1482 "maintain.  If possible, an alternative should be used."
1483 msgstr ""
1484
1485 #. type: Plain text
1486 #: build/C/man3/longjmp.3:135
1487 msgid "B<setjmp>(3), B<sigsetjmp>(3)"
1488 msgstr ""
1489
1490 #. type: TH
1491 #: build/C/man3/offsetof.3:28
1492 #, no-wrap
1493 msgid "OFFSETOF"
1494 msgstr ""
1495
1496 #. type: TH
1497 #: build/C/man3/offsetof.3:28
1498 #, no-wrap
1499 msgid "2014-04-06"
1500 msgstr ""
1501
1502 #. type: Plain text
1503 #: build/C/man3/offsetof.3:31
1504 msgid "offsetof - offset of a structure member"
1505 msgstr ""
1506
1507 #. type: Plain text
1508 #: build/C/man3/offsetof.3:34
1509 #, no-wrap
1510 msgid "B<#include E<lt>stddef.hE<gt>>\n"
1511 msgstr ""
1512
1513 #. type: Plain text
1514 #: build/C/man3/offsetof.3:36
1515 #, no-wrap
1516 msgid "B<size_t offsetof(>I<type>B<, >I<member>B<);>\n"
1517 msgstr ""
1518
1519 #. type: Plain text
1520 #: build/C/man3/offsetof.3:44
1521 msgid ""
1522 "The macro B<offsetof>()  returns the offset of the field I<member> from the "
1523 "start of the structure I<type>."
1524 msgstr ""
1525
1526 #. type: Plain text
1527 #: build/C/man3/offsetof.3:51
1528 msgid ""
1529 "This macro is useful because the sizes of the fields that compose a "
1530 "structure can vary across implementations, and compilers may insert "
1531 "different numbers of padding bytes between fields.  Consequently, an "
1532 "element's offset is not necessarily given by the sum of the sizes of the "
1533 "previous elements."
1534 msgstr ""
1535
1536 #. type: Plain text
1537 #: build/C/man3/offsetof.3:56
1538 msgid ""
1539 "A compiler error will result if I<member> is not aligned to a byte boundary "
1540 "(i.e., it is a bit field)."
1541 msgstr ""
1542
1543 #. type: Plain text
1544 #: build/C/man3/offsetof.3:63
1545 msgid ""
1546 "B<offsetof>()  returns the offset of the given I<member> within the given "
1547 "I<type>, in units of bytes."
1548 msgstr ""
1549
1550 #. type: Plain text
1551 #: build/C/man3/offsetof.3:65
1552 msgid "C89, C99, POSIX.1-2001."
1553 msgstr ""
1554
1555 #. type: Plain text
1556 #: build/C/man3/offsetof.3:69
1557 msgid ""
1558 "On a Linux/i386 system, when compiled using the default B<gcc>(1)  options, "
1559 "the program below produces the following output:"
1560 msgstr ""
1561
1562 #. type: Plain text
1563 #: build/C/man3/offsetof.3:75
1564 #, no-wrap
1565 msgid ""
1566 "$B< ./a.out>\n"
1567 "offsets: i=0; c=4; d=8 a=16\n"
1568 "sizeof(struct s)=16\n"
1569 msgstr ""
1570
1571 #. type: Plain text
1572 #: build/C/man3/offsetof.3:82
1573 #, no-wrap
1574 msgid ""
1575 "#include E<lt>stddef.hE<gt>\n"
1576 "#include E<lt>stdio.hE<gt>\n"
1577 "#include E<lt>stdlib.hE<gt>\n"
1578 msgstr ""
1579
1580 #. type: Plain text
1581 #: build/C/man3/offsetof.3:92
1582 #, no-wrap
1583 msgid ""
1584 "int\n"
1585 "main(void)\n"
1586 "{\n"
1587 "    struct s {\n"
1588 "        int i;\n"
1589 "        char c;\n"
1590 "        double d;\n"
1591 "        char a[];\n"
1592 "    };\n"
1593 msgstr ""
1594
1595 #. type: Plain text
1596 #: build/C/man3/offsetof.3:94
1597 #, no-wrap
1598 msgid "    /* Output is compiler dependent */\n"
1599 msgstr ""
1600
1601 #. type: Plain text
1602 #: build/C/man3/offsetof.3:99
1603 #, no-wrap
1604 msgid ""
1605 "    printf(\"offsets: i=%zd; c=%zd; d=%zd a=%zd\\en\",\n"
1606 "            offsetof(struct s, i), offsetof(struct s, c),\n"
1607 "            offsetof(struct s, d), offsetof(struct s, a));\n"
1608 "    printf(\"sizeof(struct s)=%zd\\en\", sizeof(struct s));\n"
1609 msgstr ""
1610
1611 #. type: Plain text
1612 #: build/C/man3/offsetof.3:102
1613 #, no-wrap
1614 msgid ""
1615 "    exit(EXIT_SUCCESS);\n"
1616 "}\n"
1617 msgstr ""
1618
1619 #. type: TH
1620 #: build/C/man3/program_invocation_name.3:24
1621 #, no-wrap
1622 msgid "INVOCATION_NAME"
1623 msgstr ""
1624
1625 #. type: TH
1626 #: build/C/man3/program_invocation_name.3:24
1627 #, no-wrap
1628 msgid "2006-04-29"
1629 msgstr ""
1630
1631 #. type: Plain text
1632 #: build/C/man3/program_invocation_name.3:28
1633 msgid ""
1634 "program_invocation_name, program_invocation_short_name - obtain name used to "
1635 "invoke calling program"
1636 msgstr ""
1637
1638 #. type: Plain text
1639 #: build/C/man3/program_invocation_name.3:32
1640 #, no-wrap
1641 msgid ""
1642 "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
1643 "B<#include E<lt>errno.hE<gt>>\n"
1644 msgstr ""
1645
1646 #. type: Plain text
1647 #: build/C/man3/program_invocation_name.3:35
1648 #, no-wrap
1649 msgid ""
1650 "B<extern char *>I<program_invocation_name>B<;>\n"
1651 "B<extern char *>I<program_invocation_short_name>B<;>\n"
1652 msgstr ""
1653
1654 #. type: Plain text
1655 #: build/C/man3/program_invocation_name.3:46
1656 msgid ""
1657 "I<program_invocation_name> contains the name that was used to invoke the "
1658 "calling program.  This is the same as the value of I<argv[0]> in I<main>(), "
1659 "with the difference that the scope of I<program_invocation_name> is global."
1660 msgstr ""
1661
1662 #. type: Plain text
1663 #: build/C/man3/program_invocation_name.3:53
1664 msgid ""
1665 "I<program_invocation_short_name> contains the basename component of name "
1666 "that was used to invoke the calling program.  That is, it is the same value "
1667 "as I<program_invocation_name>, with all text up to and including the final "
1668 "slash (/), if any, removed."
1669 msgstr ""
1670
1671 #. type: Plain text
1672 #: build/C/man3/program_invocation_name.3:56
1673 msgid ""
1674 "These variables are automatically initialized by the glibc run-time startup "
1675 "code."
1676 msgstr ""
1677
1678 #. type: Plain text
1679 #: build/C/man3/program_invocation_name.3:59
1680 msgid ""
1681 "These variables are GNU extensions, and should not be used in programs "
1682 "intended to be portable."
1683 msgstr ""
1684
1685 #. type: Plain text
1686 #: build/C/man3/program_invocation_name.3:63
1687 msgid ""
1688 "The Linux-specific I</proc/[number]/cmdline> file provides access to similar "
1689 "information."
1690 msgstr ""
1691
1692 #. type: Plain text
1693 #: build/C/man3/program_invocation_name.3:65
1694 msgid "B<proc>(5)"
1695 msgstr ""
1696
1697 #. type: TH
1698 #: build/C/man3/queue.3:39
1699 #, no-wrap
1700 msgid "QUEUE"
1701 msgstr ""
1702
1703 #. type: TH
1704 #: build/C/man3/queue.3:39
1705 #, no-wrap
1706 msgid "2007-12-28"
1707 msgstr ""
1708
1709 #. type: Plain text
1710 #: build/C/man3/queue.3:48
1711 msgid ""
1712 "LIST_ENTRY, LIST_HEAD, LIST_INIT, LIST_INSERT_AFTER, LIST_INSERT_HEAD, "
1713 "LIST_REMOVE, TAILQ_ENTRY, TAILQ_HEAD, TAILQ_INIT, TAILQ_INSERT_AFTER, "
1714 "TAILQ_INSERT_HEAD, TAILQ_INSERT_TAIL, TAILQ_REMOVE, CIRCLEQ_ENTRY, "
1715 "CIRCLEQ_HEAD, CIRCLEQ_INIT, CIRCLEQ_INSERT_AFTER, CIRCLEQ_INSERT_BEFORE, "
1716 "CIRCLEQ_INSERT_HEAD, CIRCLEQ_INSERT_TAIL, CIRCLEQ_REMOVE - implementations "
1717 "of lists, tail queues, and circular queues"
1718 msgstr ""
1719
1720 #. type: Plain text
1721 #: build/C/man3/queue.3:51
1722 #, no-wrap
1723 msgid "B<#include E<lt>sys/queue.hE<gt>>\n"
1724 msgstr ""
1725
1726 #. type: Plain text
1727 #: build/C/man3/queue.3:60
1728 #, no-wrap
1729 msgid ""
1730 "B<LIST_ENTRY(>I<TYPE>B<);>\n"
1731 "B<LIST_HEAD(>I<HEADNAME>B<, >I<TYPE>B<);>\n"
1732 "B<LIST_INIT(LIST_HEAD *>I<head>B<);>\n"
1733 "B<LIST_INSERT_AFTER(LIST_ENTRY *>I<listelm>B<, >\n"
1734 "B<                TYPE *>I<elm>B<, LIST_ENTRY >I<NAME>B<);>\n"
1735 "B<LIST_INSERT_HEAD(LIST_HEAD *>I<head>B<, >\n"
1736 "B<                TYPE *>I<elm>B<, LIST_ENTRY >I<NAME>B<);>\n"
1737 "B<LIST_REMOVE(TYPE *>I<elm>B<, LIST_ENTRY >I<NAME>B<);>\n"
1738 msgstr ""
1739
1740 #. type: Plain text
1741 #: build/C/man3/queue.3:71
1742 #, no-wrap
1743 msgid ""
1744 "B<TAILQ_ENTRY(>I<TYPE>B<);>\n"
1745 "B<TAILQ_HEAD(>I<HEADNAME>B<, >I<TYPE>B<);>\n"
1746 "B<TAILQ_INIT(TAILQ_HEAD *>I<head>B<);>\n"
1747 "B<TAILQ_INSERT_AFTER(TAILQ_HEAD *>I<head>B<, TYPE *>I<listelm>B<, >\n"
1748 "B<                TYPE *>I<elm>B<, TAILQ_ENTRY >I<NAME>B<);>\n"
1749 "B<TAILQ_INSERT_HEAD(TAILQ_HEAD *>I<head>B<, >\n"
1750 "B<                TYPE *>I<elm>B<, TAILQ_ENTRY >I<NAME>B<);>\n"
1751 "B<TAILQ_INSERT_TAIL(TAILQ_HEAD *>I<head>B<, >\n"
1752 "B<                TYPE *>I<elm>B<, TAILQ_ENTRY >I<NAME>B<);>\n"
1753 "B<TAILQ_REMOVE(TAILQ_HEAD *>I<head>B<, TYPE *>I<elm>B<, TAILQ_ENTRY "
1754 ">I<NAME>B<);>\n"
1755 msgstr ""
1756
1757 #. type: Plain text
1758 #: build/C/man3/queue.3:85
1759 #, no-wrap
1760 msgid ""
1761 "B<CIRCLEQ_ENTRY(>I<TYPE>B<);>\n"
1762 "B<CIRCLEQ_HEAD(>I<HEADNAME>B<, >I<TYPE>B<);>\n"
1763 "B<CIRCLEQ_INIT(CIRCLEQ_HEAD *>I<head>B<);>\n"
1764 "B<CIRCLEQ_INSERT_AFTER(CIRCLEQ_HEAD *>I<head>B<, TYPE *>I<listelm>B<, >\n"
1765 "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
1766 "B<CIRCLEQ_INSERT_BEFORE(CIRCLEQ_HEAD *>I<head>B<, TYPE *>I<listelm>B<, >\n"
1767 "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
1768 "B<CIRCLEQ_INSERT_HEAD(CIRCLEQ_HEAD *>I<head>B<, >\n"
1769 "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
1770 "B<CIRCLEQ_INSERT_TAIL(CIRCLEQ_HEAD *>I<head>B<, >\n"
1771 "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
1772 "B<CIRCLEQ_REMOVE(CIRCLEQ_HEAD *>I<head>B<, >\n"
1773 "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
1774 msgstr ""
1775
1776 #. type: Plain text
1777 #: build/C/man3/queue.3:90
1778 msgid ""
1779 "These macros define and operate on three types of data structures: lists, "
1780 "tail queues, and circular queues.  All three structures support the "
1781 "following functionality:"
1782 msgstr ""
1783
1784 #. type: Plain text
1785 #: build/C/man3/queue.3:95
1786 msgid "Insertion of a new entry at the head of the list."
1787 msgstr ""
1788
1789 #. type: Plain text
1790 #: build/C/man3/queue.3:97
1791 msgid "Insertion of a new entry after any element in the list."
1792 msgstr ""
1793
1794 #. type: Plain text
1795 #: build/C/man3/queue.3:99
1796 msgid "Removal of any entry in the list."
1797 msgstr ""
1798
1799 #. type: Plain text
1800 #: build/C/man3/queue.3:101
1801 msgid "Forward traversal through the list."
1802 msgstr ""
1803
1804 #. type: Plain text
1805 #: build/C/man3/queue.3:106
1806 msgid ""
1807 "Lists are the simplest of the three data structures and support only the "
1808 "above functionality."
1809 msgstr ""
1810
1811 #. type: Plain text
1812 #: build/C/man3/queue.3:108
1813 msgid "Tail queues add the following functionality:"
1814 msgstr ""
1815
1816 #. type: Plain text
1817 #: build/C/man3/queue.3:111 build/C/man3/queue.3:133
1818 msgid "Entries can be added at the end of a list."
1819 msgstr ""
1820
1821 #. type: Plain text
1822 #: build/C/man3/queue.3:114 build/C/man3/queue.3:141
1823 msgid "However:"
1824 msgstr ""
1825
1826 #. type: IP
1827 #: build/C/man3/queue.3:117 build/C/man3/queue.3:144
1828 #, no-wrap
1829 msgid "1."
1830 msgstr ""
1831
1832 #. type: Plain text
1833 #: build/C/man3/queue.3:119 build/C/man3/queue.3:146
1834 msgid "All list insertions and removals must specify the head of the list."
1835 msgstr ""
1836
1837 #. type: IP
1838 #: build/C/man3/queue.3:119 build/C/man3/queue.3:146
1839 #, no-wrap
1840 msgid "2."
1841 msgstr ""
1842
1843 #. type: Plain text
1844 #: build/C/man3/queue.3:121 build/C/man3/queue.3:148
1845 msgid "Each head entry requires two pointers rather than one."
1846 msgstr ""
1847
1848 #. type: IP
1849 #: build/C/man3/queue.3:121 build/C/man3/queue.3:148
1850 #, no-wrap
1851 msgid "3."
1852 msgstr ""
1853
1854 #. type: Plain text
1855 #: build/C/man3/queue.3:124
1856 msgid ""
1857 "Code size is about 15% greater and operations run about 20% slower than "
1858 "lists."
1859 msgstr ""
1860
1861 #. type: Plain text
1862 #: build/C/man3/queue.3:128
1863 msgid "Circular queues add the following functionality:"
1864 msgstr ""
1865
1866 #. type: Plain text
1867 #: build/C/man3/queue.3:135
1868 msgid "Entries can be added before another entry."
1869 msgstr ""
1870
1871 #. type: Plain text
1872 #: build/C/man3/queue.3:137
1873 msgid "They may be traversed backward, from tail to head."
1874 msgstr ""
1875
1876 #. type: Plain text
1877 #: build/C/man3/queue.3:150
1878 msgid "The termination condition for traversal is more complex."
1879 msgstr ""
1880
1881 #. type: IP
1882 #: build/C/man3/queue.3:150
1883 #, no-wrap
1884 msgid "4."
1885 msgstr ""
1886
1887 #. type: Plain text
1888 #: build/C/man3/queue.3:153
1889 msgid ""
1890 "Code size is about 40% greater and operations run about 45% slower than "
1891 "lists."
1892 msgstr ""
1893
1894 #. type: Plain text
1895 #: build/C/man3/queue.3:176
1896 msgid ""
1897 "In the macro definitions, I<TYPE> is the name of a user-defined structure, "
1898 "that must contain a field of type B<LIST_ENTRY>, B<TAILQ_ENTRY>, or "
1899 "B<CIRCLEQ_ENTRY>, named I<NAME>.  The argument I<HEADNAME> is the name of a "
1900 "user-defined structure that must be declared using the macros B<LIST_HEAD>, "
1901 "B<TAILQ_HEAD>, or B<CIRCLEQ_HEAD>.  See the examples below for further "
1902 "explanation of how these macros are used."
1903 msgstr ""
1904
1905 #. type: SS
1906 #: build/C/man3/queue.3:176
1907 #, no-wrap
1908 msgid "Lists"
1909 msgstr ""
1910
1911 #. type: Plain text
1912 #: build/C/man3/queue.3:189
1913 msgid ""
1914 "A list is headed by a structure defined by the B<LIST_HEAD> macro.  This "
1915 "structure contains a single pointer to the first element on the list.  The "
1916 "elements are doubly linked so that an arbitrary element can be removed "
1917 "without traversing the list.  New elements can be added to the list after an "
1918 "existing element or at the head of the list.  A B<LIST_HEAD> structure is "
1919 "declared as follows:"
1920 msgstr ""
1921
1922 #. type: Plain text
1923 #: build/C/man3/queue.3:193
1924 #, no-wrap
1925 msgid "LIST_HEAD(HEADNAME, TYPE) head;\n"
1926 msgstr ""
1927
1928 #. type: Plain text
1929 #: build/C/man3/queue.3:202
1930 msgid ""
1931 "where I<HEADNAME> is the name of the structure to be defined, and I<TYPE> is "
1932 "the type of the elements to be linked into the list.  A pointer to the head "
1933 "of the list can later be declared as:"
1934 msgstr ""
1935
1936 #. type: Plain text
1937 #: build/C/man3/queue.3:206 build/C/man3/queue.3:299 build/C/man3/queue.3:401
1938 #, no-wrap
1939 msgid "struct HEADNAME *headp;\n"
1940 msgstr ""
1941
1942 #. type: Plain text
1943 #: build/C/man3/queue.3:214 build/C/man3/queue.3:307 build/C/man3/queue.3:409
1944 msgid "(The names I<head> and I<headp> are user selectable.)"
1945 msgstr ""
1946
1947 #. type: Plain text
1948 #: build/C/man3/queue.3:219
1949 msgid ""
1950 "The macro B<LIST_ENTRY> declares a structure that connects the elements in "
1951 "the list."
1952 msgstr ""
1953
1954 #. type: Plain text
1955 #: build/C/man3/queue.3:224
1956 msgid "The macro B<LIST_INIT> initializes the list referenced by I<head>."
1957 msgstr ""
1958
1959 #. type: Plain text
1960 #: build/C/man3/queue.3:230
1961 msgid ""
1962 "The macro B<LIST_INSERT_HEAD> inserts the new element I<elm> at the head of "
1963 "the list."
1964 msgstr ""
1965
1966 #. type: Plain text
1967 #: build/C/man3/queue.3:237
1968 msgid ""
1969 "The macro B<LIST_INSERT_AFTER> inserts the new element I<elm> after the "
1970 "element I<listelm>."
1971 msgstr ""
1972
1973 #. type: Plain text
1974 #: build/C/man3/queue.3:243
1975 msgid "The macro B<LIST_REMOVE> removes the element I<elm> from the list."
1976 msgstr ""
1977
1978 #. type: SS
1979 #: build/C/man3/queue.3:243
1980 #, no-wrap
1981 msgid "List example"
1982 msgstr ""
1983
1984 #. type: Plain text
1985 #: build/C/man3/queue.3:252
1986 #, no-wrap
1987 msgid ""
1988 "LIST_HEAD(listhead, entry) head;\n"
1989 "struct listhead *headp;                 /* List head. */\n"
1990 "struct entry {\n"
1991 "    ...\n"
1992 "    LIST_ENTRY(entry) entries;          /* List. */\n"
1993 "    ...\n"
1994 "} *n1, *n2, *np;\n"
1995 msgstr ""
1996
1997 #. type: Plain text
1998 #: build/C/man3/queue.3:254
1999 #, no-wrap
2000 msgid "LIST_INIT(&head);                       /* Initialize the list. */\n"
2001 msgstr ""
2002
2003 #. type: Plain text
2004 #: build/C/man3/queue.3:257
2005 #, no-wrap
2006 msgid ""
2007 "n1 = malloc(sizeof(struct entry));      /* Insert at the head. */\n"
2008 "LIST_INSERT_HEAD(&head, n1, entries);\n"
2009 msgstr ""
2010
2011 #. type: Plain text
2012 #: build/C/man3/queue.3:263
2013 #, no-wrap
2014 msgid ""
2015 "n2 = malloc(sizeof(struct entry));      /* Insert after. */\n"
2016 "LIST_INSERT_AFTER(n1, n2, entries);\n"
2017 "                                        /* Forward traversal. */\n"
2018 "for (np = head.lh_first; np != NULL; np = np-E<gt>entries.le_next)\n"
2019 "    np-E<gt> ...\n"
2020 msgstr ""
2021
2022 #.  FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=1506
2023 #. type: Plain text
2024 #: build/C/man3/queue.3:267
2025 #, no-wrap
2026 msgid ""
2027 "while (head.lh_first != NULL)           /* Delete. */\n"
2028 "    LIST_REMOVE(head.lh_first, entries);\n"
2029 msgstr ""
2030
2031 #. type: SS
2032 #: build/C/man3/queue.3:268
2033 #, no-wrap
2034 msgid "Tail queues"
2035 msgstr ""
2036
2037 #. type: Plain text
2038 #: build/C/man3/queue.3:282
2039 msgid ""
2040 "A tail queue is headed by a structure defined by the B<TAILQ_HEAD> macro.  "
2041 "This structure contains a pair of pointers, one to the first element in the "
2042 "tail queue and the other to the last element in the tail queue.  The "
2043 "elements are doubly linked so that an arbitrary element can be removed "
2044 "without traversing the tail queue.  New elements can be added to the tail "
2045 "queue after an existing element, at the head of the tail queue, or at the "
2046 "end of the tail queue.  A B<TAILQ_HEAD> structure is declared as follows:"
2047 msgstr ""
2048
2049 #. type: Plain text
2050 #: build/C/man3/queue.3:286
2051 #, no-wrap
2052 msgid "TAILQ_HEAD(HEADNAME, TYPE) head;\n"
2053 msgstr ""
2054
2055 #. type: Plain text
2056 #: build/C/man3/queue.3:295
2057 msgid ""
2058 "where I<HEADNAME> is the name of the structure to be defined, and I<TYPE> is "
2059 "the type of the elements to be linked into the tail queue.  A pointer to the "
2060 "head of the tail queue can later be declared as:"
2061 msgstr ""
2062
2063 #. type: Plain text
2064 #: build/C/man3/queue.3:312
2065 msgid ""
2066 "The macro B<TAILQ_ENTRY> declares a structure that connects the elements in "
2067 "the tail queue."
2068 msgstr ""
2069
2070 #. type: Plain text
2071 #: build/C/man3/queue.3:317
2072 msgid "The macro B<TAILQ_INIT> initializes the tail queue referenced by I<head>."
2073 msgstr ""
2074
2075 #. type: Plain text
2076 #: build/C/man3/queue.3:323
2077 msgid ""
2078 "The macro B<TAILQ_INSERT_HEAD> inserts the new element I<elm> at the head of "
2079 "the tail queue."
2080 msgstr ""
2081
2082 #. type: Plain text
2083 #: build/C/man3/queue.3:329
2084 msgid ""
2085 "The macro B<TAILQ_INSERT_TAIL> inserts the new element I<elm> at the end of "
2086 "the tail queue."
2087 msgstr ""
2088
2089 #. type: Plain text
2090 #: build/C/man3/queue.3:336
2091 msgid ""
2092 "The macro B<TAILQ_INSERT_AFTER> inserts the new element I<elm> after the "
2093 "element I<listelm>."
2094 msgstr ""
2095
2096 #. type: Plain text
2097 #: build/C/man3/queue.3:342
2098 msgid "The macro B<TAILQ_REMOVE> removes the element I<elm> from the tail queue."
2099 msgstr ""
2100
2101 #. type: SS
2102 #: build/C/man3/queue.3:342
2103 #, no-wrap
2104 msgid "Tail queue example"
2105 msgstr ""
2106
2107 #. type: Plain text
2108 #: build/C/man3/queue.3:351
2109 #, no-wrap
2110 msgid ""
2111 "TAILQ_HEAD(tailhead, entry) head;\n"
2112 "struct tailhead *headp;                 /* Tail queue head. */\n"
2113 "struct entry {\n"
2114 "    ...\n"
2115 "    TAILQ_ENTRY(entry) entries;         /* Tail queue. */\n"
2116 "    ...\n"
2117 "} *n1, *n2, *np;\n"
2118 msgstr ""
2119
2120 #. type: Plain text
2121 #: build/C/man3/queue.3:353
2122 #, no-wrap
2123 msgid "TAILQ_INIT(&head);                      /* Initialize the queue. */\n"
2124 msgstr ""
2125
2126 #. type: Plain text
2127 #: build/C/man3/queue.3:356
2128 #, no-wrap
2129 msgid ""
2130 "n1 = malloc(sizeof(struct entry));      /* Insert at the head. */\n"
2131 "TAILQ_INSERT_HEAD(&head, n1, entries);\n"
2132 msgstr ""
2133
2134 #. type: Plain text
2135 #: build/C/man3/queue.3:359
2136 #, no-wrap
2137 msgid ""
2138 "n1 = malloc(sizeof(struct entry));      /* Insert at the tail. */\n"
2139 "TAILQ_INSERT_TAIL(&head, n1, entries);\n"
2140 msgstr ""
2141
2142 #. type: Plain text
2143 #: build/C/man3/queue.3:368
2144 #, no-wrap
2145 msgid ""
2146 "n2 = malloc(sizeof(struct entry));      /* Insert after. */\n"
2147 "TAILQ_INSERT_AFTER(&head, n1, n2, entries);\n"
2148 "                                        /* Forward traversal. */\n"
2149 "for (np = head.tqh_first; np != NULL; np = np-E<gt>entries.tqe_next)\n"
2150 "    np-E<gt> ...\n"
2151 "                                        /* Delete. */\n"
2152 "while (head.tqh_first != NULL)\n"
2153 "    TAILQ_REMOVE(&head, head.tqh_first, entries);\n"
2154 msgstr ""
2155
2156 #. type: SS
2157 #: build/C/man3/queue.3:369
2158 #, no-wrap
2159 msgid "Circular queues"
2160 msgstr ""
2161
2162 #. type: Plain text
2163 #: build/C/man3/queue.3:384
2164 msgid ""
2165 "A circular queue is headed by a structure defined by the B<CIRCLEQ_HEAD> "
2166 "macro.  This structure contains a pair of pointers, one to the first element "
2167 "in the circular queue and the other to the last element in the circular "
2168 "queue.  The elements are doubly linked so that an arbitrary element can be "
2169 "removed without traversing the queue.  New elements can be added to the "
2170 "queue after an existing element, before an existing element, at the head of "
2171 "the queue, or at the end of the queue.  A B<CIRCLEQ_HEAD> structure is "
2172 "declared as follows:"
2173 msgstr ""
2174
2175 #. type: Plain text
2176 #: build/C/man3/queue.3:388
2177 #, no-wrap
2178 msgid "CIRCLEQ_HEAD(HEADNAME, TYPE) head;\n"
2179 msgstr ""
2180
2181 #. type: Plain text
2182 #: build/C/man3/queue.3:397
2183 msgid ""
2184 "where I<HEADNAME> is the name of the structure to be defined, and I<TYPE> is "
2185 "the type of the elements to be linked into the circular queue.  A pointer to "
2186 "the head of the circular queue can later be declared as:"
2187 msgstr ""
2188
2189 #. type: Plain text
2190 #: build/C/man3/queue.3:414
2191 msgid ""
2192 "The macro B<CIRCLEQ_ENTRY> declares a structure that connects the elements "
2193 "in the circular queue."
2194 msgstr ""
2195
2196 #. type: Plain text
2197 #: build/C/man3/queue.3:419
2198 msgid ""
2199 "The macro B<CIRCLEQ_INIT> initializes the circular queue referenced by "
2200 "I<head>."
2201 msgstr ""
2202
2203 #. type: Plain text
2204 #: build/C/man3/queue.3:425
2205 msgid ""
2206 "The macro B<CIRCLEQ_INSERT_HEAD> inserts the new element I<elm> at the head "
2207 "of the circular queue."
2208 msgstr ""
2209
2210 #. type: Plain text
2211 #: build/C/man3/queue.3:431
2212 msgid ""
2213 "The macro B<CIRCLEQ_INSERT_TAIL> inserts the new element I<elm> at the end "
2214 "of the circular queue."
2215 msgstr ""
2216
2217 #. type: Plain text
2218 #: build/C/man3/queue.3:438
2219 msgid ""
2220 "The macro B<CIRCLEQ_INSERT_AFTER> inserts the new element I<elm> after the "
2221 "element I<listelm>."
2222 msgstr ""
2223
2224 #. type: Plain text
2225 #: build/C/man3/queue.3:445
2226 msgid ""
2227 "The macro B<CIRCLEQ_INSERT_BEFORE> inserts the new element I<elm> before the "
2228 "element I<listelm>."
2229 msgstr ""
2230
2231 #. type: Plain text
2232 #: build/C/man3/queue.3:451
2233 msgid ""
2234 "The macro B<CIRCLEQ_REMOVE> removes the element I<elm> from the circular "
2235 "queue."
2236 msgstr ""
2237
2238 #. type: SS
2239 #: build/C/man3/queue.3:451
2240 #, no-wrap
2241 msgid "Circular queue example"
2242 msgstr ""
2243
2244 #. type: Plain text
2245 #: build/C/man3/queue.3:460
2246 #, no-wrap
2247 msgid ""
2248 "CIRCLEQ_HEAD(circleq, entry) head;\n"
2249 "struct circleq *headp;              /* Circular queue head. */\n"
2250 "struct entry {\n"
2251 "    ...\n"
2252 "    CIRCLEQ_ENTRY(entry) entries;   /* Circular queue. */\n"
2253 "    ...\n"
2254 "} *n1, *n2, *np;\n"
2255 msgstr ""
2256
2257 #. type: Plain text
2258 #: build/C/man3/queue.3:462
2259 #, no-wrap
2260 msgid "CIRCLEQ_INIT(&head);                /* Initialize the circular queue. */\n"
2261 msgstr ""
2262
2263 #. type: Plain text
2264 #: build/C/man3/queue.3:465
2265 #, no-wrap
2266 msgid ""
2267 "n1 = malloc(sizeof(struct entry));  /* Insert at the head. */\n"
2268 "CIRCLEQ_INSERT_HEAD(&head, n1, entries);\n"
2269 msgstr ""
2270
2271 #. type: Plain text
2272 #: build/C/man3/queue.3:468
2273 #, no-wrap
2274 msgid ""
2275 "n1 = malloc(sizeof(struct entry));  /* Insert at the tail. */\n"
2276 "CIRCLEQ_INSERT_TAIL(&head, n1, entries);\n"
2277 msgstr ""
2278
2279 #. type: Plain text
2280 #: build/C/man3/queue.3:471
2281 #, no-wrap
2282 msgid ""
2283 "n2 = malloc(sizeof(struct entry));  /* Insert after. */\n"
2284 "CIRCLEQ_INSERT_AFTER(&head, n1, n2, entries);\n"
2285 msgstr ""
2286
2287 #. type: Plain text
2288 #: build/C/man3/queue.3:484
2289 #, no-wrap
2290 msgid ""
2291 "n2 = malloc(sizeof(struct entry));  /* Insert before. */\n"
2292 "CIRCLEQ_INSERT_BEFORE(&head, n1, n2, entries);\n"
2293 "                                    /* Forward traversal. */\n"
2294 "for (np = head.cqh_first; np != (void *)&head;\n"
2295 "        np = np-E<gt>entries.cqe_next)\n"
2296 "    np-E<gt> ...\n"
2297 "                                    /* Reverse traversal. */\n"
2298 "for (np = head.cqh_last; np != (void *)&head; np = "
2299 "np-E<gt>entries.cqe_prev)\n"
2300 "    np-E<gt> ...\n"
2301 "                                    /* Delete. */\n"
2302 "while (head.cqh_first != (void *)&head)\n"
2303 "    CIRCLEQ_REMOVE(&head, head.cqh_first, entries);\n"
2304 msgstr ""
2305
2306 #. type: Plain text
2307 #: build/C/man3/queue.3:491
2308 msgid ""
2309 "Not in POSIX.1-2001.  Present on the BSDs.  The queue functions first "
2310 "appeared in 4.4BSD."
2311 msgstr ""
2312
2313 #. type: TH
2314 #: build/C/man3/realpath.3:28
2315 #, no-wrap
2316 msgid "REALPATH"
2317 msgstr ""
2318
2319 #. type: TH
2320 #: build/C/man3/realpath.3:28
2321 #, no-wrap
2322 msgid "2014-10-02"
2323 msgstr ""
2324
2325 #. type: Plain text
2326 #: build/C/man3/realpath.3:31
2327 msgid "realpath - return the canonicalized absolute pathname"
2328 msgstr ""
2329
2330 #. type: Plain text
2331 #: build/C/man3/realpath.3:35
2332 #, no-wrap
2333 msgid ""
2334 "B<#include E<lt>limits.hE<gt>>\n"
2335 "B<#include E<lt>stdlib.hE<gt>>\n"
2336 msgstr ""
2337
2338 #. type: Plain text
2339 #: build/C/man3/realpath.3:37
2340 #, no-wrap
2341 msgid "B<char *realpath(const char *>I<path>B<, char *>I<resolved_path>B<);>\n"
2342 msgstr ""
2343
2344 #. type: Plain text
2345 #: build/C/man3/realpath.3:45
2346 msgid "B<realpath>():"
2347 msgstr ""
2348
2349 #. type: Plain text
2350 #: build/C/man3/realpath.3:49
2351 msgid ""
2352 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
2353 "_XOPEN_SOURCE_EXTENDED"
2354 msgstr ""
2355
2356 #. type: Plain text
2357 #: build/C/man3/realpath.3:71
2358 msgid ""
2359 "B<realpath>()  expands all symbolic links and resolves references to I</./>, "
2360 "I</../> and extra \\(aq/\\(aq characters in the null-terminated string named "
2361 "by I<path> to produce a canonicalized absolute pathname.  The resulting "
2362 "pathname is stored as a null-terminated string, up to a maximum of "
2363 "B<PATH_MAX> bytes, in the buffer pointed to by I<resolved_path>.  The "
2364 "resulting path will have no symbolic link, I</./> or I</../> components."
2365 msgstr ""
2366
2367 #.  Even if we use resolved_path == NULL, then realpath() will still
2368 #.  return ENAMETOOLONG if the resolved pathname would exceed PATH_MAX
2369 #.  bytes -- MTK, Dec 04
2370 #.  .SH HISTORY
2371 #.  The
2372 #.  .BR realpath ()
2373 #.  function first appeared in 4.4BSD, contributed by Jan-Simon Pendry.
2374 #. type: Plain text
2375 #: build/C/man3/realpath.3:91
2376 msgid ""
2377 "If I<resolved_path> is specified as NULL, then B<realpath>()  uses "
2378 "B<malloc>(3)  to allocate a buffer of up to B<PATH_MAX> bytes to hold the "
2379 "resolved pathname, and returns a pointer to this buffer.  The caller should "
2380 "deallocate this buffer using B<free>(3)."
2381 msgstr ""
2382
2383 #. type: Plain text
2384 #: build/C/man3/realpath.3:96
2385 msgid ""
2386 "If there is no error, B<realpath>()  returns a pointer to the "
2387 "I<resolved_path>."
2388 msgstr ""
2389
2390 #. type: Plain text
2391 #: build/C/man3/realpath.3:103
2392 msgid ""
2393 "Otherwise, it returns NULL, the contents of the array I<resolved_path> are "
2394 "undefined, and I<errno> is set to indicate the error."
2395 msgstr ""
2396
2397 #. type: SH
2398 #: build/C/man3/realpath.3:103
2399 #, no-wrap
2400 msgid "ERRORS"
2401 msgstr ""
2402
2403 #. type: TP
2404 #: build/C/man3/realpath.3:104
2405 #, no-wrap
2406 msgid "B<EACCES>"
2407 msgstr ""
2408
2409 #. type: Plain text
2410 #: build/C/man3/realpath.3:107
2411 msgid "Read or search permission was denied for a component of the path prefix."
2412 msgstr ""
2413
2414 #. type: TP
2415 #: build/C/man3/realpath.3:107
2416 #, no-wrap
2417 msgid "B<EINVAL>"
2418 msgstr ""
2419
2420 #.  (In libc5 this would just cause a segfault.)
2421 #. type: Plain text
2422 #: build/C/man3/realpath.3:116
2423 msgid ""
2424 "I<path> is NULL.  (In glibc versions before 2.3, this error is also returned "
2425 "if I<resolved_path> is NULL.)"
2426 msgstr ""
2427
2428 #. type: TP
2429 #: build/C/man3/realpath.3:116
2430 #, no-wrap
2431 msgid "B<EIO>"
2432 msgstr ""
2433
2434 #. type: Plain text
2435 #: build/C/man3/realpath.3:119
2436 msgid "An I/O error occurred while reading from the filesystem."
2437 msgstr ""
2438
2439 #. type: TP
2440 #: build/C/man3/realpath.3:119
2441 #, no-wrap
2442 msgid "B<ELOOP>"
2443 msgstr ""
2444
2445 #. type: Plain text
2446 #: build/C/man3/realpath.3:122
2447 msgid "Too many symbolic links were encountered in translating the pathname."
2448 msgstr ""
2449
2450 #. type: TP
2451 #: build/C/man3/realpath.3:122
2452 #, no-wrap
2453 msgid "B<ENAMETOOLONG>"
2454 msgstr ""
2455
2456 #. type: Plain text
2457 #: build/C/man3/realpath.3:129
2458 msgid ""
2459 "A component of a pathname exceeded B<NAME_MAX> characters, or an entire "
2460 "pathname exceeded B<PATH_MAX> characters."
2461 msgstr ""
2462
2463 #. type: TP
2464 #: build/C/man3/realpath.3:129
2465 #, no-wrap
2466 msgid "B<ENOENT>"
2467 msgstr ""
2468
2469 #. type: Plain text
2470 #: build/C/man3/realpath.3:132
2471 msgid "The named file does not exist."
2472 msgstr ""
2473
2474 #. type: TP
2475 #: build/C/man3/realpath.3:132
2476 #, no-wrap
2477 msgid "B<ENOTDIR>"
2478 msgstr ""
2479
2480 #. type: Plain text
2481 #: build/C/man3/realpath.3:135
2482 msgid "A component of the path prefix is not a directory."
2483 msgstr ""
2484
2485 #. type: Plain text
2486 #: build/C/man3/realpath.3:137
2487 msgid "4.4BSD, POSIX.1-2001."
2488 msgstr ""
2489
2490 #. type: Plain text
2491 #: build/C/man3/realpath.3:142
2492 msgid ""
2493 "POSIX.1-2001 says that the behavior if I<resolved_path> is NULL is "
2494 "implementation-defined.  POSIX.1-2008 specifies the behavior described in "
2495 "this page."
2496 msgstr ""
2497
2498 #. type: Plain text
2499 #: build/C/man3/realpath.3:154
2500 msgid ""
2501 "In 4.4BSD and Solaris, the limit on the pathname length is B<MAXPATHLEN> "
2502 "(found in I<E<lt>sys/param.hE<gt>>).  SUSv2 prescribes B<PATH_MAX> and "
2503 "B<NAME_MAX>, as found in I<E<lt>limits.hE<gt>> or provided by the "
2504 "B<pathconf>(3)  function.  A typical source fragment would be"
2505 msgstr ""
2506
2507 #. type: Plain text
2508 #: build/C/man3/realpath.3:164
2509 #, no-wrap
2510 msgid ""
2511 "#ifdef PATH_MAX\n"
2512 "  path_max = PATH_MAX;\n"
2513 "#else\n"
2514 "  path_max = pathconf(path, _PC_PATH_MAX);\n"
2515 "  if (path_max E<lt>= 0)\n"
2516 "    path_max = 4096;\n"
2517 "#endif\n"
2518 msgstr ""
2519
2520 #. type: Plain text
2521 #: build/C/man3/realpath.3:168
2522 msgid "(But see the BUGS section.)"
2523 msgstr ""
2524
2525 #.      2012-05-05, According to Casper Dik, the statement about
2526 #.      Solaris was not true at least as far back as 1997, and
2527 #.      may never have been true.
2528 #
2529 #.  The 4.4BSD, Linux and SUSv2 versions always return an absolute
2530 #.  pathname.
2531 #.  Solaris may return a relative pathname when the
2532 #.  .I path
2533 #.  argument is relative.
2534 #.  The prototype of
2535 #.  .BR realpath ()
2536 #.  is given in \fI<unistd.h>\fP in libc4 and libc5,
2537 #.  but in \fI<stdlib.h>\fP everywhere else.
2538 #. type: SS
2539 #: build/C/man3/realpath.3:182
2540 #, no-wrap
2541 msgid "GNU extensions"
2542 msgstr ""
2543
2544 #. type: Plain text
2545 #: build/C/man3/realpath.3:193
2546 msgid ""
2547 "If the call fails with either B<EACCES> or B<ENOENT> and I<resolved_path> is "
2548 "not NULL, then the prefix of I<path> that is not readable or does not exist "
2549 "is returned in I<resolved_path>."
2550 msgstr ""
2551
2552 #.  .LP
2553 #.  The libc4 and libc5 implementation contained a buffer overflow
2554 #.  (fixed in libc-5.4.13).
2555 #.  Thus, set-user-ID programs like
2556 #.  .BR mount (8)
2557 #.  needed a private version.
2558 #. type: Plain text
2559 #: build/C/man3/realpath.3:224
2560 msgid ""
2561 "The POSIX.1-2001 standard version of this function is broken by design, "
2562 "since it is impossible to determine a suitable size for the output buffer, "
2563 "I<resolved_path>.  According to POSIX.1-2001 a buffer of size B<PATH_MAX> "
2564 "suffices, but B<PATH_MAX> need not be a defined constant, and may have to be "
2565 "obtained using B<pathconf>(3).  And asking B<pathconf>(3)  does not really "
2566 "help, since, on the one hand POSIX warns that the result of B<pathconf>(3)  "
2567 "may be huge and unsuitable for mallocing memory, and on the other hand "
2568 "B<pathconf>(3)  may return -1 to signify that B<PATH_MAX> is not bounded.  "
2569 "The I<resolved_path\\ ==\\ NULL> feature, not standardized in POSIX.1-2001, "
2570 "but standardized in POSIX.1-2008, allows this design problem to be avoided."
2571 msgstr ""
2572
2573 #. type: Plain text
2574 #: build/C/man3/realpath.3:231
2575 msgid ""
2576 "B<realpath>(1), B<readlink>(2), B<canonicalize_file_name>(3), B<getcwd>(3), "
2577 "B<pathconf>(3), B<sysconf>(3)"
2578 msgstr ""
2579
2580 #. type: TH
2581 #: build/C/man3/setjmp.3:27
2582 #, no-wrap
2583 msgid "SETJMP"
2584 msgstr ""
2585
2586 #. type: TH
2587 #: build/C/man3/setjmp.3:27
2588 #, no-wrap
2589 msgid "2014-01-07"
2590 msgstr ""
2591
2592 #. type: Plain text
2593 #: build/C/man3/setjmp.3:30
2594 msgid "setjmp, sigsetjmp - save stack context for nonlocal goto"
2595 msgstr ""
2596
2597 #. type: Plain text
2598 #: build/C/man3/setjmp.3:32
2599 msgid "B<#include E<lt>setjmp.hE<gt>>"
2600 msgstr ""
2601
2602 #. type: Plain text
2603 #: build/C/man3/setjmp.3:35
2604 #, no-wrap
2605 msgid "B<int setjmp(jmp_buf >I<env>B<);>\n"
2606 msgstr ""
2607
2608 #. type: Plain text
2609 #: build/C/man3/setjmp.3:37
2610 #, no-wrap
2611 msgid "B<int sigsetjmp(sigjmp_buf >I<env>B<, int >I<savesigs>B<);>\n"
2612 msgstr ""
2613
2614 #. type: Plain text
2615 #: build/C/man3/setjmp.3:46
2616 msgid "B<setjmp>(): see NOTES."
2617 msgstr ""
2618
2619 #. type: Plain text
2620 #: build/C/man3/setjmp.3:49
2621 msgid ""
2622 "B<sigsetjmp>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
2623 "_POSIX_C_SOURCE"
2624 msgstr ""
2625
2626 #. type: Plain text
2627 #: build/C/man3/setjmp.3:65
2628 msgid ""
2629 "B<setjmp>()  and B<longjmp>(3)  are useful for dealing with errors and "
2630 "interrupts encountered in a low-level subroutine of a program.  B<setjmp>()  "
2631 "saves the stack context/environment in I<env> for later use by "
2632 "B<longjmp>(3).  The stack context will be invalidated if the function which "
2633 "called B<setjmp>()  returns."
2634 msgstr ""
2635
2636 #. type: Plain text
2637 #: build/C/man3/setjmp.3:78
2638 msgid ""
2639 "B<sigsetjmp>()  is similar to B<setjmp>().  If, and only if, I<savesigs> is "
2640 "nonzero, the process's current signal mask is saved in I<env> and will be "
2641 "restored if a B<siglongjmp>(3)  is later performed with this I<env>."
2642 msgstr ""
2643
2644 #. type: Plain text
2645 #: build/C/man3/setjmp.3:88
2646 msgid ""
2647 "B<setjmp>()  and B<sigsetjmp>()  return 0 if returning directly, and nonzero "
2648 "when returning from B<longjmp>(3)  or B<siglongjmp>(3)  using the saved "
2649 "context."
2650 msgstr ""
2651
2652 #. type: Plain text
2653 #: build/C/man3/setjmp.3:93
2654 msgid ""
2655 "C89, C99, and POSIX.1-2001 specify B<setjmp>().  POSIX.1-2001 specifies "
2656 "B<sigsetjmp>()."
2657 msgstr ""
2658
2659 #. type: Plain text
2660 #: build/C/man3/setjmp.3:129
2661 msgid ""
2662 "POSIX does not specify whether B<setjmp>()  will save the signal mask (to be "
2663 "later restored during B<longjmp>(3)).  In System V it will not.  In 4.3BSD "
2664 "it will, and there is a function B<_setjmp> that will not.  On Linux with "
2665 "glibc versions before 2.19, B<setjmp>()  follows the System V behavior by "
2666 "default, but the BSD behavior is provided if the B<_BSD_SOURCE> feature test "
2667 "macro is defined and none of B<_POSIX_SOURCE>, B<_POSIX_C_SOURCE>, "
2668 "B<_XOPEN_SOURCE>, B<_XOPEN_SOURCE_EXTENDED>, B<_GNU_SOURCE>, or "
2669 "B<_SVID_SOURCE> is defined.  Since glibc 2.19, I<E<lt>setjmp.hE<gt>> exposes "
2670 "only the System V version of B<setjmp>().  Programs that need the BSD "
2671 "semantics should replace calls to B<setjmp>()  with calls to B<sigsetjmp>()  "
2672 "with a nonzero I<savesigs> argument."
2673 msgstr ""
2674
2675 #. type: Plain text
2676 #: build/C/man3/setjmp.3:134
2677 msgid ""
2678 "If you want to portably save and restore signal masks, use B<sigsetjmp>()  "
2679 "and B<siglongjmp>(3)."
2680 msgstr ""
2681
2682 #. type: Plain text
2683 #: build/C/man3/setjmp.3:141
2684 msgid ""
2685 "B<setjmp>()  and B<sigsetjmp>()  make programs hard to understand and "
2686 "maintain.  If possible, an alternative should be used."
2687 msgstr ""
2688
2689 #. type: Plain text
2690 #: build/C/man3/setjmp.3:144
2691 msgid "B<longjmp>(3), B<siglongjmp>(3)"
2692 msgstr ""
2693
2694 #. type: TH
2695 #: build/C/man3/xcrypt.3:13
2696 #, no-wrap
2697 msgid "XCRYPT"
2698 msgstr ""
2699
2700 #. type: Plain text
2701 #: build/C/man3/xcrypt.3:16
2702 msgid "xencrypt, xdecrypt, passwd2des - RFS password encryption"
2703 msgstr ""
2704
2705 #. type: Plain text
2706 #: build/C/man3/xcrypt.3:18
2707 msgid "B<#include E<lt>rpc/des_crypt.hE<gt>>"
2708 msgstr ""
2709
2710 #. type: Plain text
2711 #: build/C/man3/xcrypt.3:20
2712 msgid "B<void passwd2des(char >I<*passwd>B<, char *>I<key>B<);>"
2713 msgstr ""
2714
2715 #. type: Plain text
2716 #: build/C/man3/xcrypt.3:22
2717 msgid "B<int xencrypt(char *>I<secret>B<, char *>I<passwd>B<);>"
2718 msgstr ""
2719
2720 #. type: Plain text
2721 #: build/C/man3/xcrypt.3:24
2722 msgid "B<int xdecrypt(char *>I<secret>B<, char *>I<passwd>B<);>"
2723 msgstr ""
2724
2725 #. type: Plain text
2726 #: build/C/man3/xcrypt.3:40
2727 msgid ""
2728 "The function B<passwd2des>()  takes a character string I<passwd> of "
2729 "arbitrary length and fills a character array I<key> of length 8.  The array "
2730 "I<key> is suitable for use as DES key.  It has odd parity set in bit 0 of "
2731 "each byte.  Both other functions described here use this function to turn "
2732 "their argument I<passwd> into a DES key."
2733 msgstr ""
2734
2735 #.  (over the alphabet 0123456789abcdefABCDEF),
2736 #.  (over the alphabet 0123456789abcdef)
2737 #. type: Plain text
2738 #: build/C/man3/xcrypt.3:57
2739 msgid ""
2740 "The B<xencrypt>()  function takes the ASCII character string I<secret> given "
2741 "in hex, which must have a length that is a multiple of 16, encrypts it using "
2742 "the DES key derived from I<passwd> by B<passwd2des>(), and outputs the "
2743 "result again in I<secret> as a hex string of the same length."
2744 msgstr ""
2745
2746 #. type: Plain text
2747 #: build/C/man3/xcrypt.3:61
2748 msgid "The B<xdecrypt>()  function performs the converse operation."
2749 msgstr ""
2750
2751 #. type: Plain text
2752 #: build/C/man3/xcrypt.3:67
2753 msgid ""
2754 "The functions B<xencrypt>()  and B<xdecrypt>()  return 1 on success and 0 on "
2755 "error."
2756 msgstr ""
2757
2758 #. type: Plain text
2759 #: build/C/man3/xcrypt.3:69
2760 msgid "These functions are available in glibc since version 2.1."
2761 msgstr ""
2762
2763 #. type: Plain text
2764 #: build/C/man3/xcrypt.3:71
2765 msgid "The prototypes are missing from the abovementioned include file."
2766 msgstr ""
2767
2768 #. type: Plain text
2769 #: build/C/man3/xcrypt.3:73
2770 msgid "B<cbc_crypt>(3)"
2771 msgstr ""