OSDN Git Service

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