OSDN Git Service

d60109baa250ac133f808de226ab5db5845ac7ba
[linuxjm/LDP_man-pages.git] / po4a / search / 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: 2014-04-13 10:27+0900\n"
10 "PO-Revision-Date: 2013-09-28 04:29+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/bsearch.3:31
20 #, no-wrap
21 msgid "BSEARCH"
22 msgstr "BSEARCH"
23
24 #. type: TH
25 #: build/C/man3/bsearch.3:31
26 #, no-wrap
27 msgid "2003-11-01"
28 msgstr "2003-11-01"
29
30 #. type: TH
31 #: build/C/man3/bsearch.3:31 build/C/man3/hsearch.3:35
32 #: build/C/man3/insque.3:36 build/C/man3/lsearch.3:26 build/C/man3/qsort.3:37
33 #: build/C/man3/tsearch.3:25
34 #, no-wrap
35 msgid "Linux Programmer's Manual"
36 msgstr "Linux Programmer's Manual"
37
38 #. type: SH
39 #: build/C/man3/bsearch.3:32 build/C/man3/hsearch.3:36
40 #: build/C/man3/insque.3:37 build/C/man3/lsearch.3:27 build/C/man3/qsort.3:38
41 #: build/C/man3/tsearch.3:26
42 #, no-wrap
43 msgid "NAME"
44 msgstr "名前"
45
46 #. type: Plain text
47 #: build/C/man3/bsearch.3:34
48 msgid "bsearch - binary search of a sorted array"
49 msgstr "bsearch - ソートされた配列を二分木検索 (binary search) する"
50
51 #. type: SH
52 #: build/C/man3/bsearch.3:34 build/C/man3/hsearch.3:39
53 #: build/C/man3/insque.3:39 build/C/man3/lsearch.3:29 build/C/man3/qsort.3:40
54 #: build/C/man3/tsearch.3:28
55 #, no-wrap
56 msgid "SYNOPSIS"
57 msgstr "書式"
58
59 #. type: Plain text
60 #: build/C/man3/bsearch.3:37 build/C/man3/qsort.3:43
61 #, no-wrap
62 msgid "B<#include E<lt>stdlib.hE<gt>>\n"
63 msgstr "B<#include E<lt>stdlib.hE<gt>>\n"
64
65 #. type: Plain text
66 #: build/C/man3/bsearch.3:41
67 #, no-wrap
68 msgid ""
69 "B<void *bsearch(const void *>I<key>B<, const void *>I<base>B<,>\n"
70 "B<              size_t >I<nmemb>B<, size_t >I<size>B<,>\n"
71 "B<              int (*>I<compar>B<)(const void *, const void *));>\n"
72 msgstr ""
73 "B<void *bsearch(const void *>I<key>B<, const void *>I<base>B<,>\n"
74 "B<              size_t >I<nmemb>B<, size_t >I<size>B<,>\n"
75 "B<              int (*>I<compar>B<)(const void *, const void *));>\n"
76
77 #. type: SH
78 #: build/C/man3/bsearch.3:42 build/C/man3/hsearch.3:60
79 #: build/C/man3/insque.3:61 build/C/man3/lsearch.3:39 build/C/man3/qsort.3:61
80 #: build/C/man3/tsearch.3:51
81 #, no-wrap
82 msgid "DESCRIPTION"
83 msgstr "説明"
84
85 #. type: Plain text
86 #: build/C/man3/bsearch.3:56
87 msgid ""
88 "The B<bsearch>()  function searches an array of I<nmemb> objects, the "
89 "initial member of which is pointed to by I<base>, for a member that matches "
90 "the object pointed to by I<key>.  The size of each member of the array is "
91 "specified by I<size>."
92 msgstr ""
93 "B<bsearch>()  関数は I<nmemb> 個のオブジェクトからなる配列を検索 する。配列の"
94 "最初のメンバーへのポインタは I<base> によって与える。 ポインタ I<key> で参照"
95 "されるオブジェクトと一致するメンバーが返される。 配列中の各々のメンバーのサイ"
96 "ズは I<size> によって指定する。"
97
98 #. type: Plain text
99 #: build/C/man3/bsearch.3:70
100 msgid ""
101 "The contents of the array should be in ascending sorted order according to "
102 "the comparison function referenced by I<compar>.  The I<compar> routine is "
103 "expected to have two arguments which point to the I<key> object and to an "
104 "array member, in that order, and should return an integer less than, equal "
105 "to, or greater than zero if the I<key> object is found, respectively, to be "
106 "less than, to match, or be greater than the array member."
107 msgstr ""
108 "配列の内容は比較関数 I<compar> に基づき、昇順にソートされていなけれ ばならな"
109 "い。 I<compar> ルーチンは二つの引き数を取る関数で、一つ 目に I<key> へのポイ"
110 "ンタ、次に配列のメンバーへのポインタを取る。 この順に指定したとき、 I<key> が"
111 "配列メンバーより小さいときには 負の整数を、大きいときには正の整数を、一致した"
112 "ときには 0 を、それぞれ I<compar> は返さなければならない。"
113
114 #. type: SH
115 #: build/C/man3/bsearch.3:70 build/C/man3/hsearch.3:174
116 #: build/C/man3/lsearch.3:72 build/C/man3/qsort.3:91
117 #: build/C/man3/tsearch.3:167
118 #, no-wrap
119 msgid "RETURN VALUE"
120 msgstr "返り値"
121
122 #. type: Plain text
123 #: build/C/man3/bsearch.3:77
124 msgid ""
125 "The B<bsearch>()  function returns a pointer to a matching member of the "
126 "array, or NULL if no match is found.  If there are multiple elements that "
127 "match the key, the element returned is unspecified."
128 msgstr ""
129 "B<bsearch>()  関数は、配列のメンバーのうち、一致したものへのポインタを 返す。"
130 "見つからなかったときは NULL を返す。 I<key> と一致したメンバーが 複数あると"
131 "き、そのうちのどのメンバーが返されるかはわからない。"
132
133 #. type: SH
134 #: build/C/man3/bsearch.3:77 build/C/man3/hsearch.3:246
135 #: build/C/man3/insque.3:99 build/C/man3/lsearch.3:80 build/C/man3/qsort.3:100
136 #: build/C/man3/tsearch.3:190
137 #, no-wrap
138 msgid "CONFORMING TO"
139 msgstr "準拠"
140
141 #. type: Plain text
142 #: build/C/man3/bsearch.3:79
143 msgid "SVr4, 4.3BSD, POSIX.1-2001, C89, C99."
144 msgstr "SVr4, 4.3BSD, POSIX.1-2001, C89, C99."
145
146 #. type: SH
147 #: build/C/man3/bsearch.3:79 build/C/man3/hsearch.3:293
148 #: build/C/man3/insque.3:134 build/C/man3/qsort.3:116
149 #: build/C/man3/tsearch.3:212
150 #, no-wrap
151 msgid "EXAMPLE"
152 msgstr "例"
153
154 #. type: Plain text
155 #: build/C/man3/bsearch.3:84
156 msgid ""
157 "The example below first sorts an array of structures using B<qsort>(3), then "
158 "retrieves desired elements using B<bsearch>()."
159 msgstr ""
160 "以下の例は、 B<qsort>(3)  を使って構造体の配列の並び換えを行った後、 所望の要"
161 "素を B<bsearch>()  を使って取得するものである。"
162
163 #. type: Plain text
164 #: build/C/man3/bsearch.3:89 build/C/man3/qsort.3:127
165 #, no-wrap
166 msgid ""
167 "#include E<lt>stdio.hE<gt>\n"
168 "#include E<lt>stdlib.hE<gt>\n"
169 "#include E<lt>string.hE<gt>\n"
170 msgstr ""
171 "#include E<lt>stdio.hE<gt>\n"
172 "#include E<lt>stdlib.hE<gt>\n"
173 "#include E<lt>string.hE<gt>\n"
174
175 #. type: Plain text
176 #: build/C/man3/bsearch.3:98
177 #, no-wrap
178 msgid ""
179 "struct mi {\n"
180 "    int nr;\n"
181 "    char *name;\n"
182 "} months[] = {\n"
183 "    { 1, \"jan\" }, { 2, \"feb\" }, { 3, \"mar\" }, { 4, \"apr\" },\n"
184 "    { 5, \"may\" }, { 6, \"jun\" }, { 7, \"jul\" }, { 8, \"aug\" },\n"
185 "    { 9, \"sep\" }, {10, \"oct\" }, {11, \"nov\" }, {12, \"dec\" }\n"
186 "};\n"
187 msgstr ""
188 "struct mi {\n"
189 "    int nr;\n"
190 "    char *name;\n"
191 "} months[] = {\n"
192 "    { 1, \"jan\" }, { 2, \"feb\" }, { 3, \"mar\" }, { 4, \"apr\" },\n"
193 "    { 5, \"may\" }, { 6, \"jun\" }, { 7, \"jul\" }, { 8, \"aug\" },\n"
194 "    { 9, \"sep\" }, {10, \"oct\" }, {11, \"nov\" }, {12, \"dec\" }\n"
195 "};\n"
196
197 #. type: Plain text
198 #: build/C/man3/bsearch.3:100
199 #, no-wrap
200 msgid "#define nr_of_months (sizeof(months)/sizeof(months[0]))\n"
201 msgstr "#define nr_of_months (sizeof(months)/sizeof(months[0]))\n"
202
203 #. type: Plain text
204 #: build/C/man3/bsearch.3:108
205 #, no-wrap
206 msgid ""
207 "static int\n"
208 "compmi(const void *m1, const void *m2)\n"
209 "{\n"
210 "    struct mi *mi1 = (struct mi *) m1;\n"
211 "    struct mi *mi2 = (struct mi *) m2;\n"
212 "    return strcmp(mi1-E<gt>name, mi2-E<gt>name);\n"
213 "}\n"
214 msgstr ""
215 "static int\n"
216 "compmi(const void *m1, const void *m2)\n"
217 "{\n"
218 "    struct mi *mi1 = (struct mi *) m1;\n"
219 "    struct mi *mi2 = (struct mi *) m2;\n"
220 "    return strcmp(mi1-E<gt>name, mi2-E<gt>name);\n"
221 "}\n"
222
223 #. type: Plain text
224 #: build/C/man3/bsearch.3:113
225 #, no-wrap
226 msgid ""
227 "int\n"
228 "main(int argc, char **argv)\n"
229 "{\n"
230 "    int i;\n"
231 msgstr ""
232 "int\n"
233 "main(int argc, char **argv)\n"
234 "{\n"
235 "    int i;\n"
236
237 #. type: Plain text
238 #: build/C/man3/bsearch.3:127
239 #, no-wrap
240 msgid ""
241 "    qsort(months, nr_of_months, sizeof(struct mi), compmi);\n"
242 "    for (i = 1; i E<lt> argc; i++) {\n"
243 "        struct mi key, *res;\n"
244 "        key.name = argv[i];\n"
245 "        res = bsearch(&key, months, nr_of_months,\n"
246 "                      sizeof(struct mi), compmi);\n"
247 "        if (res == NULL)\n"
248 "            printf(\"\\(aq%s\\(aq: unknown month\\en\", argv[i]);\n"
249 "        else\n"
250 "            printf(\"%s: month #%d\\en\", res-E<gt>name, res-E<gt>nr);\n"
251 "    }\n"
252 "    exit(EXIT_SUCCESS);\n"
253 "}\n"
254 msgstr ""
255 "    qsort(months, nr_of_months, sizeof(struct mi), compmi);\n"
256 "    for (i = 1; i E<lt> argc; i++) {\n"
257 "        struct mi key, *res;\n"
258 "        key.name = argv[i];\n"
259 "        res = bsearch(&key, months, nr_of_months,\n"
260 "                      sizeof(struct mi), compmi);\n"
261 "        if (res == NULL)\n"
262 "            printf(\"\\(aq%s\\(aq: unknown month\\en\", argv[i]);\n"
263 "        else\n"
264 "            printf(\"%s: month #%d\\en\", res-E<gt>name, res-E<gt>nr);\n"
265 "    }\n"
266 "    exit(EXIT_SUCCESS);\n"
267 "}\n"
268
269 #. type: SH
270 #: build/C/man3/bsearch.3:129 build/C/man3/hsearch.3:343
271 #: build/C/man3/lsearch.3:85 build/C/man3/qsort.3:155
272 #: build/C/man3/tsearch.3:289
273 #, no-wrap
274 msgid "SEE ALSO"
275 msgstr "関連項目"
276
277 #. type: Plain text
278 #: build/C/man3/bsearch.3:134
279 msgid "B<hsearch>(3), B<lsearch>(3), B<qsort>(3), B<tsearch>(3)"
280 msgstr "B<hsearch>(3), B<lsearch>(3), B<qsort>(3), B<tsearch>(3)"
281
282 #. type: SH
283 #: build/C/man3/bsearch.3:134 build/C/man3/hsearch.3:348
284 #: build/C/man3/insque.3:244 build/C/man3/lsearch.3:89
285 #: build/C/man3/qsort.3:160 build/C/man3/tsearch.3:294
286 #, no-wrap
287 msgid "COLOPHON"
288 msgstr "この文書について"
289
290 #. type: Plain text
291 #: build/C/man3/bsearch.3:141 build/C/man3/hsearch.3:355
292 #: build/C/man3/insque.3:251 build/C/man3/lsearch.3:96
293 #: build/C/man3/qsort.3:167 build/C/man3/tsearch.3:301
294 #, fuzzy
295 #| msgid ""
296 #| "This page is part of release 3.54 of the Linux I<man-pages> project.  A "
297 #| "description of the project, and information about reporting bugs, can be "
298 #| "found at \\%http://www.kernel.org/doc/man-pages/."
299 msgid ""
300 "This page is part of release 3.63 of the Linux I<man-pages> project.  A "
301 "description of the project, and information about reporting bugs, can be "
302 "found at \\%http://www.kernel.org/doc/man-pages/."
303 msgstr ""
304 "この man ページは Linux I<man-pages> プロジェクトのリリース 3.54 の一部\n"
305 "である。プロジェクトの説明とバグ報告に関する情報は\n"
306 "http://www.kernel.org/doc/man-pages/ に書かれている。"
307
308 #. type: TH
309 #: build/C/man3/hsearch.3:35
310 #, no-wrap
311 msgid "HSEARCH"
312 msgstr "HSEARCH"
313
314 #. type: TH
315 #: build/C/man3/hsearch.3:35 build/C/man3/tsearch.3:25
316 #, no-wrap
317 msgid "2014-01-05"
318 msgstr ""
319
320 #. type: TH
321 #: build/C/man3/hsearch.3:35 build/C/man3/lsearch.3:26
322 #: build/C/man3/tsearch.3:25
323 #, no-wrap
324 msgid "GNU"
325 msgstr "GNU"
326
327 #. type: Plain text
328 #: build/C/man3/hsearch.3:39
329 msgid ""
330 "hcreate, hdestroy, hsearch, hcreate_r, hdestroy_r, hsearch_r - hash table "
331 "management"
332 msgstr ""
333 "hcreate, hdestroy, hsearch, hcreate_r, hdestroy_r, hsearch_r - ハッシュテーブ"
334 "ルの管理"
335
336 #. type: Plain text
337 #: build/C/man3/hsearch.3:42 build/C/man3/hsearch.3:52
338 #: build/C/man3/insque.3:42 build/C/man3/lsearch.3:32
339 #: build/C/man3/tsearch.3:31 build/C/man3/tsearch.3:48
340 #, no-wrap
341 msgid "B<#include E<lt>search.hE<gt>>\n"
342 msgstr "B<#include E<lt>search.hE<gt>>\n"
343
344 #. type: Plain text
345 #: build/C/man3/hsearch.3:44
346 #, no-wrap
347 msgid "B<int hcreate(size_t >I<nel>B<);>\n"
348 msgstr "B<int hcreate(size_t >I<nel>B<);>\n"
349
350 #. type: Plain text
351 #: build/C/man3/hsearch.3:46
352 #, no-wrap
353 msgid "B<ENTRY *hsearch(ENTRY >I<item>B<, ACTION >I<action>B<);>\n"
354 msgstr "B<ENTRY *hsearch(ENTRY >I<item>B<, ACTION >I<action>B<);>\n"
355
356 #. type: Plain text
357 #: build/C/man3/hsearch.3:48
358 #, no-wrap
359 msgid "B<void hdestroy(void);>\n"
360 msgstr "B<void hdestroy(void);>\n"
361
362 #. type: Plain text
363 #: build/C/man3/hsearch.3:50 build/C/man3/tsearch.3:46
364 #, no-wrap
365 msgid "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
366 msgstr "B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
367
368 #. type: Plain text
369 #: build/C/man3/hsearch.3:54
370 #, no-wrap
371 msgid "B<int hcreate_r(size_t >I<nel>B<, struct hsearch_data *>I<htab>B<);>\n"
372 msgstr "B<int hcreate_r(size_t >I<nel>B<, struct hsearch_data *>I<htab>B<);>\n"
373
374 #. type: Plain text
375 #: build/C/man3/hsearch.3:57
376 #, no-wrap
377 msgid ""
378 "B<int hsearch_r(ENTRY >I<item>B<, ACTION >I<action>B<, ENTRY **>I<retval>B<,>\n"
379 "B<              struct hsearch_data *>I<htab>B<);>\n"
380 msgstr ""
381 "B<int hsearch_r(ENTRY >I<item>B<, ACTION >I<action>B<, ENTRY **>I<retval>B<,>\n"
382 "B<              struct hsearch_data *>I<htab>B<);>\n"
383
384 #. type: Plain text
385 #: build/C/man3/hsearch.3:59
386 #, no-wrap
387 msgid "B<void hdestroy_r(struct hsearch_data *>I<htab>B<);>\n"
388 msgstr "B<void hdestroy_r(struct hsearch_data *>I<htab>B<);>\n"
389
390 #. type: Plain text
391 #: build/C/man3/hsearch.3:69
392 msgid ""
393 "The three functions B<hcreate>(), B<hsearch>(), and B<hdestroy>()  allow the "
394 "caller to create and manage a hash search table containing entries "
395 "consisting of a key (a string) and associated data.  Using these functions, "
396 "only one hash table can be used at a time."
397 msgstr ""
398 "B<hcreate>(), B<hsearch>(), B<hdestroy>()  の 3 つの関数を利用すると、キー "
399 "(文字列) と対応するデータから構成される エントリを格納できるハッシュ検索テー"
400 "ブルを作成、管理することができる。 これらの関数を使って、一度に使用できるのは"
401 "一つのハッシュテーブルだけである。"
402
403 #. type: Plain text
404 #: build/C/man3/hsearch.3:83
405 msgid ""
406 "The three functions B<hcreate_r>(), B<hsearch_r>(), B<hdestroy_r>()  are "
407 "reentrant versions that allow a program to use more than one hash search "
408 "table at the same time.  The last argument, I<htab>, points to a structure "
409 "that describes the table on which the function is to operate.  The "
410 "programmer should treat this structure as opaque (i.e., do not attempt to "
411 "directly access or modify the fields in this structure)."
412 msgstr ""
413 "B<hcreate_r>(), B<hsearch_r>(), B<hdestroy_r>()  の 3 つの関数はリエントラン"
414 "ト版で、これらを利用すると、 一つのプログラムで同時に複数のハッシュテーブルを"
415 "使うことができる。 最後の引き数 I<htab> は関数の操作対象となるテーブルを示す"
416 "構造体へのポインタである。 プログラマはこの構造体をブラックボックスとして扱う"
417 "べきである (つまり、この構造体のフィールドに直接アクセスしたり変更したり しな"
418 "いこと)。"
419
420 #.  e.g., in glibc it is raised to the next higher prime number
421 #. type: Plain text
422 #: build/C/man3/hsearch.3:92
423 msgid ""
424 "First a hash table must be created using B<hcreate>().  The argument I<nel> "
425 "specifies the maximum number of entries in the table.  (This maximum cannot "
426 "be changed later, so choose it wisely.)  The implementation may adjust this "
427 "value upward to improve the performance of the resulting hash table."
428 msgstr ""
429 "最初に、 B<hcreate>()  関数によってハッシュテーブルを作成しなければならな"
430 "い。 引き数 I<nel> でテーブルの最大エントリ数を指定する (この最大値は後で変更"
431 "することはできないので、よく考えて選択すること)。 作成されるハッシュテーブル"
432 "の性能を向上させるために、 関数内部の実装によりこの値は増やされる場合もある。"
433
434 #. type: Plain text
435 #: build/C/man3/hsearch.3:103
436 msgid ""
437 "The B<hcreate_r>()  function performs the same task as B<hcreate>(), but for "
438 "the table described by the structure I<*htab>.  The structure pointed to by "
439 "I<htab> must be zeroed before the first call to B<hcreate_r>()."
440 msgstr ""
441 "B<hcreate_r>()  関数は B<hcreate>()  と同じ動作をするが、構造体 I<*htab> で示"
442 "されるテーブルを対象として動作する。 I<htab> が指し示す構造体は、 "
443 "B<hcreate_r>()  を初めて呼び出す前に 0 で埋めておかなければならない。"
444
445 #. type: Plain text
446 #: build/C/man3/hsearch.3:118
447 msgid ""
448 "The function B<hdestroy>()  frees the memory occupied by the hash table that "
449 "was created by B<hcreate>().  After calling B<hdestroy>()  a new hash table "
450 "can be created using B<hcreate>().  The B<hdestroy_r>()  function performs "
451 "the analogous task for a hash table described by I<*htab>, which was "
452 "previously created using B<hcreate_r>()."
453 msgstr ""
454 "B<hdestroy>()  関数は、 B<hcreate>()  で作成されたハッシュテーブルが占有して"
455 "いたメモリを解放する。 ハッシュテーブルによって占有されていたメモリを解放"
456 "し、 新しいテーブルを作成できるようにする。 B<hdestroy>()  を呼び出すと、その"
457 "後は B<hcreate>()  を使って新しいハッシュテーブルを作成することができる。 "
458 "B<hdestroy_r>()  関数は、同様の処理を、それ以前に B<hcreate_r>()  を使って作"
459 "成した I<*htab> で示されるハッシュテーブルに対して実行する。"
460
461 #. type: Plain text
462 #: build/C/man3/hsearch.3:125
463 msgid ""
464 "The B<hsearch>()  function searches the hash table for an item with the same "
465 "key as I<item> (where \"the same\" is determined using B<strcmp>(3)), and if "
466 "successful returns a pointer to it."
467 msgstr ""
468 "B<hsearch>()  関数は、I<item> と同じキーを持つ項目をハッシュテーブルから 検索"
469 "し、項目が見つかった場合にはその項目へのポインタを返す (「同じ」かどうかは "
470 "B<strcmp>(3)  を使って判定する)。"
471
472 #. type: Plain text
473 #: build/C/man3/hsearch.3:128
474 msgid ""
475 "The argument I<item> is of type I<ENTRY>, which is defined in I<E<lt>search."
476 "hE<gt>> as follows:"
477 msgstr ""
478 "引き数 I<item> は B<ENTRY> 型であり、I<E<lt>search.hE<gt>> の中で 以下のよう"
479 "に定義されている。"
480
481 #. type: Plain text
482 #: build/C/man3/hsearch.3:135
483 #, no-wrap
484 msgid ""
485 "typedef struct entry {\n"
486 "    char *key;\n"
487 "    void *data;\n"
488 "} ENTRY;\n"
489 msgstr ""
490 "typedef struct entry {\n"
491 "    char *key;\n"
492 "    void *data;\n"
493 "} ENTRY;\n"
494
495 #. type: Plain text
496 #: build/C/man3/hsearch.3:141
497 msgid ""
498 "The field I<key> points to a null-terminated string which is the search "
499 "key.  The field I<data> points to data that is associated with that key."
500 msgstr ""
501 "フィールド I<key> は検索キーとなる NULL 終端された文字列を指す。 フィールド "
502 "I<data> は、このキーに対応するデータを指す。"
503
504 #. type: Plain text
505 #: build/C/man3/hsearch.3:160
506 msgid ""
507 "The argument I<action> determines what B<hsearch>()  does after an "
508 "unsuccessful search.  This argument must either have the value B<ENTER>, "
509 "meaning insert a copy of I<item> (and return a pointer to the new hash table "
510 "entry as the function result), or the value B<FIND>, meaning that NULL "
511 "should be returned.  (If I<action> is B<FIND>, then I<data> is ignored.)"
512 msgstr ""
513 "検索が失敗した後の動作は、引き数 I<action> により決まる。 この引き数には "
514 "B<ENTER> か B<FIND> のいずれかの値を指定しなければならない。 B<ENTER> は "
515 "I<item> のコピーを挿入することを (関数の結果として新しいハッシュテーブルエン"
516 "トリへのポインタを返す)、 B<FIND> は NULL を返すことを意味する (I<action> が "
517 "B<FIND> の場合、 I<data> は無視される)。"
518
519 #. type: Plain text
520 #: build/C/man3/hsearch.3:174
521 msgid ""
522 "The B<hsearch_r>()  function is like B<hsearch>()  but operates on the hash "
523 "table described by I<*htab>.  The B<hsearch_r>()  function differs from "
524 "B<hsearch>()  in that a pointer to the found item is returned in I<*retval>, "
525 "rather than as the function result."
526 msgstr ""
527 "B<hsearch_r>()  関数は B<hsearch>()  と同様だが、 I<*htab> で示されるハッシュ"
528 "テーブルに対して処理を行う。 B<hsearch_r>()  関数が B<hsearch>()  と異なるの"
529 "は、見つかった項目へのポインタを、 関数の結果としてではなく、 I<*retval> に格"
530 "納して返す点である。"
531
532 #. type: Plain text
533 #: build/C/man3/hsearch.3:182
534 msgid ""
535 "B<hcreate>()  and B<hcreate_r>()  return nonzero on success.  They return 0 "
536 "on error, with I<errno> set to indicate the cause of the error."
537 msgstr ""
538 "B<hcreate>()  と B<hcreate_r>()  は、成功した場合 0 以外の値を返す。 エラーの"
539 "場合 0 を返し、 I<errno> にエラーの原因を示す値を設定する。"
540
541 #. type: Plain text
542 #: build/C/man3/hsearch.3:196
543 msgid ""
544 "On success, B<hsearch>()  returns a pointer to an entry in the hash table.  "
545 "B<hsearch>()  returns NULL on error, that is, if I<action> is B<ENTER> and "
546 "the hash table is full, or I<action> is B<FIND> and I<item> cannot be found "
547 "in the hash table.  B<hsearch_r>()  returns nonzero on success, and 0 on "
548 "error.  In the event of an error, these two functions set I<errno> to "
549 "indicate the cause of the error."
550 msgstr ""
551 "成功すると、 B<hsearch>()  は、ハッシュテーブル内のエントリへのポインタを返"
552 "す。 エラーの場合、 B<hsearch>()  は NULL を返す。 エラーとなるのは、 "
553 "I<action> が B<ENTER> でハッシュテーブルがいっぱいの場合か、 I<action> が "
554 "B<FIND> で I<item> がハッシュテーブル内に 見つからない場合である。 "
555 "B<hsearch_r>()  は、成功すると 0 以外を返し、エラーの場合 0 を返す。 エラーの"
556 "場合、 これら二つの関数は I<errno> にエラーの原因を示す値を設定する。"
557
558 #. type: SH
559 #: build/C/man3/hsearch.3:196
560 #, no-wrap
561 msgid "ERRORS"
562 msgstr "エラー"
563
564 #. type: Plain text
565 #: build/C/man3/hsearch.3:202
566 msgid ""
567 "B<hcreate_r>()  and B<hdestroy_r>()  can fail for the following reasons:"
568 msgstr ""
569 "B<hcreate_r>()  と B<hdestroy_r>()  は以下の理由で失敗する可能性がある。"
570
571 #. type: TP
572 #: build/C/man3/hsearch.3:202
573 #, no-wrap
574 msgid "B<EINVAL>"
575 msgstr "B<EINVAL>"
576
577 #. type: Plain text
578 #: build/C/man3/hsearch.3:206
579 msgid "I<htab> is NULL."
580 msgstr "I<htab> が NULL である。"
581
582 #. type: Plain text
583 #: build/C/man3/hsearch.3:211
584 msgid "B<hsearch>()  and B<hsearch_r>()  can fail for the following reasons:"
585 msgstr "B<hsearch>()  と B<hsearch_r>()  は以下の理由で失敗する可能性がある。"
586
587 #. type: TP
588 #: build/C/man3/hsearch.3:211
589 #, no-wrap
590 msgid "B<ENOMEM>"
591 msgstr "B<ENOMEM>"
592
593 #. type: Plain text
594 #: build/C/man3/hsearch.3:219
595 msgid ""
596 "I<action> was B<ENTER>, I<key> was not found in the table, and there was no "
597 "room in the table to add a new entry."
598 msgstr ""
599 "I<action> が B<ENTER> で、 I<key> がテーブル内に見つからず、 テーブルに新しい"
600 "エントリを追加する余地がなかった。"
601
602 #. type: TP
603 #: build/C/man3/hsearch.3:219
604 #, no-wrap
605 msgid "B<ESRCH>"
606 msgstr "B<ESRCH>"
607
608 #. type: Plain text
609 #: build/C/man3/hsearch.3:227
610 msgid "I<action> was B<FIND>, and I<key> was not found in the table."
611 msgstr "I<action> が B<FIND> で、 I<key> がテーブル内に見つからなかった。"
612
613 #. type: Plain text
614 #: build/C/man3/hsearch.3:231
615 msgid "POSIX.1-2001 specifies only the B<ENOMEM> error."
616 msgstr "POSIX.1-2001 が規定しているのは、エラー B<ENOMEM> だけである。"
617
618 #. type: SH
619 #: build/C/man3/hsearch.3:231
620 #, no-wrap
621 msgid "ATTRIBUTES"
622 msgstr "属性"
623
624 #. type: SS
625 #: build/C/man3/hsearch.3:232
626 #, no-wrap
627 msgid "Multithreading (see pthreads(7))"
628 msgstr "マルチスレッディング (pthreads(7) 参照)"
629
630 #. type: Plain text
631 #: build/C/man3/hsearch.3:239
632 msgid ""
633 "The B<hcreate>(), B<hsearch>(), and B<hdestroy>()  functions use a global "
634 "space for storing the table, so they are not thread-safe."
635 msgstr ""
636 "関数 B<hcreate>(), B<hsearch>(), B<hdestroy>() はテーブルを格納するのにグロー"
637 "バル空間を使用する。そのため、これらの関数はスレッドセーフではない。"
638
639 #. type: Plain text
640 #: build/C/man3/hsearch.3:246
641 msgid ""
642 "The B<hcreate_r>(), B<hsearch_r>(), and B<hdestroy_r>()  functions are "
643 "thread-safe."
644 msgstr ""
645 "関数 B<hcreate_r>(), B<hsearch_r>(), B<hdestroy_r>() はスレッドセーフである。"
646
647 #. type: Plain text
648 #: build/C/man3/hsearch.3:259
649 msgid ""
650 "The functions B<hcreate>(), B<hsearch>(), and B<hdestroy>()  are from SVr4, "
651 "and are described in POSIX.1-2001.  The functions B<hcreate_r>(), "
652 "B<hsearch_r>(), and B<hdestroy_r>()  are GNU extensions."
653 msgstr ""
654 "関数 B<hcreate>(), B<hsearch>(), B<hdestroy>()  は SVr4 から導入されたもの"
655 "で、POSIX.1-2001 に記述されている。 関数 B<hcreate_r>, B<hsearch_r>, "
656 "B<hdestroy_r> は GNU の拡張である。"
657
658 #. type: SH
659 #: build/C/man3/hsearch.3:259 build/C/man3/insque.3:101
660 #: build/C/man3/qsort.3:104 build/C/man3/tsearch.3:195
661 #, no-wrap
662 msgid "NOTES"
663 msgstr "注意"
664
665 #. type: Plain text
666 #: build/C/man3/hsearch.3:266
667 msgid ""
668 "Hash table implementations are usually more efficient when the table "
669 "contains enough free space to minimize collisions.  Typically, this means "
670 "that I<nel> should be at least 25% larger than the maximum number of "
671 "elements that the caller expects to store in the table."
672 msgstr ""
673 "通常、ハッシュテーブルの実装は、衝突を最小限にするために テーブルに十分な空き"
674 "領域がある場合に効率がよくなる。 このため、普通は、 I<nel> を、呼び出し側が"
675 "テーブルに格納しようと思っている エントリの最大数より少なくとも 25% は大きな"
676 "値にすべきである。"
677
678 #. type: Plain text
679 #: build/C/man3/hsearch.3:284
680 msgid ""
681 "The B<hdestroy>()  and B<hdestroy_r>()  functions do not free the buffers "
682 "pointed to by the I<key> and I<data> elements of the hash table entries.  "
683 "(It can't do this because it doesn't know whether these buffers were "
684 "allocated dynamically.)  If these buffers need to be freed (perhaps because "
685 "the program is repeatedly creating and destroying hash tables, rather than "
686 "creating a single table whose lifetime matches that of the program), then "
687 "the program must maintain bookkeeping data structures that allow it to free "
688 "them."
689 msgstr ""
690 "B<hdestroy>()  と B<hdestroy_r>()  は、ハッシュテーブルのエントリの要素であ"
691 "る I<key> と I<data> が指すバッファを解放しない (これができないのは、これらの"
692 "バッファが動的に割り当てられたのかを 知ることができないからである)。 これらの"
693 "バッファを解放する必要がある場合、 プログラムでは、これらのバッファを解放でき"
694 "るように管理用のデータ構造を 設けて、これを管理しなければならない (解放が必要"
695 "となる理由は、たいていは、プログラム自身と生存期間が同じ ハッシュテーブルを一"
696 "つだけ作成するのではなく、そのプログラムでは複数の ハッシュテーブルを繰り返し"
697 "て作成したり破棄したりするからであろう)。"
698
699 #. type: SH
700 #: build/C/man3/hsearch.3:284 build/C/man3/insque.3:127
701 #: build/C/man3/lsearch.3:83
702 #, no-wrap
703 msgid "BUGS"
704 msgstr "バグ"
705
706 #. type: Plain text
707 #: build/C/man3/hsearch.3:291
708 msgid ""
709 "SVr4 and POSIX.1-2001 specify that I<action> is significant only for "
710 "unsuccessful searches, so that an B<ENTER> should not do anything for a "
711 "successful search.  In libc and glibc (before version 2.3), the "
712 "implementation violates the specification, updating the I<data> for the "
713 "given I<key> in this case."
714 msgstr ""
715 "SVr4 と POSIX.1-2001 の規定では、 I<action> は検索が失敗したときにだけ意味を"
716 "持つとなっている。 よって、検索が成功した場合、I<action> の値が B<ENTER> で"
717 "も 何もすべきではない。 (バージョン 2.3 より前の) libc と glibc の実装はこの"
718 "規格に違反しており、 この状況で、指定された I<key> に対応する I<data> が更新"
719 "される。"
720
721 #. type: Plain text
722 #: build/C/man3/hsearch.3:293
723 msgid "Individual hash table entries can be added, but not deleted."
724 msgstr "ハッシュテーブルエントリーの追加はできるが、削除ができない。"
725
726 #. type: Plain text
727 #: build/C/man3/hsearch.3:297
728 msgid ""
729 "The following program inserts 24 items into a hash table, then prints some "
730 "of them."
731 msgstr ""
732 "次のプログラムは、ハッシュテーブルに 24 個の項目を挿入し、 それからそのうちの"
733 "いくつかを表示する。"
734
735 #. type: Plain text
736 #: build/C/man3/hsearch.3:302
737 #, no-wrap
738 msgid ""
739 "#include E<lt>stdio.hE<gt>\n"
740 "#include E<lt>stdlib.hE<gt>\n"
741 "#include E<lt>search.hE<gt>\n"
742 msgstr ""
743 "#include E<lt>stdio.hE<gt>\n"
744 "#include E<lt>stdlib.hE<gt>\n"
745 "#include E<lt>search.hE<gt>\n"
746
747 #. type: Plain text
748 #: build/C/man3/hsearch.3:309
749 #, fuzzy, no-wrap
750 #| msgid ""
751 #| "char *data[] = { \"alpha\", \"bravo\", \"charlie\", \"delta\",\n"
752 #| "     \"echo\", \"foxtrot\", \"golf\", \"hotel\", \"india\", \"juliet\",\n"
753 #| "     \"kilo\", \"lima\", \"mike\", \"november\", \"oscar\", \"papa\",\n"
754 #| "     \"quebec\", \"romeo\", \"sierra\", \"tango\", \"uniform\",\n"
755 #| "     \"victor\", \"whisky\", \"x-ray\", \"yankee\", \"zulu\"\n"
756 #| "};\n"
757 msgid ""
758 "static char *data[] = { \"alpha\", \"bravo\", \"charlie\", \"delta\",\n"
759 "     \"echo\", \"foxtrot\", \"golf\", \"hotel\", \"india\", \"juliet\",\n"
760 "     \"kilo\", \"lima\", \"mike\", \"november\", \"oscar\", \"papa\",\n"
761 "     \"quebec\", \"romeo\", \"sierra\", \"tango\", \"uniform\",\n"
762 "     \"victor\", \"whisky\", \"x-ray\", \"yankee\", \"zulu\"\n"
763 "};\n"
764 msgstr ""
765 "char *data[] = { \"alpha\", \"bravo\", \"charlie\", \"delta\",\n"
766 "     \"echo\", \"foxtrot\", \"golf\", \"hotel\", \"india\", \"juliet\",\n"
767 "     \"kilo\", \"lima\", \"mike\", \"november\", \"oscar\", \"papa\",\n"
768 "     \"quebec\", \"romeo\", \"sierra\", \"tango\", \"uniform\",\n"
769 "     \"victor\", \"whisky\", \"x-ray\", \"yankee\", \"zulu\"\n"
770 "};\n"
771
772 #. type: Plain text
773 #: build/C/man3/hsearch.3:315
774 #, no-wrap
775 msgid ""
776 "int\n"
777 "main(void)\n"
778 "{\n"
779 "    ENTRY e, *ep;\n"
780 "    int i;\n"
781 msgstr ""
782 "int main()\n"
783 "{\n"
784 "    ENTRY e, *ep;\n"
785 "    int i;\n"
786
787 #. type: Plain text
788 #: build/C/man3/hsearch.3:317
789 #, no-wrap
790 msgid "    hcreate(30);\n"
791 msgstr "    hcreate(30);\n"
792
793 #. type: Plain text
794 #: build/C/man3/hsearch.3:330
795 #, no-wrap
796 msgid ""
797 "    for (i = 0; i E<lt> 24; i++) {\n"
798 "        e.key = data[i];\n"
799 "        /* data is just an integer, instead of a\n"
800 "           pointer to something */\n"
801 "        e.data = (void *) i;\n"
802 "        ep = hsearch(e, ENTER);\n"
803 "        /* there should be no failures */\n"
804 "        if (ep == NULL) {\n"
805 "            fprintf(stderr, \"entry failed\\en\");\n"
806 "            exit(EXIT_FAILURE);\n"
807 "        }\n"
808 "    }\n"
809 msgstr ""
810 "    for (i = 0; i E<lt> 24; i++) {\n"
811 "        e.key = data[i];\n"
812 "        /* データは、ポインタではなく、単なる整数値である。 */\n"
813 "        e.data = (void *) i;\n"
814 "        ep = hsearch(e, ENTER);\n"
815 "        /* エラーは起こらないはずである。 */\n"
816 "        if (ep == NULL) {\n"
817 "            fprintf(stderr, \"entry failed\\en\");\n"
818 "            exit(EXIT_FAILURE);\n"
819 "        }\n"
820 "    }\n"
821
822 #. type: Plain text
823 #: build/C/man3/hsearch.3:342
824 #, no-wrap
825 msgid ""
826 "    for (i = 22; i E<lt> 26; i++) {\n"
827 "        /* print two entries from the table, and\n"
828 "           show that two are not in the table */\n"
829 "        e.key = data[i];\n"
830 "        ep = hsearch(e, FIND);\n"
831 "        printf(\"%9.9s -E<gt> %9.9s:%d\\en\", e.key,\n"
832 "               ep ? ep-E<gt>key : \"NULL\", ep ? (int)(ep-E<gt>data) : 0);\n"
833 "    }\n"
834 "    hdestroy();\n"
835 "    exit(EXIT_SUCCESS);\n"
836 "}\n"
837 msgstr ""
838 "    for (i = 22; i E<lt> 26; i++) {\n"
839 "        /* テーブルにある 2 つのエントリを表示し、\n"
840 "           あとの 2 つがテーブルにないことを示す。 */\n"
841 "        e.key = data[i];\n"
842 "        ep = hsearch(e, FIND);\n"
843 "        printf(\"%9.9s -E<gt> %9.9s:%d\\en\", e.key,\n"
844 "               ep ? ep-E<gt>key : \"NULL\", ep ? (int)(ep-E<gt>data) : 0);\n"
845 "    }\n"
846 "    hdestroy();\n"
847 "    exit(EXIT_SUCCESS);\n"
848 "}\n"
849
850 #. type: Plain text
851 #: build/C/man3/hsearch.3:348
852 msgid "B<bsearch>(3), B<lsearch>(3), B<malloc>(3), B<tsearch>(3)"
853 msgstr "B<bsearch>(3), B<lsearch>(3), B<malloc>(3), B<tsearch>(3)"
854
855 #. type: TH
856 #: build/C/man3/insque.3:36
857 #, no-wrap
858 msgid "INSQUE"
859 msgstr "INSQUE"
860
861 #. type: TH
862 #: build/C/man3/insque.3:36
863 #, no-wrap
864 msgid "2010-09-09"
865 msgstr "2010-09-09"
866
867 #. type: Plain text
868 #: build/C/man3/insque.3:39
869 msgid "insque, remque - insert/remove an item from a queue"
870 msgstr "insque, remque - キューにアイテムを挿入/削除する"
871
872 #. type: Plain text
873 #: build/C/man3/insque.3:44
874 #, no-wrap
875 msgid "B<void insque(void *>I<elem>B<, void *>I<prev>B<);>\n"
876 msgstr "B<void insque(void *>I<elem>B<, void *>I<prev>B<);>\n"
877
878 #. type: Plain text
879 #: build/C/man3/insque.3:46
880 #, no-wrap
881 msgid "B<void remque(void *>I<elem>B<);>\n"
882 msgstr "B<void remque(void *>I<elem>B<);>\n"
883
884 #. type: Plain text
885 #: build/C/man3/insque.3:51 build/C/man3/qsort.3:55
886 msgid ""
887 "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
888 msgstr "glibc 向けの機能検査マクロの要件 (B<feature_test_macros>(7)  参照):"
889
890 #. type: Plain text
891 #: build/C/man3/insque.3:56
892 msgid "B<insque>(), B<remque>():"
893 msgstr "B<insque>(), B<remque>():"
894
895 #. type: Plain text
896 #: build/C/man3/insque.3:59
897 msgid ""
898 "_SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
899 "_XOPEN_SOURCE_EXTENDED"
900 msgstr ""
901 "_SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
902 "_XOPEN_SOURCE_EXTENDED"
903
904 #. type: Plain text
905 #: build/C/man3/insque.3:73
906 msgid ""
907 "The B<insque>()  and B<remque>()  functions manipulate doubly-linked lists.  "
908 "Each element in the list is a structure of which the first two elements are "
909 "a forward and a backward pointer.  The linked list may be linear (i.e., NULL "
910 "forward pointer at the end of the list and NULL backward pointer at the "
911 "start of the list)  or circular."
912 msgstr ""
913 "関数 B<insque>() と B<remque>() は双方向連結リスト (doubly-linked list) を\n"
914 "操作する。リスト中のそれぞれの要素は、最初の二つの要素がそれぞれ次と前への\n"
915 "ポインタであるような構造体である。\n"
916 "リンクリストは、線形 (linear) か環状 (circular) のどちらかになる\n"
917 "(線形の場合には、リストの末尾では次へのポインタが NULL になり、\n"
918 "リストの先頭では前へのポインタが NULL になる)。"
919
920 #. type: Plain text
921 #: build/C/man3/insque.3:78
922 msgid ""
923 "The B<insque>()  function inserts the element pointed to by I<elem> "
924 "immediately after the element pointed to by I<prev>."
925 msgstr ""
926 "B<insque>() 関数は I<elem> で示される要素を I<prev> で示される\n"
927 "要素の直後に挿入する。"
928
929 #. type: Plain text
930 #: build/C/man3/insque.3:85
931 msgid ""
932 "If the list is linear, then the call I<insque(elem, NULL)> can be used to "
933 "insert the initial list element, and the call sets the forward and backward "
934 "pointers of I<elem> to NULL."
935 msgstr ""
936 "リストが線形の場合、I<insque(elem, NULL)> を呼び出すと、\n"
937 "リストの最初の要素を挿入することができる。\n"
938 "この呼び出しを行うと I<elem> の次へのポインタと前へのポインタに\n"
939 "共に NULL が設定される。"
940
941 #. type: Plain text
942 #: build/C/man3/insque.3:94
943 msgid ""
944 "If the list is circular, the caller should ensure that the forward and "
945 "backward pointers of the first element are initialized to point to that "
946 "element, and the I<prev> argument of the B<insque>()  call should also point "
947 "to the element."
948 msgstr ""
949 "リストが環状の場合、呼び出す側が、最初の要素の次へのポインタと前へのポイン"
950 "タ\n"
951 "が自分自身を指し、また  B<insque>() の呼び出しで I<prev> 引き数が最初の要素\n"
952 "を指すように保証しなければならない。"
953
954 #. type: Plain text
955 #: build/C/man3/insque.3:99
956 msgid ""
957 "The B<remque>()  function removes the element pointed to by I<elem> from the "
958 "doubly-linked list."
959 msgstr ""
960 "B<remque>() 関数は I<elem> で示される要素を双方向連結リストから取り除く。"
961
962 #. type: Plain text
963 #: build/C/man3/insque.3:101
964 msgid "POSIX.1-2001."
965 msgstr "POSIX.1-2001."
966
967 #. type: Plain text
968 #: build/C/man3/insque.3:105
969 msgid ""
970 "Traditionally (e.g., SunOS, Linux libc 4 and libc 5), the arguments of these "
971 "functions were of type I<struct qelem *>, defined as:"
972 msgstr ""
973 "伝統的に (SunOS, Linux libc 4,5 では) これらの関数の引き数は I<struct qelem "
974 "*>型であり、これは以下のように定義されている。"
975
976 #. type: Plain text
977 #: build/C/man3/insque.3:113
978 #, no-wrap
979 msgid ""
980 "struct qelem {\n"
981 "    struct qelem *q_forw;\n"
982 "    struct qelem *q_back;\n"
983 "    char          q_data[1];\n"
984 "};\n"
985 msgstr ""
986 "struct qelem {\n"
987 "    struct qelem *q_forw;\n"
988 "    struct qelem *q_back;\n"
989 "    char          q_data[1];\n"
990 "};\n"
991
992 #. type: Plain text
993 #: build/C/man3/insque.3:120
994 msgid ""
995 "This is still what you will get if B<_GNU_SOURCE> is defined before "
996 "including I<E<lt>search.hE<gt>>."
997 msgstr ""
998 "この定義は I<E<lt>search.hE<gt>> をインクルードする前に B<_GNU_SOURCE> を定義"
999 "することで得られる。"
1000
1001 #. type: Plain text
1002 #: build/C/man3/insque.3:127
1003 msgid ""
1004 "The location of the prototypes for these functions differs among several "
1005 "versions of UNIX.  The above is the POSIX version.  Some systems place them "
1006 "in I<E<lt>string.hE<gt>>.  Linux libc4 and libc 5 placed them in "
1007 "I<E<lt>stdlib.hE<gt>>."
1008 msgstr ""
1009 "これらの関数のプロトタイプの置かれる場所は、UNIX の種類により異なる。\n"
1010 "上記は POSIX 版である。 I<E<lt>string.hE<gt>> にあるシステムもある。\n"
1011 "Linux libc4 と libc5 ではプロトタイプは I<E<lt>stdlib.hE<gt>> に置かれてい"
1012 "る。"
1013
1014 #. type: Plain text
1015 #: build/C/man3/insque.3:134
1016 msgid ""
1017 "In glibc 2.4 and earlier, it was not possible to specify I<prev> as NULL.  "
1018 "Consequently, to build a linear list, the caller had to build a list using "
1019 "an initial call that contained the first two elements of the list, with the "
1020 "forward and backward pointers in each element suitably initialized."
1021 msgstr ""
1022 "glibc 2.4 以前では I<prev> に NULL を指定することができなかった。\n"
1023 "その結果、線形のリストを作成するためには、\n"
1024 "呼び出し側は、最初の呼び出しで、リストの最初の 2 つの要素を持ち、\n"
1025 "各要素の次へのポインタと前へのポインタを適切に初期化したリストを\n"
1026 "作成しなければならなかった。"
1027
1028 #. type: Plain text
1029 #: build/C/man3/insque.3:138
1030 msgid ""
1031 "The program below demonstrates the use of B<insque>().  Here is an example "
1032 "run of the program:"
1033 msgstr ""
1034 "次のプログラムは B<insque>() の使用法を示したものである。\n"
1035 "下記はプログラムの実行例である。"
1036
1037 #. type: Plain text
1038 #: build/C/man3/insque.3:147
1039 #, no-wrap
1040 msgid ""
1041 "$ B<./a.out -c a b c>\n"
1042 "Traversing completed list:\n"
1043 "    a\n"
1044 "    b\n"
1045 "    c\n"
1046 "That was a circular list\n"
1047 msgstr ""
1048 "$ B<./a.out -c a b c>\n"
1049 "Traversing completed list:\n"
1050 "    a\n"
1051 "    b\n"
1052 "    c\n"
1053 "That was a circular list\n"
1054
1055 #. type: SS
1056 #: build/C/man3/insque.3:149
1057 #, no-wrap
1058 msgid "Program source"
1059 msgstr "プログラムのソース"
1060
1061 #. type: Plain text
1062 #: build/C/man3/insque.3:156
1063 #, no-wrap
1064 msgid ""
1065 "#include E<lt>stdio.hE<gt>\n"
1066 "#include E<lt>stdlib.hE<gt>\n"
1067 "#include E<lt>unistd.hE<gt>\n"
1068 "#include E<lt>search.hE<gt>\n"
1069 msgstr ""
1070 "#include E<lt>stdio.hE<gt>\n"
1071 "#include E<lt>stdlib.hE<gt>\n"
1072 "#include E<lt>unistd.hE<gt>\n"
1073 "#include E<lt>search.hE<gt>\n"
1074
1075 #. type: Plain text
1076 #: build/C/man3/insque.3:162
1077 #, no-wrap
1078 msgid ""
1079 "struct element {\n"
1080 "    struct element *forward;\n"
1081 "    struct element *backward;\n"
1082 "    char *name;\n"
1083 "};\n"
1084 msgstr ""
1085 "struct element {\n"
1086 "    struct element *forward;\n"
1087 "    struct element *backward;\n"
1088 "    char *name;\n"
1089 "};\n"
1090
1091 #. type: Plain text
1092 #: build/C/man3/insque.3:167
1093 #, no-wrap
1094 msgid ""
1095 "static struct element *\n"
1096 "new_element(void)\n"
1097 "{\n"
1098 "    struct element *e;\n"
1099 msgstr ""
1100 "static struct element *\n"
1101 "new_element(void)\n"
1102 "{\n"
1103 "    struct element *e;\n"
1104
1105 #. type: Plain text
1106 #: build/C/man3/insque.3:173
1107 #, no-wrap
1108 msgid ""
1109 "    e = malloc(sizeof(struct element));\n"
1110 "    if (e == NULL) {\n"
1111 "        fprintf(stderr, \"malloc() failed\\en\");\n"
1112 "        exit(EXIT_FAILURE);\n"
1113 "    }\n"
1114 msgstr ""
1115 "    e = malloc(sizeof(struct element));\n"
1116 "    if (e == NULL) {\n"
1117 "        fprintf(stderr, \"malloc() failed\\en\");\n"
1118 "        exit(EXIT_FAILURE);\n"
1119 "    }\n"
1120
1121 #. type: Plain text
1122 #: build/C/man3/insque.3:176
1123 #, no-wrap
1124 msgid ""
1125 "    return e;\n"
1126 "}\n"
1127 msgstr ""
1128 "    return e;\n"
1129 "}\n"
1130
1131 #. type: Plain text
1132 #: build/C/man3/insque.3:182
1133 #, no-wrap
1134 msgid ""
1135 "int\n"
1136 "main(int argc, char *argv[])\n"
1137 "{\n"
1138 "    struct element *first, *elem, *prev;\n"
1139 "    int circular, opt, errfnd;\n"
1140 msgstr ""
1141 "int\n"
1142 "main(int argc, char *argv[])\n"
1143 "{\n"
1144 "    struct element *first, *elem, *prev;\n"
1145 "    int circular, opt, errfnd;\n"
1146
1147 #. type: Plain text
1148 #: build/C/man3/insque.3:185
1149 #, no-wrap
1150 msgid ""
1151 "    /* The \"-c\" command-line option can be used to specify that the\n"
1152 "       list is circular */\n"
1153 msgstr ""
1154 "    /* The \"-c\" command-line option can be used to specify that the\n"
1155 "       list is circular */\n"
1156
1157 #. type: Plain text
1158 #: build/C/man3/insque.3:198
1159 #, no-wrap
1160 msgid ""
1161 "    errfnd = 0;\n"
1162 "    circular = 0;\n"
1163 "    while ((opt = getopt(argc, argv, \"c\")) != -1) {\n"
1164 "        switch (opt) {\n"
1165 "        case 'c':\n"
1166 "            circular = 1;\n"
1167 "            break;\n"
1168 "        default:\n"
1169 "            errfnd = 1;\n"
1170 "            break;\n"
1171 "        }\n"
1172 "    }\n"
1173 msgstr ""
1174 "    errfnd = 0;\n"
1175 "    circular = 0;\n"
1176 "    while ((opt = getopt(argc, argv, \"c\")) != -1) {\n"
1177 "        switch (opt) {\n"
1178 "        case 'c':\n"
1179 "            circular = 1;\n"
1180 "            break;\n"
1181 "        default:\n"
1182 "            errfnd = 1;\n"
1183 "            break;\n"
1184 "        }\n"
1185 "    }\n"
1186
1187 #. type: Plain text
1188 #: build/C/man3/insque.3:203
1189 #, no-wrap
1190 msgid ""
1191 "    if (errfnd || optind E<gt>= argc) {\n"
1192 "        fprintf(stderr,  \"Usage: %s [-c] string...\\en\", argv[0]);\n"
1193 "        exit(EXIT_FAILURE);\n"
1194 "    }\n"
1195 msgstr ""
1196 "    if (errfnd || optind E<gt>= argc) {\n"
1197 "        fprintf(stderr,  \"Usage: %s [-c] string...\\en\", argv[0]);\n"
1198 "        exit(EXIT_FAILURE);\n"
1199 "    }\n"
1200
1201 #. type: Plain text
1202 #: build/C/man3/insque.3:205
1203 #, no-wrap
1204 msgid "    /* Create first element and place it in the linked list */\n"
1205 msgstr "    /* Create first element and place it in the linked list */\n"
1206
1207 #. type: Plain text
1208 #: build/C/man3/insque.3:208
1209 #, no-wrap
1210 msgid ""
1211 "    elem = new_element();\n"
1212 "    first = elem;\n"
1213 msgstr ""
1214 "    elem = new_element();\n"
1215 "    first = elem;\n"
1216
1217 #. type: Plain text
1218 #: build/C/man3/insque.3:210
1219 #, no-wrap
1220 msgid "    elem-E<gt>name = argv[optind];\n"
1221 msgstr "    elem-E<gt>name = argv[optind];\n"
1222
1223 #. type: Plain text
1224 #: build/C/man3/insque.3:218
1225 #, no-wrap
1226 msgid ""
1227 "    if (circular) {\n"
1228 "        elem-E<gt>forward = elem;\n"
1229 "        elem-E<gt>backward = elem;\n"
1230 "        insque(elem, elem);\n"
1231 "    } else {\n"
1232 "        insque(elem, NULL);\n"
1233 "    }\n"
1234 msgstr ""
1235 "    if (circular) {\n"
1236 "        elem-E<gt>forward = elem;\n"
1237 "        elem-E<gt>backward = elem;\n"
1238 "        insque(elem, elem);\n"
1239 "    } else {\n"
1240 "        insque(elem, NULL);\n"
1241 "    }\n"
1242
1243 #. type: Plain text
1244 #: build/C/man3/insque.3:220
1245 #, no-wrap
1246 msgid "    /* Add remaining command-line arguments as list elements */\n"
1247 msgstr "    /* Add remaining command-line arguments as list elements */\n"
1248
1249 #. type: Plain text
1250 #: build/C/man3/insque.3:223
1251 #, no-wrap
1252 msgid ""
1253 "    while (++optind E<lt> argc) {\n"
1254 "        prev = elem;\n"
1255 msgstr ""
1256 "    while (++optind E<lt> argc) {\n"
1257 "        prev = elem;\n"
1258
1259 #. type: Plain text
1260 #: build/C/man3/insque.3:228
1261 #, no-wrap
1262 msgid ""
1263 "        elem = new_element();\n"
1264 "        elem-E<gt>name = argv[optind];\n"
1265 "        insque(elem, prev);\n"
1266 "    }\n"
1267 msgstr ""
1268 "        elem = new_element();\n"
1269 "        elem-E<gt>name = argv[optind];\n"
1270 "        insque(elem, prev);\n"
1271 "    }\n"
1272
1273 #. type: Plain text
1274 #: build/C/man3/insque.3:230
1275 #, no-wrap
1276 msgid "    /* Traverse the list from the start, printing element names */\n"
1277 msgstr "    /* Traverse the list from the start, printing element names */\n"
1278
1279 #. type: Plain text
1280 #: build/C/man3/insque.3:237
1281 #, no-wrap
1282 msgid ""
1283 "    printf(\"Traversing completed list:\\en\");\n"
1284 "    elem = first;\n"
1285 "    do {\n"
1286 "        printf(\"    %s\\en\", elem-E<gt>name);\n"
1287 "        elem = elem-E<gt>forward;\n"
1288 "    } while (elem != NULL && elem != first);\n"
1289 msgstr ""
1290 "    printf(\"Traversing completed list:\\en\");\n"
1291 "    elem = first;\n"
1292 "    do {\n"
1293 "        printf(\"    %s\\en\", elem-E<gt>name);\n"
1294 "        elem = elem-E<gt>forward;\n"
1295 "    } while (elem != NULL && elem != first);\n"
1296
1297 #. type: Plain text
1298 #: build/C/man3/insque.3:240
1299 #, no-wrap
1300 msgid ""
1301 "    if (elem == first)\n"
1302 "        printf(\"That was a circular list\\en\");\n"
1303 msgstr ""
1304 "    if (elem == first)\n"
1305 "        printf(\"That was a circular list\\en\");\n"
1306
1307 #. type: Plain text
1308 #: build/C/man3/insque.3:243
1309 #, no-wrap
1310 msgid ""
1311 "    exit(EXIT_SUCCESS);\n"
1312 "}\n"
1313 msgstr ""
1314 "    exit(EXIT_SUCCESS);\n"
1315 "}\n"
1316
1317 #. type: TH
1318 #: build/C/man3/lsearch.3:26
1319 #, no-wrap
1320 msgid "LSEARCH"
1321 msgstr "LSEARCH"
1322
1323 #. type: TH
1324 #: build/C/man3/lsearch.3:26
1325 #, no-wrap
1326 msgid "1999-09-27"
1327 msgstr "1999-09-27"
1328
1329 #. type: Plain text
1330 #: build/C/man3/lsearch.3:29
1331 msgid "lfind, lsearch - linear search of an array"
1332 msgstr "lfind, lsearch - 配列を線形検索する"
1333
1334 #. type: Plain text
1335 #: build/C/man3/lsearch.3:35
1336 #, no-wrap
1337 msgid ""
1338 "B<void *lfind(const void *>I<key>B<, const void *>I<base>B<, size_t *>I<nmemb>B<,>\n"
1339 "B<         size_t >I<size>B<, int(*>I<compar>B<)(const void *, const void *));>\n"
1340 msgstr ""
1341 "B<void *lfind(const void *>I<key>B<, const void *>I<base>B<, size_t *>I<nmemb>B<,>\n"
1342 "B<         size_t >I<size>B<, int(*>I<compar>B<)(const void *, const void *));>\n"
1343
1344 #. type: Plain text
1345 #: build/C/man3/lsearch.3:38
1346 #, no-wrap
1347 msgid ""
1348 "B<void *lsearch(const void *>I<key>B<, void *>I<base>B<, size_t *>I<nmemb>B<,>\n"
1349 "B<         size_t >I<size>B<, int(*>I<compar>B<)(const void *, const void *));>\n"
1350 msgstr ""
1351 "B<void *lsearch(const void *>I<key>B<, void *>I<base>B<, size_t *>I<nmemb>B<,>\n"
1352 "B<         size_t >I<size>B<, int(*>I<compar>B<)(const void *, const void *));>\n"
1353
1354 #. type: Plain text
1355 #: build/C/man3/lsearch.3:61
1356 msgid ""
1357 "B<lfind>()  and B<lsearch>()  perform a linear search for I<key> in the "
1358 "array I<base> which has I<*nmemb> elements of I<size> bytes each.  The "
1359 "comparison function referenced by I<compar> is expected to have two "
1360 "arguments which point to the I<key> object and to an array member, in that "
1361 "order, and which returns zero if the I<key> object matches the array member, "
1362 "and nonzero otherwise."
1363 msgstr ""
1364 "B<lfind>()  と B<lsearch>()  は、 I<size> バイトの要素 I<*nmemb> 個からなる配"
1365 "列 I<base> から、 I<key> を線形検索する。比較を行うのは I<compar> が参照して"
1366 "いる関数で、 これは 2つの引き数を持ち、1つめの引き数が I<key> を、2つめの引き"
1367 "数は配列メンバーを指す。また I<compar> は、 I<key> が配列のメンバーとマッチし"
1368 "たなら 0、そうでなければ 0 以外を返すことが期待されている。"
1369
1370 #. type: Plain text
1371 #: build/C/man3/lsearch.3:72
1372 msgid ""
1373 "If B<lsearch>()  does not find a matching element, then the I<key> object is "
1374 "inserted at the end of the table, and I<*nmemb> is incremented.  In "
1375 "particular, one should know that a matching element exists, or that more "
1376 "room is available."
1377 msgstr ""
1378 "B<lsearch>()  は、マッチする要素を見つけられなかったとき、 配列の最後に "
1379 "I<key> をつけ加える。そして I<*nmemb> を 1 ふやす。 したがって、この関数を使"
1380 "用する際には、マッチする要素が存在するか、 もしくは配列に要素を追加するための"
1381 "領域があるか、を把握しておく必要がある。"
1382
1383 #. type: Plain text
1384 #: build/C/man3/lsearch.3:80
1385 msgid ""
1386 "B<lfind>()  returns a pointer to a matching member of the array, or NULL if "
1387 "no match is found.  B<lsearch>()  returns a pointer to a matching member of "
1388 "the array, or to the newly added member if no match is found."
1389 msgstr ""
1390 "B<lfind>()  の返り値は、配列のマッチしたメンバーへのポインタである。 もしマッ"
1391 "チするメンバーが見つからないと NULL を返す。 B<lsearch>()  の返り値も、配列の"
1392 "マッチしたメンバーへのポインタである。 マッチするメンバーが見つからなかったと"
1393 "きは、 新たにつけ加えたメンバーへのポインタを返す。"
1394
1395 #. type: Plain text
1396 #: build/C/man3/lsearch.3:83
1397 msgid "SVr4, 4.3BSD, POSIX.1-2001.  Present in libc since libc-4.6.27."
1398 msgstr ""
1399 "SVr4, 4.3BSD, POSIX.1-2001.  libc には libc-4.6.27 以降で実装されている。"
1400
1401 #. type: Plain text
1402 #: build/C/man3/lsearch.3:85
1403 msgid "The naming is unfortunate."
1404 msgstr "関数の名前の選び方がよくない。"
1405
1406 #. type: Plain text
1407 #: build/C/man3/lsearch.3:89
1408 msgid "B<bsearch>(3), B<hsearch>(3), B<tsearch>(3)"
1409 msgstr "B<bsearch>(3), B<hsearch>(3), B<tsearch>(3)"
1410
1411 #. type: TH
1412 #: build/C/man3/qsort.3:37
1413 #, no-wrap
1414 msgid "QSORT"
1415 msgstr "QSORT"
1416
1417 #. type: TH
1418 #: build/C/man3/qsort.3:37
1419 #, no-wrap
1420 msgid "2012-03-08"
1421 msgstr "2012-03-08"
1422
1423 #. type: Plain text
1424 #: build/C/man3/qsort.3:40
1425 msgid "qsort, qsort_r - sort an array"
1426 msgstr "qsort, qsort_r - 配列を並べ変える"
1427
1428 #. type: Plain text
1429 #: build/C/man3/qsort.3:46
1430 #, no-wrap
1431 msgid ""
1432 "B<void qsort(void *>I<base>B<, size_t >I<nmemb>B<, size_t >I<size>B<,>\n"
1433 "B<           int (*>I<compar>B<)(const void *, const void *));>\n"
1434 msgstr ""
1435 "B<void qsort(void *>I<base>B<, size_t >I<nmemb>B<, size_t >I<size>B<,>\n"
1436 "B<           int (*>I<compar>B<)(const void *, const void *));>\n"
1437
1438 #. type: Plain text
1439 #: build/C/man3/qsort.3:50
1440 #, no-wrap
1441 msgid ""
1442 "B<void qsort_r(void *>I<base>B<, size_t >I<nmemb>B<, size_t >I<size>B<,>\n"
1443 "B<           int (*>I<compar>B<)(const void *, const void *, void *),>\n"
1444 "B<           void *>I<arg>B<);>\n"
1445 msgstr ""
1446 "B<void qsort_r(void *>I<base>B<, size_t >I<nmemb>B<, size_t >I<size>B<,>\n"
1447 "B<           int (*>I<compar>B<)(const void *, const void *, void *),>\n"
1448 "B<           void *>I<arg>B<);>\n"
1449
1450 #. type: Plain text
1451 #: build/C/man3/qsort.3:60
1452 msgid "B<qsort_r>(): _GNU_SOURCE"
1453 msgstr "B<qsort_r>(): _GNU_SOURCE"
1454
1455 #. type: Plain text
1456 #: build/C/man3/qsort.3:68
1457 msgid ""
1458 "The B<qsort>()  function sorts an array with I<nmemb> elements of size "
1459 "I<size>.  The I<base> argument points to the start of the array."
1460 msgstr ""
1461 "B<qsort>()  関数は、 I<nmemb> 個の大きさ I<size> の要素をもつ配列を並べ変え"
1462 "る。 I<base> 引き数は配列の先頭へのポインタである。"
1463
1464 #. type: Plain text
1465 #: build/C/man3/qsort.3:72
1466 msgid ""
1467 "The contents of the array are sorted in ascending order according to a "
1468 "comparison function pointed to by I<compar>, which is called with two "
1469 "arguments that point to the objects being compared."
1470 msgstr ""
1471 "I<compar> をポインタとする比較関数によって、 配列の中身は昇順 (値の大きいもの"
1472 "ほど後に並ぶ順番) に並べられる。 比較関数の引き数は比較されるふたつのオブジェ"
1473 "クトのポインタである。"
1474
1475 #. type: Plain text
1476 #: build/C/man3/qsort.3:78
1477 msgid ""
1478 "The comparison function must return an integer less than, equal to, or "
1479 "greater than zero if the first argument is considered to be respectively "
1480 "less than, equal to, or greater than the second.  If two members compare as "
1481 "equal, their order in the sorted array is undefined."
1482 msgstr ""
1483 "比較関数は、第一引き数が第二引き数に対して、 1) 小さい、2) 等しい、3) 大きい"
1484 "のそれぞれに応じて、 1) ゼロより小さい整数、2) ゼロ、3) ゼロより大きい整数の "
1485 "いずれかを返さなければならない。 二つの要素の比較結果が等しいとき、 並べ変え"
1486 "た後の配列では、これら二つの順序は規定されていない。"
1487
1488 #. type: Plain text
1489 #: build/C/man3/qsort.3:91
1490 msgid ""
1491 "The B<qsort_r>()  function is identical to B<qsort>()  except that the "
1492 "comparison function I<compar> takes a third argument.  A pointer is passed "
1493 "to the comparison function via I<arg>.  In this way, the comparison function "
1494 "does not need to use global variables to pass through arbitrary arguments, "
1495 "and is therefore reentrant and safe to use in threads."
1496 msgstr ""
1497 "B<qsort_r>() 関数は B<qsort>() と同じだが、比較関数 I<compar> が第 3 引き数"
1498 "を\n"
1499 "取る点が異なる。ポインタが I<arg> 経由で比較関数に渡される。\n"
1500 "これにより、比較関数は任意の引き数を渡すためにグローバル変数を使う必要がなく"
1501 "なり、\n"
1502 "そのため、リエントラント (再入可能) で安全にスレッドで使用できるようになる。"
1503
1504 #. type: Plain text
1505 #: build/C/man3/qsort.3:97
1506 msgid "The B<qsort>()  and B<qsort_r>()  functions return no value."
1507 msgstr "関数 B<qsort>() と B<qsort_r>() は値を返さない。"
1508
1509 #. type: SH
1510 #: build/C/man3/qsort.3:97
1511 #, no-wrap
1512 msgid "VERSIONS"
1513 msgstr "バージョン"
1514
1515 #. type: Plain text
1516 #: build/C/man3/qsort.3:100
1517 msgid "B<qsort_r>()  was added to glibc in version 2.8."
1518 msgstr "B<qsort_r>() は glibc バージョン 2.8 で追加された。"
1519
1520 #. type: Plain text
1521 #: build/C/man3/qsort.3:104
1522 msgid "The B<qsort>()  function conforms to SVr4, 4.3BSD, C89, C99."
1523 msgstr "B<qsort>() 関数は SVr4, 4.3BSD, C89, C99 に準拠している。"
1524
1525 #. type: Plain text
1526 #: build/C/man3/qsort.3:116
1527 msgid ""
1528 "Library routines suitable for use as the I<compar> argument to B<qsort>()  "
1529 "include B<alphasort>(3)  and B<versionsort>(3).  To compare C strings, the "
1530 "comparison function can call B<strcmp>(3), as shown in the example below."
1531 msgstr ""
1532 "B<qsort>() の I<compar> 引き数に使用するのに適しているライブラリルーチンと\n"
1533 "しては B<alphasort>(3), B<versionsort>(3) がある。 C の文字列を比較する場"
1534 "合、\n"
1535 "以下の例にあるように比較関数で B<strcmp>(3) を呼び出すこともできる。"
1536
1537 #. type: Plain text
1538 #: build/C/man3/qsort.3:119
1539 msgid "For one example of use, see the example under B<bsearch>(3)."
1540 msgstr "使用例については、 B<bsearch>(3)  にある例を参照すること。"
1541
1542 #. type: Plain text
1543 #: build/C/man3/qsort.3:122
1544 msgid ""
1545 "Another example is the following program, which sorts the strings given in "
1546 "its command-line arguments:"
1547 msgstr ""
1548 "以下のプログラムに別の使用例を示す。このプログラムは、 コマンドライン引き数で"
1549 "指定された文字列の並び換えを行う。"
1550
1551 #. type: Plain text
1552 #: build/C/man3/qsort.3:134
1553 #, no-wrap
1554 msgid ""
1555 "static int\n"
1556 "cmpstringp(const void *p1, const void *p2)\n"
1557 "{\n"
1558 "    /* The actual arguments to this function are \"pointers to\n"
1559 "       pointers to char\", but strcmp(3) arguments are \"pointers\n"
1560 "       to char\", hence the following cast plus dereference */\n"
1561 msgstr ""
1562 "static int\n"
1563 "cmpstringp(const void *p1, const void *p2)\n"
1564 "{\n"
1565 "    /* この関数の実際の引き数は \"char 型へのポインタのポインタ\" だが、\n"
1566 "       strcmp(3) の引き数は \"char 型へのポインタ\" である。\n"
1567 "       そこで、以下のようにキャストをしてからポインタの逆参照を行う。*/\n"
1568
1569 #. type: Plain text
1570 #: build/C/man3/qsort.3:137
1571 #, no-wrap
1572 msgid ""
1573 "    return strcmp(* (char * const *) p1, * (char * const *) p2);\n"
1574 "}\n"
1575 msgstr ""
1576 "    return strcmp(* (char * const *) p1, * (char * const *) p2);\n"
1577 "}\n"
1578
1579 #. type: Plain text
1580 #: build/C/man3/qsort.3:142
1581 #, no-wrap
1582 msgid ""
1583 "int\n"
1584 "main(int argc, char *argv[])\n"
1585 "{\n"
1586 "    int j;\n"
1587 msgstr ""
1588 "int\n"
1589 "main(int argc, char *argv[])\n"
1590 "{\n"
1591 "    int j;\n"
1592
1593 #. type: Plain text
1594 #: build/C/man3/qsort.3:147
1595 #, fuzzy, no-wrap
1596 #| msgid ""
1597 #| "    if (argc E<lt> 2) {\n"
1598 #| "\tfprintf(stderr, \"Usage: %s E<lt>stringE<gt>...\\en\", argv[0]);\n"
1599 #| "\texit(EXIT_FAILURE);\n"
1600 #| "    }\n"
1601 msgid ""
1602 "    if (argc E<lt> 2) {\n"
1603 "        fprintf(stderr, \"Usage: %s E<lt>stringE<gt>...\\en\", argv[0]);\n"
1604 "        exit(EXIT_FAILURE);\n"
1605 "    }\n"
1606 msgstr ""
1607 "    if (argc E<lt> 2) {\n"
1608 "\tfprintf(stderr, \"Usage: %s E<lt>stringE<gt>...\\en\", argv[0]);\n"
1609 "\texit(EXIT_FAILURE);\n"
1610 "    }\n"
1611
1612 #. type: Plain text
1613 #: build/C/man3/qsort.3:149
1614 #, no-wrap
1615 msgid "    qsort(&argv[1], argc - 1, sizeof(char *), cmpstringp);\n"
1616 msgstr "    qsort(&argv[1], argc - 1, sizeof(char *), cmpstringp);\n"
1617
1618 #. type: Plain text
1619 #: build/C/man3/qsort.3:154
1620 #, no-wrap
1621 msgid ""
1622 "    for (j = 1; j E<lt> argc; j++)\n"
1623 "        puts(argv[j]);\n"
1624 "    exit(EXIT_SUCCESS);\n"
1625 "}\n"
1626 msgstr ""
1627 "    for (j = 1; j E<lt> argc; j++)\n"
1628 "        puts(argv[j]);\n"
1629 "    exit(EXIT_SUCCESS);\n"
1630 "}\n"
1631
1632 #. type: Plain text
1633 #: build/C/man3/qsort.3:160
1634 msgid "B<sort>(1), B<alphasort>(3), B<strcmp>(3), B<versionsort>(3)"
1635 msgstr "B<sort>(1), B<alphasort>(3), B<strcmp>(3), B<versionsort>(3)"
1636
1637 #. type: TH
1638 #: build/C/man3/tsearch.3:25
1639 #, no-wrap
1640 msgid "TSEARCH"
1641 msgstr "TSEARCH"
1642
1643 #. type: Plain text
1644 #: build/C/man3/tsearch.3:28
1645 msgid "tsearch, tfind, tdelete, twalk, tdestroy - manage a binary tree"
1646 msgstr "tsearch, tfind, tdelete, twalk, tdestroy - 二分木 (binary tree) の操作"
1647
1648 #. type: Plain text
1649 #: build/C/man3/tsearch.3:34
1650 #, no-wrap
1651 msgid ""
1652 "B<void *tsearch(const void *>I<key>B<, void **>I<rootp>B<,>\n"
1653 "B<                int (*>I<compar>B<)(const void *, const void *));>\n"
1654 msgstr ""
1655 "B<void *tsearch(const void *>I<key>B<, void **>I<rootp>B<,>\n"
1656 "B<                int (*>I<compar>B<)(const void *, const void *));>\n"
1657
1658 #. type: Plain text
1659 #: build/C/man3/tsearch.3:37
1660 #, no-wrap
1661 msgid ""
1662 "B<void *tfind(const void *>I<key>B<, const void **>I<rootp>B<,>\n"
1663 "B<                int (*>I<compar>B<)(const void *, const void *));>\n"
1664 msgstr ""
1665 "B<void *tfind(const void *>I<key>B<, const void **>I<rootp>B<,>\n"
1666 "B<                int (*>I<compar>B<)(const void *, const void *));>\n"
1667
1668 #. type: Plain text
1669 #: build/C/man3/tsearch.3:40
1670 #, no-wrap
1671 msgid ""
1672 "B<void *tdelete(const void *>I<key>B<, void **>I<rootp>B<,>\n"
1673 "B<                int (*>I<compar>B<)(const void *, const void *));>\n"
1674 msgstr ""
1675 "B<void *tdelete(const void *>I<key>B<, void **>I<rootp>B<,>\n"
1676 "B<                int (*>I<compar>B<)(const void *, const void *));>\n"
1677
1678 #. type: Plain text
1679 #: build/C/man3/tsearch.3:44
1680 #, no-wrap
1681 msgid ""
1682 "B<void twalk(const void *>I<root>B<, void (*>I<action>B<)(const void *>I<nodep>B<,>\n"
1683 "B<                                   const VISIT >I<which>B<,>\n"
1684 "B<                                   const int >I<depth>B<));>\n"
1685 msgstr ""
1686 "B<void twalk(const void *>I<root>B<, void (*>I<action>B<)(const void *>I<nodep>B<,>\n"
1687 "B<                                   const VISIT >I<which>B<,>\n"
1688 "B<                                   const int >I<depth>B<));>\n"
1689
1690 #. type: Plain text
1691 #: build/C/man3/tsearch.3:50
1692 #, no-wrap
1693 msgid "B<void tdestroy(void *>I<root>B<, void (*>I<free_node>B<)(void *>I<nodep>B<));>\n"
1694 msgstr "B<void tdestroy(void *>I<root>B<, void (*>I<free_node>B<)(void *>I<nodep>B<));>\n"
1695
1696 #. type: Plain text
1697 #: build/C/man3/tsearch.3:69
1698 msgid ""
1699 "B<tsearch>(), B<tfind>(), B<twalk>(), and B<tdelete>()  manage a binary "
1700 "tree.  They are generalized from Knuth (6.2.2) Algorithm T.  The first field "
1701 "in each node of the tree is a pointer to the corresponding data item.  (The "
1702 "calling program must store the actual data.)  I<compar> points to a "
1703 "comparison routine, which takes pointers to two items.  It should return an "
1704 "integer which is negative, zero, or positive, depending on whether the first "
1705 "item is less than, equal to, or greater than the second."
1706 msgstr ""
1707 "B<tsearch>(), B<tfind>(), B<twalk>(), B<tdelete>()  は 二分木を操作する関数で"
1708 "ある。 これらの関数は Knuth (6.2.2) Algorithm T に基づいている。 木構造におけ"
1709 "る各ノードの最初のフィールドは、対応するデータ・ アイテムへのポインタであ"
1710 "る。 (参照先のデータは、呼び出しプログラムで用意する。)  I<compar> は比較ルー"
1711 "チンへのポインタである。 比較ルーチンは、アイテムへのポインタ 2 つを引き数に"
1712 "持つ。 比較ルーチンの返り値は、1 つ目のアイテムが 2 つ目のアイテムよりも 「小"
1713 "さい、等しい、大きい」によって、 「負、0、正」の整数値でなければならない。"
1714
1715 #. type: Plain text
1716 #: build/C/man3/tsearch.3:88
1717 msgid ""
1718 "B<tsearch>()  searches the tree for an item.  I<key> points to the item to "
1719 "be searched for.  I<rootp> points to a variable which points to the root of "
1720 "the tree.  If the tree is empty, then the variable that I<rootp> points to "
1721 "should be set to NULL.  If the item is found in the tree, then B<tsearch>()  "
1722 "returns a pointer to it.  If it is not found, then B<tsearch>()  adds it, "
1723 "and returns a pointer to the newly added item."
1724 msgstr ""
1725 "B<tsearch>()  は、木構造からアイテムを検索する関数である。 I<key> は、検索す"
1726 "るアイテムへのポインタである。 I<rootp> は木構造の根へのポインタへのポインタ"
1727 "である。 木構造がノードを含まない場合、I<rootp> の参照している変数は NULL に"
1728 "設定されていなければならない。 木構造にアイテムが見つかった場合、 B<tsearch>"
1729 "()  はそのアイテムへのポインタを返す。 見つからなかった場合は、アイテムを木構"
1730 "造に追加し、 追加したアイテムへのポインタを返す。"
1731
1732 #. type: Plain text
1733 #: build/C/man3/tsearch.3:96
1734 msgid ""
1735 "B<tfind>()  is like B<tsearch>(), except that if the item is not found, then "
1736 "B<tfind>()  returns NULL."
1737 msgstr ""
1738 "B<tfind>()  は、 B<tsearch>()  に似ているが、 アイテムが見つからなかった場合 "
1739 "NULL を返す点が異なる。"
1740
1741 #. type: Plain text
1742 #: build/C/man3/tsearch.3:101
1743 msgid ""
1744 "B<tdelete>()  deletes an item from the tree.  Its arguments are the same as "
1745 "for B<tsearch>()."
1746 msgstr ""
1747 "B<tdelete>()  は木構造からアイテムを削除する。 引き数は B<tsearch>()  と同じ"
1748 "である。"
1749
1750 #. type: Plain text
1751 #: build/C/man3/tsearch.3:136
1752 msgid ""
1753 "B<twalk>()  performs depth-first, left-to-right traversal of a binary tree.  "
1754 "I<root> points to the starting node for the traversal.  If that node is not "
1755 "the root, then only part of the tree will be visited.  B<twalk>()  calls the "
1756 "user function I<action> each time a node is visited (that is, three times "
1757 "for an internal node, and once for a leaf).  I<action>, in turn, takes three "
1758 "arguments.  The first argument is a pointer to the node being visited.  The "
1759 "structure of the node is unspecified, but it is possible to cast the pointer "
1760 "to a pointer-to-pointer-to-element in order to access the element stored "
1761 "within the node.  The application must not modify the structure pointed to "
1762 "by this argument.  The second argument is an integer which takes one of the "
1763 "values B<preorder>, B<postorder>, or B<endorder> depending on whether this "
1764 "is the first, second, or third visit to the internal node, or the value "
1765 "B<leaf> if this is the single visit to a leaf node.  (These symbols are "
1766 "defined in I<E<lt>search.hE<gt>>.)  The third argument is the depth of the "
1767 "node; the root node has depth zero."
1768 msgstr ""
1769 "B<twalk>()  は、二分木を深さ優先 (depth-first) で、 左から右にたどっていく関"
1770 "数である。 I<root> は起点となるノードへのポインタである。 I<root> に根以外の"
1771 "ノードを指定すると、部分木が対象となる。 B<twalk>()  は、ノードを訪れる度に"
1772 "ユーザ関数 I<action> を呼び出す (内部ノードに対しては 3 回、葉に対しては 1 回"
1773 "呼び出しが行われる)。 I<action> には以下の順に 3 つの引き数が与えられる。 最"
1774 "初の引き数は訪れたノードへのポインタである。 ノードの構造体は規定されていない"
1775 "が、 ポインタを要素へのポインタのポインタにキャストし、 ノードに格納された要"
1776 "素にアクセスすることができる。 アプリケーションは、この引き数が指す構造体を変"
1777 "更してはならない。 2 番目の引き数には、内部ノードの場合は訪問回数に応じて "
1778 "B<preorder>, B<postorder>, B<endorder> のいずれかの整数が、 葉を最初に訪れた"
1779 "場合は B<leaf> の値が渡される (これらのシンボルは I<E<lt>search.hE<gt>> で定"
1780 "義されている)。  3 番目の引き数はノードの深さで、根の場合は深さ 0 である。"
1781
1782 #. type: Plain text
1783 #: build/C/man3/tsearch.3:152
1784 msgid ""
1785 "(More commonly, B<preorder>, B<postorder>, and B<endorder> are known as "
1786 "B<preorder>, B<inorder>, and B<postorder>: before visiting the children, "
1787 "after the first and before the second, and after visiting the children.  "
1788 "Thus, the choice of name B<post\\%order> is rather confusing.)"
1789 msgstr ""
1790 "(より一般的には、B<preorder>, B<postorder>, B<endorder> は B<preorder>, "
1791 "B<inorder>, B<postorder> として知られている: それぞれ、子要素を辿る前・最初の"
1792 "子要素を辿った後かつ 2 番目の子要素を辿る前・ 子要素を辿った後ということを表"
1793 "している。 よって B<post\\%order> という名前を選ぶのは少し紛らわしい。)"
1794
1795 #. type: Plain text
1796 #: build/C/man3/tsearch.3:167
1797 msgid ""
1798 "B<tdestroy>()  removes the whole tree pointed to by I<root>, freeing all "
1799 "resources allocated by the B<tsearch>()  function.  For the data in each "
1800 "tree node the function I<free_node> is called.  The pointer to the data is "
1801 "passed as the argument to the function.  If no such work is necessary, "
1802 "I<free_node> must point to a function doing nothing."
1803 msgstr ""
1804 "B<tdestroy>()  は I<root> が指す木構造全体を削除し、 B<tsearch>()  関数で確保"
1805 "されたリソースを全て解放する。 木構造の各ノードについて、関数 I<free_node> が"
1806 "呼び出される。 データへのポインタがこの関数の引き数として渡される。 そのよう"
1807 "な動作が必要でなければ、 I<free_node> は何もしない関数へのポインタでなければ"
1808 "ならない。"
1809
1810 #. type: Plain text
1811 #: build/C/man3/tsearch.3:177
1812 msgid ""
1813 "B<tsearch>()  returns a pointer to a matching item in the tree, or to the "
1814 "newly added item, or NULL if there was insufficient memory to add the item.  "
1815 "B<tfind>()  returns a pointer to the item, or NULL if no match is found.  If "
1816 "there are multiple elements that match the key, the element returned is "
1817 "unspecified."
1818 msgstr ""
1819 "B<tsearch>()  は、木構造に見つかったアイテムか、 新しく追加したアイテムへのポ"
1820 "インタを返す。 メモリの不足のためアイテムを追加できなかった場合は NULL を返"
1821 "す。 B<tfind>()  は、アイテムへのポインタを返す。 一致するアイテムが見つから"
1822 "ない場合は NULL を返す。 検索条件に一致する要素が複数ある場合、返される値は不"
1823 "定である。"
1824
1825 #. type: Plain text
1826 #: build/C/man3/tsearch.3:181
1827 msgid ""
1828 "B<tdelete>()  returns a pointer to the parent of the item deleted, or NULL "
1829 "if the item was not found."
1830 msgstr ""
1831 "B<tdelete>()  は削除したアイテムの親へのポインタを返す。 アイテムが見つからな"
1832 "かった場合は NULL を返す。"
1833
1834 #. type: Plain text
1835 #: build/C/man3/tsearch.3:190
1836 msgid ""
1837 "B<tsearch>(), B<tfind>(), and B<tdelete>()  also return NULL if I<rootp> was "
1838 "NULL on entry."
1839 msgstr ""
1840 "I<rootp> が NULL の場合、 B<tsearch>(), B<tfind>(), B<tdelete>()  は NULL を"
1841 "返す。"
1842
1843 #. type: Plain text
1844 #: build/C/man3/tsearch.3:195
1845 msgid "SVr4, POSIX.1-2001.  The function B<tdestroy>()  is a GNU extension."
1846 msgstr "SVr4, POSIX.1-2001.  関数 B<tdestroy>()  は GNU の拡張である。"
1847
1848 #. type: Plain text
1849 #: build/C/man3/tsearch.3:199
1850 msgid ""
1851 "B<twalk>()  takes a pointer to the root, while the other functions take a "
1852 "pointer to a variable which points to the root."
1853 msgstr ""
1854 "B<twalk>()  は根へのポインタを引き数にとるが、 ほかの関数は根へのポインタへの"
1855 "ポインタである。"
1856
1857 #. type: Plain text
1858 #: build/C/man3/tsearch.3:204
1859 msgid ""
1860 "B<tdelete>()  frees the memory required for the node in the tree.  The user "
1861 "is responsible for freeing the memory for the corresponding data."
1862 msgstr ""
1863 "B<tdelete>()  は、削除したノードの使用していたメモリを解放するが、 ノードに対"
1864 "応するデータのメモリは、ユーザが解放しなければならない。"
1865
1866 #. type: Plain text
1867 #: build/C/man3/tsearch.3:212
1868 msgid ""
1869 "The example program depends on the fact that B<twalk>()  makes no further "
1870 "reference to a node after calling the user function with argument \"endorder"
1871 "\" or \"leaf\".  This works with the GNU library implementation, but is not "
1872 "in the System V documentation."
1873 msgstr ""
1874 "下のプログラム例は、ユーザ関数が \"endorder\" か \"leaf\" を引き数にして 呼び"
1875 "出されて以降は、 B<twalk>()  がそのノードを参照しないことを前提としている。 "
1876 "これは GNU ライブラリの実装では機能するが、System V のマニュアルには存在しな"
1877 "い。"
1878
1879 #. type: Plain text
1880 #: build/C/man3/tsearch.3:216
1881 msgid ""
1882 "The following program inserts twelve random numbers into a binary tree, "
1883 "where duplicate numbers are collapsed, then prints the numbers in order."
1884 msgstr ""
1885 "以下のプログラムは 12 個の乱数を二分木に挿入した後、 挿入した数を順番に出力す"
1886 "る (挿入の際、重複した乱数は 1 つにまとめられる)。"
1887
1888 #. type: Plain text
1889 #: build/C/man3/tsearch.3:223
1890 #, no-wrap
1891 msgid ""
1892 "#define _GNU_SOURCE     /* Expose declaration of tdestroy() */\n"
1893 "#include E<lt>search.hE<gt>\n"
1894 "#include E<lt>stdlib.hE<gt>\n"
1895 "#include E<lt>stdio.hE<gt>\n"
1896 "#include E<lt>time.hE<gt>\n"
1897 msgstr ""
1898 "#define _GNU_SOURCE     /* Expose declaration of tdestroy() */\n"
1899 "#include E<lt>search.hE<gt>\n"
1900 "#include E<lt>stdlib.hE<gt>\n"
1901 "#include E<lt>stdio.hE<gt>\n"
1902 "#include E<lt>time.hE<gt>\n"
1903
1904 #. type: Plain text
1905 #: build/C/man3/tsearch.3:225
1906 #, fuzzy, no-wrap
1907 #| msgid "void *root = NULL;\n"
1908 msgid "static void *root = NULL;\n"
1909 msgstr "void *root = NULL;\n"
1910
1911 #. type: Plain text
1912 #: build/C/man3/tsearch.3:236
1913 #, fuzzy, no-wrap
1914 #| msgid ""
1915 #| "void *\n"
1916 #| "xmalloc(unsigned n)\n"
1917 #| "{\n"
1918 #| "    void *p;\n"
1919 #| "    p = malloc(n);\n"
1920 #| "    if (p)\n"
1921 #| "        return p;\n"
1922 #| "    fprintf(stderr, \"insufficient memory\\en\");\n"
1923 #| "    exit(EXIT_FAILURE);\n"
1924 #| "}\n"
1925 msgid ""
1926 "static void *\n"
1927 "xmalloc(unsigned n)\n"
1928 "{\n"
1929 "    void *p;\n"
1930 "    p = malloc(n);\n"
1931 "    if (p)\n"
1932 "        return p;\n"
1933 "    fprintf(stderr, \"insufficient memory\\en\");\n"
1934 "    exit(EXIT_FAILURE);\n"
1935 "}\n"
1936 msgstr ""
1937 "void *\n"
1938 "xmalloc(unsigned n)\n"
1939 "{\n"
1940 "    void *p;\n"
1941 "    p = malloc(n);\n"
1942 "    if (p)\n"
1943 "        return p;\n"
1944 "    fprintf(stderr, \"insufficient memory\\en\");\n"
1945 "    exit(EXIT_FAILURE);\n"
1946 "}\n"
1947
1948 #. type: Plain text
1949 #: build/C/man3/tsearch.3:246
1950 #, fuzzy, no-wrap
1951 #| msgid ""
1952 #| "int\n"
1953 #| "compare(const void *pa, const void *pb)\n"
1954 #| "{\n"
1955 #| "    if (*(int *) pa E<lt> *(int *) pb)\n"
1956 #| "        return -1;\n"
1957 #| "    if (*(int *) pa E<gt> *(int *) pb)\n"
1958 #| "        return 1;\n"
1959 #| "    return 0;\n"
1960 #| "}\n"
1961 msgid ""
1962 "static int\n"
1963 "compare(const void *pa, const void *pb)\n"
1964 "{\n"
1965 "    if (*(int *) pa E<lt> *(int *) pb)\n"
1966 "        return -1;\n"
1967 "    if (*(int *) pa E<gt> *(int *) pb)\n"
1968 "        return 1;\n"
1969 "    return 0;\n"
1970 "}\n"
1971 msgstr ""
1972 "int\n"
1973 "compare(const void *pa, const void *pb)\n"
1974 "{\n"
1975 "    if (*(int *) pa E<lt> *(int *) pb)\n"
1976 "        return -1;\n"
1977 "    if (*(int *) pa E<gt> *(int *) pb)\n"
1978 "        return 1;\n"
1979 "    return 0;\n"
1980 "}\n"
1981
1982 #. type: Plain text
1983 #: build/C/man3/tsearch.3:251
1984 #, fuzzy, no-wrap
1985 #| msgid ""
1986 #| "void\n"
1987 #| "action(const void *nodep, const VISIT which, const int depth)\n"
1988 #| "{\n"
1989 #| "    int *datap;\n"
1990 msgid ""
1991 "static void\n"
1992 "action(const void *nodep, const VISIT which, const int depth)\n"
1993 "{\n"
1994 "    int *datap;\n"
1995 msgstr ""
1996 "void\n"
1997 "action(const void *nodep, const VISIT which, const int depth)\n"
1998 "{\n"
1999 "    int *datap;\n"
2000
2001 #. type: Plain text
2002 #: build/C/man3/tsearch.3:267
2003 #, no-wrap
2004 msgid ""
2005 "    switch (which) {\n"
2006 "    case preorder:\n"
2007 "        break;\n"
2008 "    case postorder:\n"
2009 "        datap = *(int **) nodep;\n"
2010 "        printf(\"%6d\\en\", *datap);\n"
2011 "        break;\n"
2012 "    case endorder:\n"
2013 "        break;\n"
2014 "    case leaf:\n"
2015 "        datap = *(int **) nodep;\n"
2016 "        printf(\"%6d\\en\", *datap);\n"
2017 "        break;\n"
2018 "    }\n"
2019 "}\n"
2020 msgstr ""
2021 "    switch (which) {\n"
2022 "    case preorder:\n"
2023 "        break;\n"
2024 "    case postorder:\n"
2025 "        datap = *(int **) nodep;\n"
2026 "        printf(\"%6d\\en\", *datap);\n"
2027 "        break;\n"
2028 "    case endorder:\n"
2029 "        break;\n"
2030 "    case leaf:\n"
2031 "        datap = *(int **) nodep;\n"
2032 "        printf(\"%6d\\en\", *datap);\n"
2033 "        break;\n"
2034 "    }\n"
2035 "}\n"
2036
2037 #. type: Plain text
2038 #: build/C/man3/tsearch.3:273
2039 #, no-wrap
2040 msgid ""
2041 "int\n"
2042 "main(void)\n"
2043 "{\n"
2044 "    int i, *ptr;\n"
2045 "    void *val;\n"
2046 msgstr ""
2047 "int\n"
2048 "main(void)\n"
2049 "{\n"
2050 "    int i, *ptr;\n"
2051 "    void *val;\n"
2052
2053 #. type: Plain text
2054 #: build/C/man3/tsearch.3:288
2055 #, no-wrap
2056 msgid ""
2057 "    srand(time(NULL));\n"
2058 "    for (i = 0; i E<lt> 12; i++) {\n"
2059 "        ptr = xmalloc(sizeof(int));\n"
2060 "        *ptr = rand() & 0xff;\n"
2061 "        val = tsearch((void *) ptr, &root, compare);\n"
2062 "        if (val == NULL)\n"
2063 "            exit(EXIT_FAILURE);\n"
2064 "        else if ((*(int **) val) != ptr)\n"
2065 "            free(ptr);\n"
2066 "    }\n"
2067 "    twalk(root, action);\n"
2068 "    tdestroy(root, free);\n"
2069 "    exit(EXIT_SUCCESS);\n"
2070 "}\n"
2071 msgstr ""
2072 "    srand(time(NULL));\n"
2073 "    for (i = 0; i E<lt> 12; i++) {\n"
2074 "        ptr = xmalloc(sizeof(int));\n"
2075 "        *ptr = rand() & 0xff;\n"
2076 "        val = tsearch((void *) ptr, &root, compare);\n"
2077 "        if (val == NULL)\n"
2078 "            exit(EXIT_FAILURE);\n"
2079 "        else if ((*(int **) val) != ptr)\n"
2080 "            free(ptr);\n"
2081 "    }\n"
2082 "    twalk(root, action);\n"
2083 "    tdestroy(root, free);\n"
2084 "    exit(EXIT_SUCCESS);\n"
2085 "}\n"
2086
2087 #. type: Plain text
2088 #: build/C/man3/tsearch.3:294
2089 msgid "B<bsearch>(3), B<hsearch>(3), B<lsearch>(3), B<qsort>(3)"
2090 msgstr "B<bsearch>(3), B<hsearch>(3), B<lsearch>(3)  B<qsort>(3)"
2091
2092 #~ msgid "2013-07-22"
2093 #~ msgstr "2013-07-22"
2094
2095 #~ msgid "2012-08-03"
2096 #~ msgstr "2012-08-03"