OSDN Git Service

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