1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2015-01-21 20:35+0900\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
20 #: build/C/man3/__setfpucw.3:8
26 #: build/C/man3/__setfpucw.3:8
32 #: build/C/man3/__setfpucw.3:8 build/C/man3/queue.3:39
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
40 msgid "Linux Programmer's Manual"
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
50 #: build/C/man3/__setfpucw.3:11
51 msgid "__setfpucw - set FPU control word on i386 architecture (obsolete)"
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
61 #: build/C/man3/__setfpucw.3:13
62 msgid "B<#include E<lt>i386/fpu_control.hE<gt>>"
66 #: build/C/man3/__setfpucw.3:15
67 msgid "B<void __setfpucw(unsigned short >I<control_word>B<);>"
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
77 #: build/C/man3/__setfpucw.3:22
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."
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
91 #: build/C/man3/__setfpucw.3:24
92 msgid "This function was a nonstandard GNU extension."
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
102 #: build/C/man3/__setfpucw.3:43
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)."
114 #: build/C/man3/__setfpucw.3:51
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."
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
127 #: build/C/man3/__setfpucw.3:53
128 msgid "B<__setfpucw(0x1372)>"
132 #: build/C/man3/__setfpucw.3:55
133 msgid "Set FPU control word on the i386 architecture to"
137 #: build/C/man3/__setfpucw.3:57
139 msgid " - extended precision\n"
143 #: build/C/man3/__setfpucw.3:59
145 msgid " - rounding to nearest\n"
149 #: build/C/man3/__setfpucw.3:61
151 msgid " - exceptions on overflow, zero divide and NaN\n"
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
161 #: build/C/man3/__setfpucw.3:63
162 msgid "B<feclearexcept>(3)"
166 #: build/C/man3/__setfpucw.3:64
167 msgid "I<E<lt>fpu_control.hE<gt>>"
171 #: build/C/man3/addseverity.3:9
177 #: build/C/man3/addseverity.3:9 build/C/man3/backtrace.3:27
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
189 #: build/C/man3/addseverity.3:12
190 msgid "addseverity - introduce new severity classes"
194 #: build/C/man3/addseverity.3:16
196 msgid "B<#include E<lt>fmtmsg.hE<gt>>\n"
200 #: build/C/man3/addseverity.3:18
202 msgid "B<int addseverity(int >I<severity>B<, const char *>I<s>B<);>\n"
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)):"
211 #: build/C/man3/addseverity.3:27
212 msgid "B<addseverity>(): _SVID_SOURCE"
216 #: build/C/man3/addseverity.3:49
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."
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
235 #: build/C/man3/addseverity.3:57
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."
243 #: build/C/man3/addseverity.3:57 build/C/man3/backtrace.3:137 build/C/man3/xcrypt.3:67
249 #: build/C/man3/addseverity.3:60
250 msgid "B<addseverity>() is provided in glibc since version 2.1."
254 #: build/C/man3/addseverity.3:67
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."
261 #: build/C/man3/addseverity.3:70
263 "New severity classes can also be added by setting the environment variable "
268 #: build/C/man3/addseverity.3:71
273 #: build/C/man3/argz_add.3:10
279 #: build/C/man3/argz_add.3:10 build/C/man3/envz_add.3:10
285 #: build/C/man3/argz_add.3:15
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"
293 #: build/C/man3/argz_add.3:18
295 msgid "B<#include E<lt>argz.hE<gt>>\n"
299 #: build/C/man3/argz_add.3:21
302 "B<error_t argz_add(char **>I<argz>B<, size_t *>I<argz_len>B<, const char "
307 #: build/C/man3/argz_add.3:24
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"
315 #: build/C/man3/argz_add.3:27
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"
323 #: build/C/man3/argz_add.3:29
325 msgid "B<size_t argz_count(const char *>I<argz>B<, size_t >I<argz_len>B<);>\n"
329 #: build/C/man3/argz_add.3:32
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"
337 #: build/C/man3/argz_add.3:35
340 "B<error_t argz_create_sep(const char *>I<str>B<, int >I<sep>B<, char "
342 "B< size_t *>I<argz_len>B<);>\n"
346 #: build/C/man3/argz_add.3:37
349 "B<void argz_delete(char **>I<argz>B<, size_t *>I<argz_len>B<, char "
354 #: build/C/man3/argz_add.3:39
357 "B<void argz_extract(const char *>I<argz>B<, size_t >I<argz_len>B<, char "
362 #: build/C/man3/argz_add.3:42
365 "B<error_t argz_insert(char **>I<argz>B<, size_t *>I<argz_len>B<, char "
367 "B< const char *>I<entry>B<);>\n"
371 #: build/C/man3/argz_add.3:44
374 "B<char *argz_next(const char *>I<argz>B<, size_t >I<argz_len>B<, const char "
379 #: build/C/man3/argz_add.3:48
382 "B<error_t argz_replace(char **>I<argz>B<, size_t *>I<argz_len>B<, const char "
384 "B< const char *>I<with>B<, unsigned int "
385 "*>I<replace_count>B<);>\n"
389 #: build/C/man3/argz_add.3:50
391 msgid "B<void argz_stringify(char *>I<argz>B<, size_t >I<len>B<, int >I<sep>B<);>\n"
395 #: build/C/man3/argz_add.3:53 build/C/man3/envz_add.3:38
396 msgid "These functions are glibc-specific."
400 #: build/C/man3/argz_add.3:58
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."
409 #: build/C/man3/argz_add.3:67
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."
418 #: build/C/man3/argz_add.3:77
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>."
425 #: build/C/man3/argz_add.3:85
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."
433 #: build/C/man3/argz_add.3:99
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>.)"
441 #: build/C/man3/argz_add.3:104
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>)."
448 #: build/C/man3/argz_add.3:112
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>)."
455 #: build/C/man3/argz_add.3:120
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>."
463 #: build/C/man3/argz_add.3:130
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>."
470 #: build/C/man3/argz_add.3:145
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."
480 #: build/C/man3/argz_add.3:164
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."
489 #: build/C/man3/argz_add.3:173
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."
497 #: build/C/man3/argz_add.3:185
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."
505 #: build/C/man3/argz_add.3:192
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>."
513 #: build/C/man3/argz_add.3:198
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 "
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."
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
532 #: build/C/man3/argz_add.3:204
534 "Argz vectors without a terminating null byte may lead to Segmentation "
539 #: build/C/man3/argz_add.3:205
540 msgid "B<envz_add>(3)"
544 #: build/C/man3/backtrace.3:27
550 #: build/C/man3/backtrace.3:31
552 "backtrace, backtrace_symbols, backtrace_symbols_fd - support for application "
557 #: build/C/man3/backtrace.3:33
558 msgid "B<#include E<lt>execinfo.hE<gt>>"
562 #: build/C/man3/backtrace.3:38
563 msgid "B<int backtrace(void> B<**>I<buffer>B<,> B<int> I<size>B<);>"
567 #: build/C/man3/backtrace.3:43
569 "B<char **backtrace_symbols(void *const> B<*>I<buffer>B<,> B<int> "
574 #: build/C/man3/backtrace.3:50
576 "B<void backtrace_symbols_fd(void *const> B<*>I<buffer>B<,> B<int> "
577 "I<size>B<,> B<int> I<fd>B<);>"
581 #: build/C/man3/backtrace.3:78
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."
595 #: build/C/man3/backtrace.3:103
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.)"
610 #: build/C/man3/backtrace.3:118
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."
620 #: build/C/man3/backtrace.3:130
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 "
630 #: build/C/man3/backtrace.3:137
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."
637 #: build/C/man3/backtrace.3:143
639 "B<backtrace>(), B<backtrace_symbols>(), and B<backtrace_symbols_fd>() are "
640 "provided in glibc since version 2.1."
644 #: build/C/man3/backtrace.3:145
645 msgid "These functions are GNU extensions."
649 #: build/C/man3/backtrace.3:149
651 "These functions make some assumptions about how a function's return address "
652 "is stored on the stack. Note the following:"
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
662 #: build/C/man3/backtrace.3:155
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."
669 #: build/C/man3/backtrace.3:157
670 msgid "Inlined functions do not have stack frames."
674 #: build/C/man3/backtrace.3:159
675 msgid "Tail-call optimization causes one stack frame to replace another."
679 #: build/C/man3/backtrace.3:167
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."
688 #: build/C/man3/backtrace.3:174
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:"
696 #: build/C/man3/backtrace.3:188
699 "$B< cc -rdynamic prog.c -o prog>\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"
713 #: build/C/man3/backtrace.3:190 build/C/man3/offsetof.3:76
715 msgid "Program source"
719 #: build/C/man3/backtrace.3:197
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"
729 #: build/C/man3/backtrace.3:205
737 " void *buffer[100];\n"
742 #: build/C/man3/backtrace.3:208
745 " nptrs = backtrace(buffer, SIZE);\n"
746 " printf(\"backtrace() returned %d addresses\\en\", nptrs);\n"
750 #: build/C/man3/backtrace.3:211
753 " /* The call backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO)\n"
754 " would produce similar output to the following: */\n"
758 #: build/C/man3/backtrace.3:217
761 " strings = backtrace_symbols(buffer, nptrs);\n"
762 " if (strings == NULL) {\n"
763 " perror(\"backtrace_symbols\");\n"
764 " exit(EXIT_FAILURE);\n"
769 #: build/C/man3/backtrace.3:220
772 " for (j = 0; j E<lt> nptrs; j++)\n"
773 " printf(\"%s\\en\", strings[j]);\n"
777 #: build/C/man3/backtrace.3:223
785 #: build/C/man3/backtrace.3:229
788 "static void /* \"static\" means don\\(aqt export the symbol... */\n"
796 #: build/C/man3/backtrace.3:238
800 "myfunc(int ncalls)\n"
802 " if (ncalls E<gt> 1)\n"
803 " myfunc(ncalls - 1);\n"
810 #: build/C/man3/backtrace.3:246
814 "main(int argc, char *argv[])\n"
816 " if (argc != 2) {\n"
817 " fprintf(stderr, \"%s num-calls\\en\", argv[0]);\n"
818 " exit(EXIT_FAILURE);\n"
823 #: build/C/man3/backtrace.3:250
826 " myfunc(atoi(argv[1]));\n"
827 " exit(EXIT_SUCCESS);\n"
832 #: build/C/man3/backtrace.3:255
833 msgid "B<gcc>(1), B<ld>(1), B<dlopen>(3), B<malloc>(3)"
837 #: build/C/man3/basename.3:27
843 #: build/C/man3/basename.3:27
849 #: build/C/man3/basename.3:30
850 msgid "basename, dirname - parse pathname components"
854 #: build/C/man3/basename.3:33
856 msgid "B<#include E<lt>libgen.hE<gt>>\n"
860 #: build/C/man3/basename.3:35
862 msgid "B<char *dirname(char *>I<path>B<);>\n"
866 #: build/C/man3/basename.3:37
868 msgid "B<char *basename(char *>I<path>B<);>\n"
872 #: build/C/man3/basename.3:42
873 msgid "Warning: there are two different functions B<basename>() - see below."
877 #: build/C/man3/basename.3:55
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 "
888 #: build/C/man3/basename.3:78
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 \".\"."
898 #: build/C/man3/basename.3:84
900 "Concatenating the string returned by B<dirname>(), a \"/\", and the string "
901 "returned by B<basename>() yields a complete pathname."
905 #: build/C/man3/basename.3:93
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."
912 #: build/C/man3/basename.3:102
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."
922 #: build/C/man3/basename.3:109
924 "The following list of examples (taken from SUSv2) shows the strings "
925 "returned by B<dirname>() and B<basename>() for different paths:"
929 #: build/C/man3/basename.3:113
931 msgid "path \tdirname\tbasename\n"
935 #: build/C/man3/basename.3:114
937 msgid "/usr/lib\t/usr\tlib\n"
941 #: build/C/man3/basename.3:115
943 msgid "/usr/ \t/\tusr\n"
947 #: build/C/man3/basename.3:116
949 msgid "usr \t.\tusr\n"
953 #: build/C/man3/basename.3:117
959 #: build/C/man3/basename.3:118
961 msgid "\\&. \t.\t.\n"
965 #: build/C/man3/basename.3:119
967 msgid "\\&.. \t.\t..\n"
971 #: build/C/man3/basename.3:129
973 "Both B<dirname>() and B<basename>() return pointers to null-terminated "
974 "strings. (Do not pass these pointers to B<free>(3).)"
978 #: build/C/man3/basename.3:129 build/C/man3/ftok.3:70
984 #: build/C/man3/basename.3:130 build/C/man3/ftok.3:71
986 msgid "Multithreading (see pthreads(7))"
990 #: build/C/man3/basename.3:136
991 msgid "The B<basename>() and B<dirname>() functions are thread-safe."
995 #: build/C/man3/basename.3:138 build/C/man3/ftok.3:77
996 msgid "POSIX.1-2001."
1000 #: build/C/man3/basename.3:143
1002 "There are two different versions of B<basename>() - the POSIX version "
1003 "described above, and the GNU version, which one gets after"
1007 #: build/C/man3/basename.3:147
1009 msgid "B< #define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
1013 #: build/C/man3/basename.3:149
1015 msgid "B<#include E<lt>string.hE<gt>>\n"
1019 #: build/C/man3/basename.3:157
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>()."
1027 #: build/C/man3/basename.3:163
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."
1034 #: build/C/man3/basename.3:171
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."
1044 #: build/C/man3/basename.3:176
1047 "char *dirc, *basec, *bname, *dname;\n"
1048 "char *path = \"/etc/passwd\";\n"
1052 #: build/C/man3/basename.3:182
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"
1063 #: build/C/man3/basename.3:186
1064 msgid "B<basename>(1), B<dirname>(1)"
1068 #: build/C/man3/envz_add.3:10
1074 #: build/C/man3/envz_add.3:14
1076 "envz_add, envz_entry, envz_get, envz_merge, envz_remove, envz_strip - "
1077 "environment string support"
1081 #: build/C/man3/envz_add.3:17
1083 msgid "B<#include E<lt>envz.hE<gt>>\n"
1087 #: build/C/man3/envz_add.3:20
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"
1095 #: build/C/man3/envz_add.3:23
1098 "B<char *envz_entry(const char *>I<envz>B<, size_t >I<envz_len>B<, const char "
1103 #: build/C/man3/envz_add.3:26
1106 "B<char *envz_get(const char *>I<envz>B<, size_t >I<envz_len>B<, const char "
1111 #: build/C/man3/envz_add.3:30
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"
1120 #: build/C/man3/envz_add.3:33
1123 "B<void envz_remove(char **>I<envz>B<, size_t *>I<envz_len>B<, const char "
1128 #: build/C/man3/envz_add.3:35
1130 msgid "B<void envz_strip(char **>I<envz>B<, size_t *>I<envz_len>B<);>\n"
1134 #: build/C/man3/envz_add.3:48
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 \"\".)"
1145 #: build/C/man3/envz_add.3:50
1146 msgid "These functions are for handling envz vectors."
1150 #: build/C/man3/envz_add.3:69
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."
1159 #: build/C/man3/envz_add.3:76
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."
1166 #: build/C/man3/envz_add.3:87
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 "
1175 #: build/C/man3/envz_add.3:102
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."
1183 #: build/C/man3/envz_add.3:109
1185 "B<envz_remove>() removes the entry for I<name> from (I<*envz>,\\ "
1186 "I<*envz_len>) if there was one."
1190 #: build/C/man3/envz_add.3:112
1191 msgid "B<envz_strip>() removes all entries with value NULL."
1195 #: build/C/man3/envz_add.3:118
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 "
1203 #: build/C/man3/envz_add.3:126
1206 "#include E<lt>stdio.hE<gt>\n"
1207 "#include E<lt>stdlib.hE<gt>\n"
1208 "#include E<lt>envz.hE<gt>\n"
1212 #: build/C/man3/envz_add.3:132
1216 "main(int argc, char *argv[], char *envp[])\n"
1218 " int i, e_len = 0;\n"
1223 #: build/C/man3/envz_add.3:135
1226 " for (i = 0; envp[i] != NULL; i++)\n"
1227 " e_len += strlen(envp[i]) + 1;\n"
1231 #: build/C/man3/envz_add.3:142
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"
1243 #: build/C/man3/envz_add.3:144
1244 msgid "B<argz_add>(3)"
1248 #: build/C/man3/ftok.3:29
1254 #: build/C/man3/ftok.3:29 build/C/man3/xcrypt.3:13
1260 #: build/C/man3/ftok.3:32
1261 msgid "ftok - convert a pathname and a project identifier to a System V IPC key"
1265 #: build/C/man3/ftok.3:36
1268 "B<#include E<lt>sys/types.hE<gt>>\n"
1269 "B<#include E<lt>sys/ipc.hE<gt>>\n"
1273 #: build/C/man3/ftok.3:39
1274 msgid "B<key_t ftok(const char *>I<pathname>B<, int >I<proj_id>B<);>"
1278 #: build/C/man3/ftok.3:54
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)."
1288 #: build/C/man3/ftok.3:61
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 "
1297 #: build/C/man3/ftok.3:70
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 "
1305 #: build/C/man3/ftok.3:75
1306 msgid "The B<ftok>() function is thread-safe."
1310 #: build/C/man3/ftok.3:79
1311 msgid "On some ancient systems, the prototype was:"
1315 #: build/C/man3/ftok.3:82
1316 msgid "B<key_t ftok(char *>I<pathname>B<, char >I<proj_id>B<);>"
1320 #: build/C/man3/ftok.3:94
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."
1328 #: build/C/man3/ftok.3:106
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>."
1338 #: build/C/man3/ftok.3:111
1339 msgid "B<msgget>(2), B<semget>(2), B<shmget>(2), B<stat>(2), B<svipc>(7)"
1343 #: build/C/man3/longjmp.3:27
1349 #: build/C/man3/longjmp.3:27
1355 #: build/C/man3/longjmp.3:30
1356 msgid "longjmp, siglongjmp - nonlocal jump to a saved stack context"
1360 #: build/C/man3/longjmp.3:33
1362 msgid "B<#include E<lt>setjmp.hE<gt>>\n"
1366 #: build/C/man3/longjmp.3:35
1368 msgid "B<void longjmp(jmp_buf >I<env>B<, int >I<val>B<);>\n"
1372 #: build/C/man3/longjmp.3:37
1374 msgid "B<void siglongjmp(sigjmp_buf >I<env>B<, int >I<val>B<);>\n"
1378 #: build/C/man3/longjmp.3:46
1380 "B<siglongjmp>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
1385 #: build/C/man3/longjmp.3:70
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 "
1398 #: build/C/man3/longjmp.3:88
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)."
1407 #: build/C/man3/longjmp.3:90
1408 msgid "These functions never return."
1412 #: build/C/man3/longjmp.3:95
1414 "C89, C99, and POSIX.1-2001 specify B<longjmp>(). POSIX.1-2001 specifies "
1419 #: build/C/man3/longjmp.3:105
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>()."
1427 #: build/C/man3/longjmp.3:109
1429 "The values of automatic variables are unspecified after a call to "
1430 "B<longjmp>() if they meet all the following criteria:"
1434 #: build/C/man3/longjmp.3:109 build/C/man3/longjmp.3:113 build/C/man3/longjmp.3:119
1440 #: build/C/man3/longjmp.3:113
1442 "they are local to the function that made the corresponding B<setjmp>(3) "
1447 #: build/C/man3/longjmp.3:119
1449 "their values are changed between the calls to B<setjmp>(3) and "
1454 #: build/C/man3/longjmp.3:122
1455 msgid "they are not declared as I<volatile>."
1459 #: build/C/man3/longjmp.3:125
1460 msgid "Analogous remarks apply for B<siglongjmp>()."
1464 #: build/C/man3/longjmp.3:132
1466 "B<longjmp>() and B<siglongjmp>() make programs hard to understand and "
1467 "maintain. If possible, an alternative should be used."
1471 #: build/C/man3/longjmp.3:134
1472 msgid "B<setjmp>(3), B<sigsetjmp>(3)"
1476 #: build/C/man3/offsetof.3:28
1482 #: build/C/man3/offsetof.3:28
1488 #: build/C/man3/offsetof.3:31
1489 msgid "offsetof - offset of a structure member"
1493 #: build/C/man3/offsetof.3:34
1495 msgid "B<#include E<lt>stddef.hE<gt>>\n"
1499 #: build/C/man3/offsetof.3:36
1501 msgid "B<size_t offsetof(>I<type>B<, >I<member>B<);>\n"
1505 #: build/C/man3/offsetof.3:44
1507 "The macro B<offsetof>() returns the offset of the field I<member> from the "
1508 "start of the structure I<type>."
1512 #: build/C/man3/offsetof.3:51
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."
1522 #: build/C/man3/offsetof.3:56
1524 "A compiler error will result if I<member> is not aligned to a byte boundary "
1525 "(i.e., it is a bit field)."
1529 #: build/C/man3/offsetof.3:63
1531 "B<offsetof>() returns the offset of the given I<member> within the given "
1532 "I<type>, in units of bytes."
1536 #: build/C/man3/offsetof.3:65
1537 msgid "C89, C99, POSIX.1-2001."
1541 #: build/C/man3/offsetof.3:69
1543 "On a Linux/i386 system, when compiled using the default B<gcc>(1) options, "
1544 "the program below produces the following output:"
1548 #: build/C/man3/offsetof.3:75
1552 "offsets: i=0; c=4; d=8 a=16\n"
1553 "sizeof(struct s)=16\n"
1557 #: build/C/man3/offsetof.3:82
1560 "#include E<lt>stddef.hE<gt>\n"
1561 "#include E<lt>stdio.hE<gt>\n"
1562 "#include E<lt>stdlib.hE<gt>\n"
1566 #: build/C/man3/offsetof.3:92
1581 #: build/C/man3/offsetof.3:94
1583 msgid " /* Output is compiler dependent */\n"
1587 #: build/C/man3/offsetof.3:99
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"
1597 #: build/C/man3/offsetof.3:102
1600 " exit(EXIT_SUCCESS);\n"
1605 #: build/C/man3/program_invocation_name.3:24
1607 msgid "INVOCATION_NAME"
1611 #: build/C/man3/program_invocation_name.3:24
1617 #: build/C/man3/program_invocation_name.3:28
1619 "program_invocation_name, program_invocation_short_name - obtain name used to "
1620 "invoke calling program"
1624 #: build/C/man3/program_invocation_name.3:32
1627 "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
1628 "B<#include E<lt>errno.hE<gt>>\n"
1632 #: build/C/man3/program_invocation_name.3:35
1635 "B<extern char *>I<program_invocation_name>B<;>\n"
1636 "B<extern char *>I<program_invocation_short_name>B<;>\n"
1640 #: build/C/man3/program_invocation_name.3:46
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."
1648 #: build/C/man3/program_invocation_name.3:53
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."
1657 #: build/C/man3/program_invocation_name.3:56
1659 "These variables are automatically initialized by the glibc run-time startup "
1664 #: build/C/man3/program_invocation_name.3:59
1666 "These variables are GNU extensions, and should not be used in programs "
1667 "intended to be portable."
1671 #: build/C/man3/program_invocation_name.3:63
1673 "The Linux-specific I</proc/[number]/cmdline> file provides access to similar "
1678 #: build/C/man3/program_invocation_name.3:64
1683 #: build/C/man3/queue.3:39
1689 #: build/C/man3/queue.3:39
1695 #: build/C/man3/queue.3:48
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"
1706 #: build/C/man3/queue.3:51
1708 msgid "B<#include E<lt>sys/queue.hE<gt>>\n"
1712 #: build/C/man3/queue.3:60
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"
1726 #: build/C/man3/queue.3:71
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 "
1743 #: build/C/man3/queue.3:85
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"
1762 #: build/C/man3/queue.3:90
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:"
1770 #: build/C/man3/queue.3:95
1771 msgid "Insertion of a new entry at the head of the list."
1775 #: build/C/man3/queue.3:97
1776 msgid "Insertion of a new entry after any element in the list."
1780 #: build/C/man3/queue.3:99
1781 msgid "Removal of any entry in the list."
1785 #: build/C/man3/queue.3:101
1786 msgid "Forward traversal through the list."
1790 #: build/C/man3/queue.3:106
1792 "Lists are the simplest of the three data structures and support only the "
1793 "above functionality."
1797 #: build/C/man3/queue.3:108
1798 msgid "Tail queues add the following functionality:"
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."
1807 #: build/C/man3/queue.3:114 build/C/man3/queue.3:141
1812 #: build/C/man3/queue.3:117 build/C/man3/queue.3:144
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."
1823 #: build/C/man3/queue.3:119 build/C/man3/queue.3:146
1829 #: build/C/man3/queue.3:121 build/C/man3/queue.3:148
1830 msgid "Each head entry requires two pointers rather than one."
1834 #: build/C/man3/queue.3:121 build/C/man3/queue.3:148
1840 #: build/C/man3/queue.3:124
1842 "Code size is about 15% greater and operations run about 20% slower than "
1847 #: build/C/man3/queue.3:128
1848 msgid "Circular queues add the following functionality:"
1852 #: build/C/man3/queue.3:135
1853 msgid "Entries can be added before another entry."
1857 #: build/C/man3/queue.3:137
1858 msgid "They may be traversed backward, from tail to head."
1862 #: build/C/man3/queue.3:150
1863 msgid "The termination condition for traversal is more complex."
1867 #: build/C/man3/queue.3:150
1873 #: build/C/man3/queue.3:153
1875 "Code size is about 40% greater and operations run about 45% slower than "
1880 #: build/C/man3/queue.3:176
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."
1891 #: build/C/man3/queue.3:176
1897 #: build/C/man3/queue.3:189
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:"
1908 #: build/C/man3/queue.3:193
1910 msgid "LIST_HEAD(HEADNAME, TYPE) head;\n"
1914 #: build/C/man3/queue.3:202
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:"
1922 #: build/C/man3/queue.3:206 build/C/man3/queue.3:299 build/C/man3/queue.3:401
1924 msgid "struct HEADNAME *headp;\n"
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.)"
1933 #: build/C/man3/queue.3:219
1935 "The macro B<LIST_ENTRY> declares a structure that connects the elements in "
1940 #: build/C/man3/queue.3:224
1941 msgid "The macro B<LIST_INIT> initializes the list referenced by I<head>."
1945 #: build/C/man3/queue.3:230
1947 "The macro B<LIST_INSERT_HEAD> inserts the new element I<elm> at the head of "
1952 #: build/C/man3/queue.3:237
1954 "The macro B<LIST_INSERT_AFTER> inserts the new element I<elm> after the "
1955 "element I<listelm>."
1959 #: build/C/man3/queue.3:243
1960 msgid "The macro B<LIST_REMOVE> removes the element I<elm> from the list."
1964 #: build/C/man3/queue.3:243
1966 msgid "List example"
1970 #: build/C/man3/queue.3:252
1973 "LIST_HEAD(listhead, entry) head;\n"
1974 "struct listhead *headp; /* List head. */\n"
1977 " LIST_ENTRY(entry) entries; /* List. */\n"
1979 "} *n1, *n2, *np;\n"
1983 #: build/C/man3/queue.3:254
1985 msgid "LIST_INIT(&head); /* Initialize the list. */\n"
1989 #: build/C/man3/queue.3:257
1992 "n1 = malloc(sizeof(struct entry)); /* Insert at the head. */\n"
1993 "LIST_INSERT_HEAD(&head, n1, entries);\n"
1997 #: build/C/man3/queue.3:263
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"
2007 #. FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=1506
2009 #: build/C/man3/queue.3:267
2012 "while (head.lh_first != NULL) /* Delete. */\n"
2013 " LIST_REMOVE(head.lh_first, entries);\n"
2017 #: build/C/man3/queue.3:268
2023 #: build/C/man3/queue.3:282
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:"
2035 #: build/C/man3/queue.3:286
2037 msgid "TAILQ_HEAD(HEADNAME, TYPE) head;\n"
2041 #: build/C/man3/queue.3:295
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:"
2049 #: build/C/man3/queue.3:312
2051 "The macro B<TAILQ_ENTRY> declares a structure that connects the elements in "
2056 #: build/C/man3/queue.3:317
2057 msgid "The macro B<TAILQ_INIT> initializes the tail queue referenced by I<head>."
2061 #: build/C/man3/queue.3:323
2063 "The macro B<TAILQ_INSERT_HEAD> inserts the new element I<elm> at the head of "
2068 #: build/C/man3/queue.3:329
2070 "The macro B<TAILQ_INSERT_TAIL> inserts the new element I<elm> at the end of "
2075 #: build/C/man3/queue.3:336
2077 "The macro B<TAILQ_INSERT_AFTER> inserts the new element I<elm> after the "
2078 "element I<listelm>."
2082 #: build/C/man3/queue.3:342
2083 msgid "The macro B<TAILQ_REMOVE> removes the element I<elm> from the tail queue."
2087 #: build/C/man3/queue.3:342
2089 msgid "Tail queue example"
2093 #: build/C/man3/queue.3:351
2096 "TAILQ_HEAD(tailhead, entry) head;\n"
2097 "struct tailhead *headp; /* Tail queue head. */\n"
2100 " TAILQ_ENTRY(entry) entries; /* Tail queue. */\n"
2102 "} *n1, *n2, *np;\n"
2106 #: build/C/man3/queue.3:353
2108 msgid "TAILQ_INIT(&head); /* Initialize the queue. */\n"
2112 #: build/C/man3/queue.3:356
2115 "n1 = malloc(sizeof(struct entry)); /* Insert at the head. */\n"
2116 "TAILQ_INSERT_HEAD(&head, n1, entries);\n"
2120 #: build/C/man3/queue.3:359
2123 "n1 = malloc(sizeof(struct entry)); /* Insert at the tail. */\n"
2124 "TAILQ_INSERT_TAIL(&head, n1, entries);\n"
2128 #: build/C/man3/queue.3:368
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"
2137 "while (head.tqh_first != NULL)\n"
2138 " TAILQ_REMOVE(&head, head.tqh_first, entries);\n"
2142 #: build/C/man3/queue.3:369
2144 msgid "Circular queues"
2148 #: build/C/man3/queue.3:384
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:"
2161 #: build/C/man3/queue.3:388
2163 msgid "CIRCLEQ_HEAD(HEADNAME, TYPE) head;\n"
2167 #: build/C/man3/queue.3:397
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:"
2175 #: build/C/man3/queue.3:414
2177 "The macro B<CIRCLEQ_ENTRY> declares a structure that connects the elements "
2178 "in the circular queue."
2182 #: build/C/man3/queue.3:419
2184 "The macro B<CIRCLEQ_INIT> initializes the circular queue referenced by "
2189 #: build/C/man3/queue.3:425
2191 "The macro B<CIRCLEQ_INSERT_HEAD> inserts the new element I<elm> at the head "
2192 "of the circular queue."
2196 #: build/C/man3/queue.3:431
2198 "The macro B<CIRCLEQ_INSERT_TAIL> inserts the new element I<elm> at the end "
2199 "of the circular queue."
2203 #: build/C/man3/queue.3:438
2205 "The macro B<CIRCLEQ_INSERT_AFTER> inserts the new element I<elm> after the "
2206 "element I<listelm>."
2210 #: build/C/man3/queue.3:445
2212 "The macro B<CIRCLEQ_INSERT_BEFORE> inserts the new element I<elm> before the "
2213 "element I<listelm>."
2217 #: build/C/man3/queue.3:451
2219 "The macro B<CIRCLEQ_REMOVE> removes the element I<elm> from the circular "
2224 #: build/C/man3/queue.3:451
2226 msgid "Circular queue example"
2230 #: build/C/man3/queue.3:460
2233 "CIRCLEQ_HEAD(circleq, entry) head;\n"
2234 "struct circleq *headp; /* Circular queue head. */\n"
2237 " CIRCLEQ_ENTRY(entry) entries; /* Circular queue. */\n"
2239 "} *n1, *n2, *np;\n"
2243 #: build/C/man3/queue.3:462
2245 msgid "CIRCLEQ_INIT(&head); /* Initialize the circular queue. */\n"
2249 #: build/C/man3/queue.3:465
2252 "n1 = malloc(sizeof(struct entry)); /* Insert at the head. */\n"
2253 "CIRCLEQ_INSERT_HEAD(&head, n1, entries);\n"
2257 #: build/C/man3/queue.3:468
2260 "n1 = malloc(sizeof(struct entry)); /* Insert at the tail. */\n"
2261 "CIRCLEQ_INSERT_TAIL(&head, n1, entries);\n"
2265 #: build/C/man3/queue.3:471
2268 "n2 = malloc(sizeof(struct entry)); /* Insert after. */\n"
2269 "CIRCLEQ_INSERT_AFTER(&head, n1, n2, entries);\n"
2273 #: build/C/man3/queue.3:484
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"
2282 " /* Reverse traversal. */\n"
2283 "for (np = head.cqh_last; np != (void *)&head; np = "
2284 "np-E<gt>entries.cqe_prev)\n"
2287 "while (head.cqh_first != (void *)&head)\n"
2288 " CIRCLEQ_REMOVE(&head, head.cqh_first, entries);\n"
2292 #: build/C/man3/queue.3:490
2294 "Not in POSIX.1-2001. Present on the BSDs. The queue functions first "
2295 "appeared in 4.4BSD."
2299 #: build/C/man3/realpath.3:28
2305 #: build/C/man3/realpath.3:28
2311 #: build/C/man3/realpath.3:31
2312 msgid "realpath - return the canonicalized absolute pathname"
2316 #: build/C/man3/realpath.3:35
2319 "B<#include E<lt>limits.hE<gt>>\n"
2320 "B<#include E<lt>stdlib.hE<gt>>\n"
2324 #: build/C/man3/realpath.3:37
2326 msgid "B<char *realpath(const char *>I<path>B<, char *>I<resolved_path>B<);>\n"
2330 #: build/C/man3/realpath.3:45
2331 msgid "B<realpath>():"
2335 #: build/C/man3/realpath.3:49
2337 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
2338 "_XOPEN_SOURCE_EXTENDED"
2342 #: build/C/man3/realpath.3:71
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."
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
2358 #. function first appeared in 4.4BSD, contributed by Jan-Simon Pendry.
2360 #: build/C/man3/realpath.3:91
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)."
2369 #: build/C/man3/realpath.3:96
2371 "If there is no error, B<realpath>() returns a pointer to the "
2376 #: build/C/man3/realpath.3:103
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."
2383 #: build/C/man3/realpath.3:103
2389 #: build/C/man3/realpath.3:104
2395 #: build/C/man3/realpath.3:107
2396 msgid "Read or search permission was denied for a component of the path prefix."
2400 #: build/C/man3/realpath.3:107
2405 #. (In libc5 this would just cause a segfault.)
2407 #: build/C/man3/realpath.3:116
2409 "I<path> is NULL. (In glibc versions before 2.3, this error is also returned "
2410 "if I<resolved_path> is NULL.)"
2414 #: build/C/man3/realpath.3:116
2420 #: build/C/man3/realpath.3:119
2421 msgid "An I/O error occurred while reading from the filesystem."
2425 #: build/C/man3/realpath.3:119
2431 #: build/C/man3/realpath.3:122
2432 msgid "Too many symbolic links were encountered in translating the pathname."
2436 #: build/C/man3/realpath.3:122
2438 msgid "B<ENAMETOOLONG>"
2442 #: build/C/man3/realpath.3:129
2444 "A component of a pathname exceeded B<NAME_MAX> characters, or an entire "
2445 "pathname exceeded B<PATH_MAX> characters."
2449 #: build/C/man3/realpath.3:129
2455 #: build/C/man3/realpath.3:132
2456 msgid "The named file does not exist."
2460 #: build/C/man3/realpath.3:132
2466 #: build/C/man3/realpath.3:135
2467 msgid "A component of the path prefix is not a directory."
2471 #: build/C/man3/realpath.3:137
2472 msgid "4.4BSD, POSIX.1-2001."
2476 #: build/C/man3/realpath.3:142
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 "
2484 #: build/C/man3/realpath.3:154
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"
2493 #: build/C/man3/realpath.3:164
2497 " path_max = PATH_MAX;\n"
2499 " path_max = pathconf(path, _PC_PATH_MAX);\n"
2500 " if (path_max E<lt>= 0)\n"
2501 " path_max = 4096;\n"
2506 #: build/C/man3/realpath.3:168
2507 msgid "(But see the BUGS section.)"
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.
2514 #. The 4.4BSD, Linux and SUSv2 versions always return an absolute
2516 #. Solaris may return a relative pathname when the
2518 #. argument is relative.
2521 #. is given in \fI<unistd.h>\fP in libc4 and libc5,
2522 #. but in \fI<stdlib.h>\fP everywhere else.
2524 #: build/C/man3/realpath.3:182
2526 msgid "GNU extensions"
2530 #: build/C/man3/realpath.3:193
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>."
2538 #. The libc4 and libc5 implementation contained a buffer overflow
2539 #. (fixed in libc-5.4.13).
2540 #. Thus, set-user-ID programs like
2542 #. needed a private version.
2544 #: build/C/man3/realpath.3:224
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."
2559 #: build/C/man3/realpath.3:230
2561 "B<realpath>(1), B<readlink>(2), B<canonicalize_file_name>(3), B<getcwd>(3), "
2562 "B<pathconf>(3), B<sysconf>(3)"
2566 #: build/C/man3/setjmp.3:27
2572 #: build/C/man3/setjmp.3:27
2578 #: build/C/man3/setjmp.3:30
2579 msgid "setjmp, sigsetjmp - save stack context for nonlocal goto"
2583 #: build/C/man3/setjmp.3:32
2584 msgid "B<#include E<lt>setjmp.hE<gt>>"
2588 #: build/C/man3/setjmp.3:35
2590 msgid "B<int setjmp(jmp_buf >I<env>B<);>\n"
2594 #: build/C/man3/setjmp.3:37
2596 msgid "B<int sigsetjmp(sigjmp_buf >I<env>B<, int >I<savesigs>B<);>\n"
2600 #: build/C/man3/setjmp.3:46
2601 msgid "B<setjmp>(): see NOTES."
2605 #: build/C/man3/setjmp.3:49
2607 "B<sigsetjmp>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
2612 #: build/C/man3/setjmp.3:65
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."
2622 #: build/C/man3/setjmp.3:78
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>."
2630 #: build/C/man3/setjmp.3:88
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 "
2638 #: build/C/man3/setjmp.3:93
2640 "C89, C99, and POSIX.1-2001 specify B<setjmp>(). POSIX.1-2001 specifies "
2645 #: build/C/man3/setjmp.3:129
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."
2661 #: build/C/man3/setjmp.3:134
2663 "If you want to portably save and restore signal masks, use B<sigsetjmp>() "
2664 "and B<siglongjmp>(3)."
2668 #: build/C/man3/setjmp.3:141
2670 "B<setjmp>() and B<sigsetjmp>() make programs hard to understand and "
2671 "maintain. If possible, an alternative should be used."
2675 #: build/C/man3/setjmp.3:143
2676 msgid "B<longjmp>(3), B<siglongjmp>(3)"
2680 #: build/C/man3/xcrypt.3:13
2686 #: build/C/man3/xcrypt.3:16
2687 msgid "xencrypt, xdecrypt, passwd2des - RFS password encryption"
2691 #: build/C/man3/xcrypt.3:18
2692 msgid "B<#include E<lt>rpc/des_crypt.hE<gt>>"
2696 #: build/C/man3/xcrypt.3:20
2697 msgid "B<void passwd2des(char >I<*passwd>B<, char *>I<key>B<);>"
2701 #: build/C/man3/xcrypt.3:22
2702 msgid "B<int xencrypt(char *>I<secret>B<, char *>I<passwd>B<);>"
2706 #: build/C/man3/xcrypt.3:24
2707 msgid "B<int xdecrypt(char *>I<secret>B<, char *>I<passwd>B<);>"
2711 #: build/C/man3/xcrypt.3:40
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."
2720 #. (over the alphabet 0123456789abcdefABCDEF),
2721 #. (over the alphabet 0123456789abcdef)
2723 #: build/C/man3/xcrypt.3:57
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."
2732 #: build/C/man3/xcrypt.3:61
2733 msgid "The B<xdecrypt>() function performs the converse operation."
2737 #: build/C/man3/xcrypt.3:67
2739 "The functions B<xencrypt>() and B<xdecrypt>() return 1 on success and 0 on "
2744 #: build/C/man3/xcrypt.3:69
2745 msgid "These functions are available in glibc since version 2.1."
2749 #: build/C/man3/xcrypt.3:71
2750 msgid "The prototypes are missing from the abovementioned include file."
2754 #: build/C/man3/xcrypt.3:72
2755 msgid "B<cbc_crypt>(3)"