OSDN Git Service

LDP: Address fuzzy changes (man3)
authorAkihiro Motoki <amotoki@gmail.com>
Fri, 2 Apr 2021 05:31:15 +0000 (14:31 +0900)
committerAkihiro Motoki <amotoki@gmail.com>
Fri, 2 Apr 2021 05:31:15 +0000 (14:31 +0900)
12 files changed:
manual/LDP_man-pages/draft/man3/__setfpucw.3
manual/LDP_man-pages/draft/man3/addseverity.3
manual/LDP_man-pages/draft/man3/argz_add.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/backtrace.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/basename.3
manual/LDP_man-pages/draft/man3/envz_add.3 [new file with mode: 0644]
manual/LDP_man-pages/draft/man3/ftok.3
manual/LDP_man-pages/draft/man3/offsetof.3
manual/LDP_man-pages/draft/man3/realpath.3
manual/LDP_man-pages/po4a/man3/po/ja.po
manual/LDP_man-pages/stats/man3
manual/LDP_man-pages/untrans.html

index 2b81f09..5e343a7 100644 (file)
@@ -39,7 +39,7 @@ glibc 2.1 以降では、この関数は存在しない。 新たな関数群が
 .PP
 FPU のコントロールワードへどうしても直接アクセスする必要がある場合には、 \fI<fpu_control.h>\fP の
 \fB_FPU_GETCW\fP マクロと \fB_FPU_SETCW\fP マクロを用いることは可能である。
-.SH EXAMPLES
+.SH 
 \fB__setfpucw(0x1372)\fP
 .PP
 Set FPU control word on the i386 architecture to
index d5295f1..301cb65 100644 (file)
@@ -33,9 +33,9 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 .RE
 .PP
 \fBaddseverity\fP():
-    Since glibc 2.19:
+    glibc 2.19 以降:
         _DEFAULT_SOURCE
-    Glibc 2.19 and earlier:
+    Glibc 2.19 以前:
         _SVID_SOURCE
 .SH 説明
 この関数により、新しい重大度を導入できる。 この重大度は、 \fBfmtmsg\fP(3)  関数の \fIseverity\fP 引き数に入れることができる。
diff --git a/manual/LDP_man-pages/draft/man3/argz_add.3 b/manual/LDP_man-pages/draft/man3/argz_add.3
new file mode 100644 (file)
index 0000000..b7aa871
--- /dev/null
@@ -0,0 +1,143 @@
+.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" Distributed under GPL
+.\" %%%LICENSE_END
+.\"
+.\" based on the description in glibc source and infopages
+.\"
+.\" Corrections and additions, aeb
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
+.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI, all rights reserved.
+.\" Translated Mon Feb  2 2003 by Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\"
+.TH ARGZ_ADD 3 2020\-11\-01 "" "Linux Programmer's Manual"
+.SH 名前
+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 リストを操作するための関数群
+.SH 書式
+.nf
+\fB#include <argz.h>\fP
+.PP
+\fBerror_t argz_add(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, const char *\fP\fIstr\fP\fB);\fP
+.PP
+\fBerror_t argz_add_sep(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB,\fP
+\fB                     const char *\fP\fIstr\fP\fB, int \fP\fIdelim\fP\fB);\fP
+.PP
+\fBerror_t argz_append(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB,\fP
+\fB                     const char *\fP\fIbuf\fP\fB, size_t \fP\fIbuf_len\fP\fB);\fP
+.PP
+\fBsize_t argz_count(const char *\fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB);\fP
+.PP
+\fBerror_t argz_create(char * const \fP\fIargv\fP\fB[], char **\fP\fIargz\fP\fB,\fP
+\fB                     size_t *\fP\fIargz_len\fP\fB);\fP
+.PP
+\fBerror_t argz_create_sep(const char *\fP\fIstr\fP\fB, int \fP\fIsep\fP\fB, char **\fP\fIargz\fP\fB,\fP
+\fB                     size_t *\fP\fIargz_len\fP\fB);\fP
+.PP
+\fBvoid argz_delete(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, char *\fP\fIentry\fP\fB);\fP
+.PP
+\fBvoid argz_extract(const char *\fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB, char **\fP\fIargv\fP\fB);\fP
+.PP
+\fBerror_t argz_insert(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, char *\fP\fIbefore\fP\fB,\fP
+\fB                     const char *\fP\fIentry\fP\fB);\fP
+.PP
+\fBchar *argz_next(const char *\fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB, const char *\fP\fIentry\fP\fB);\fP
+.PP
+\fBerror_t argz_replace(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, const char *\fP\fIstr\fP\fB,\fP
+\fB                     const char *\fP\fIwith\fP\fB, unsigned int *\fP\fIreplace_count\fP\fB);\fP
+.PP
+\fBvoid argz_stringify(char *\fP\fIargz\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIsep\fP\fB);\fP
+.fi
+.SH 説明
+これらの関数は glibc 固有である。
+.PP
+argz vector は長さ情報付きの文字バッファーへのポインターである。 文字バッファーでは、複数の文字列がヌルバイト (\(aq\e0\(aq)
+で区切られており、 文字列の配列として解釈されるようになっている。 長さが 0 でない場合、バッファーの最後のバイトはヌルバイトでなければならない。
+.PP
+これらの関数は argz vector を操作するためのものである。 ペア (NULL,0) は argz vector であり、逆に言えば 長さ 0
+の argz vectorはヌルポインターを持たなければならない。 空でない argz vector の割り当ては \fBmalloc\fP(3)
+を使って行われる。したがって、argz vector を解放するのに \fBfree\fP(3)  を使うことができる。
+.PP
+\fBargz_add\fP()  は、文字列 \fIstr\fP を配列 \fI*argz\fP の末尾に追加し、 \fI*argz\fP と \fI*argz_len\fP
+を更新する。
+.PP
+\fBargz_add_sep\fP()  も同様の動作をするが、区切り文字 \fIdelim\fP にしたがって文字列 \fIstr\fP
+を複数の文字列に分割する点が異なる。 例えば、区切り文字 \(aq:\(aq を指定して、UNIX サーチパスに対して
+この関数を使うことができるだろう。
+.PP
+\fBargz_append\fP()  は argz vector (\fIbuf\fP,\ \fIbuf_len\fP)  の後ろに (\fI*argz\fP,\ \fI*argz_len\fP) を付け加え、 \fI*argz\fP と \fI*argz_len\fP を更新する。 (したがって、 \fI*argz_len\fP は
+\fIbuf_len\fP だけ増加する。)
+.PP
+\fBargz_count\fP()  は (\fIargz\fP,\ \fIargz_len\fP)  内の文字列の数を数える。実際にはヌルバイト
+(\(aq\e0\(aq) の数を数えている。
+.PP
+\fBargz_create\fP() は、UNIX 流の引き数ベクトルである (\fI(char\ *)\ 0\fP で終端される) \fIargv\fP を、argz
+vector (\fI*argz\fP,\ \fI*argz_len\fP)  に変換する。
+.PP
+\fBargz_create_sep\fP()  は、ヌル終端された文字列 \fIstr\fP を区切り文字 \fIsep\fP が現れる毎に分割しながら、argz
+vector (*\fIargz\fP,\ \fI*argz_len\fP)  に変換する。
+.PP
+\fBargz_delete\fP()  は、 \fIentry\fP で指し示された文字列を argz vector (\fI*argz\fP,\ \fI*argz_len\fP) から削除し、 \fI*argz\fP と \fI*argz_len\fP を更新する。
+.PP
+\fBargz_extract\fP()  は \fBargz_create\fP()  の反対の操作を行う。argz vector (\fIargz\fP,\ \fIargz_len\fP)  を調べ、 \fIargv\fP から始まる配列をサブ文字列へのポインターで埋めていき、 一番最後に NULL を入れて、UNIX
+流の argv ベクトルを作成する。 配列 \fIargv\fP は \fIargz_count\fP(\fIargz\fP,\fIargz_len\fP) + 1
+個のポインターを収容できる空間を持っていなければならない。
+.PP
+\fBargz_insert\fP()  は \fBargz_delete\fP()  の反対の操作を行う。argz vector (\fI*argz\fP,\ \fI*argz_len\fP)  の位置 \fIbefore\fP に引き数 \fIentry\fP を挿入し、 \fI*argz\fP と \fI*argz_len\fP
+を更新する。 \fIbefore\fP が NULL の場合、 \fIentry\fP は末尾に挿入される。
+.PP
+\fBargz_next\fP()  は argz vector を順番に調べるための関数である。 \fIentry\fP が NULL
+の場合、最初のエントリーを返す。 そうでない場合、次のエントリーを返す。 次のエントリーがない場合、NULL を返す。
+.PP
+\fBargz_replace\fP()  は、 \fIstr\fP をすべて \fIwith\fP で置き換える (必要に応じて argz の再割り当てを行う)。
+\fIreplace_count\fP が NULL でない場合、 \fI*replace_count\fP を置き換えを行った数だけ増やす。
+.PP
+\fBargz_stringify\fP()  は \fBargz_create_sep\fP()  の反対の操作を行う。 末尾の ヌルバイト以外の全てのヌルバイト
+(\(aq\e0\(aq) を \fIsep\fP で置き換えて、 argz vector を通常の文字列に変換する。
+.SH 返り値
+メモリー割り当てを行う argz 関数群はすべて \fIerror_t\fP 型 (integer 型) の返り値を持つ。 成功した場合は 0
+を返し、割り当てエラーが発生した場合は \fBENOMEM\fP を返す。
+.SH 属性
+この節で使用されている用語の説明については、 \fBattributes\fP(7) を参照。
+.TS
+allbox;
+lbw33 lb lb
+l l l.
+インターフェース       属性  値
+T{
+\fBargz_add\fP(),
+\fBargz_add_sep\fP(),
+.br
+\fBargz_append\fP(),
+\fBargz_count\fP(),
+.br
+\fBargz_create\fP(),
+\fBargz_create_sep\fP(),
+.br
+\fBargz_delete\fP(),
+\fBargz_extract\fP(),
+.br
+\fBargz_insert\fP(),
+\fBargz_next\fP(),
+.br
+\fBargz_replace\fP(),
+\fBargz_stringify\fP()
+T}     Thread safety   MT\-Safe
+.TE
+.sp 1
+.SH 準拠
+これらの関数は GNU による拡張である。
+.SH バグ
+ヌルバイトで終端されていない argz vector を使用した場合、 segmentation fault を起こすかもしれない。
+.SH 関連項目
+\fBenvz_add\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
+\%https://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/manual/LDP_man-pages/draft/man3/backtrace.3 b/manual/LDP_man-pages/draft/man3/backtrace.3
new file mode 100644 (file)
index 0000000..b9579c2
--- /dev/null
@@ -0,0 +1,198 @@
+.\" Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
+.\" drawing on material by Justin Pryzby <pryzbyj@justinpryzby.com>
+.\"
+.\" %%%LICENSE_START(PERMISSIVE_MISC)
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be
+.\" included in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+.\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+.\" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+.\" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+.\" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+.\" %%%LICENSE_END
+.\"
+.\" References:
+.\"   glibc manual and source
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
+.\" Japanese Version Copyright (c) 2007  Akihiro MOTOKI
+.\"         all rights reserved.
+.\" Translated 2007-10-16, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.66
+.\"
+.TH BACKTRACE 3 2020\-11\-01 GNU "Linux Programmer's Manual"
+.SH 名前
+backtrace, backtrace_symbols, backtrace_symbols_fd \- アプリケーション自身でのデバッグのサポート
+.SH 書式
+\fB#include <execinfo.h>\fP
+.PP
+\fBint backtrace(void\fP \fB**\fP\fIbuffer\fP\fB,\fP \fBint\fP \fIsize\fP\fB);\fP
+.PP
+\fBchar **backtrace_symbols(void *const\fP \fB*\fP\fIbuffer\fP\fB,\fP \fBint\fP
+\fIsize\fP\fB);\fP
+.PP
+\fBvoid backtrace_symbols_fd(void *const\fP \fB*\fP\fIbuffer\fP\fB,\fP \fBint\fP
+\fIsize\fP\fB,\fP \fBint\fP \fIfd\fP\fB);\fP
+.SH 説明
+\fBbacktrace\fP()  は、呼び出したプログラムのバックトレースを \fIbuffer\fP が指す配列に入れて返す。バックトレースは、プログラムで
+現在動作中の関数呼び出しの並びである。 \fIbuffer\fP が指す配列の個々の要素は \fIvoid\ *\fP 型で、
+対応するスタックフレームからのリターンアドレスである。 \fIsize\fP 引き数は \fIbuffer\fP に格納できるアドレスの最大個数を指定する。
+バックトレースが \fIsize\fP より大きい場合、 \fIsize\fP 個の直近の関数呼び出しに対応するアドレスが返される。
+完全なバックトレースを取得するためには、確実に \fIbuffer\fP と \fIsize\fP が十分大きくなるようにすること。
+.PP
+\fBbacktrace\fP()  によって \fIbuffer\fP にアドレスの集合が得られたら、 \fBbacktrace_symbols\fP()
+によって、アドレス集合を、そのアドレスをシンボルで表した文字列の配列 に翻訳できる。 \fIsize\fP 引き数は \fIbuffer\fP
+に格納されたアドレスの数を指定する。 個々のアドレスのシンボル表現は、関数名 (特定できた場合)、 関数へのオフセット
+(16進表記)、実際のリターンアドレス (16進表記)  から構成される。 \fBbacktrace_symbols\fP()  の実行結果としては、
+文字列ポインターの配列のアドレスが返される。 この配列は \fBbacktrace_symbols\fP()  によって \fBmalloc\fP(3)
+され、呼び出し側で free しなければならない (ポインターの配列が指す個々の文字列は free する必要はないし、 free すべきでもない)。
+.PP
+\fBbacktrace_symbols_fd\fP()  は、 \fBbacktrace_symbols\fP()  と同じ引き数 \fIbuffer\fP と
+\fIsize\fP をとるが、呼び出し側に文字列の配列を返す代わりに、 文字列をファイルディスクリプター \fIfd\fP に 1 行に 1
+エントリーの形で書き込む。 \fBbacktrace_symbols_fd\fP()  は \fBmalloc\fP(3)  を呼び出さない。
+そのため、これに続く関数が失敗する可能性がある状況でも利用できるが、「注意」も参照のこと。
+.SH 返り値
+\fBbacktrace\fP()  は \fIbuffer\fP に格納したアドレスの個数を返す。その個数は \fIsize\fP より大きくなることはない。 返り値が
+\fIsize\fP より小さい場合、バックトレース全体が格納されている。返り値が \fIsize\fP
+と等しい場合、バックトレースは切り詰められているかもしれない。 切り詰められた場合、最も古いスタックフレームのアドレスは 返されないことになる。
+.PP
+\fBbacktrace_symbols\fP()  は、成功すると、この呼び出しで \fBmalloc\fP(3)  された配列へのポインターを返す。
+エラーの場合、 NULL を返す。
+.SH バージョン
+\fBbacktrace\fP(), \fBbacktrace_symbols\fP(), \fBbacktrace_symbols_fd\fP()  はバージョン
+2.1 以降の glibc で提供されている。
+.SH 属性
+この節で使用されている用語の説明については、 \fBattributes\fP(7) を参照。
+.TS
+allbox;
+lbw22 lb lb
+l l l.
+インターフェース       属性  値
+T{
+\fBbacktrace\fP(),
+.br
+\fBbacktrace_symbols\fP(),
+.br
+\fBbacktrace_symbols_fd\fP()
+T}     Thread safety   MT\-Safe
+.TE
+.SH 準拠
+これらの関数は GNU による拡張である。
+.SH 注意
+これらの関数は、関数のリターンアドレスがスタック上でどのように格納されるか に関してある仮定を置いている。 以下の点に注意。
+.IP * 3
+(\fBgcc\fP(1)  の 0 以外の最適化レベルで暗黙のうちに行われる)  フレームポインターの省略を行うと、これらの前提が崩れる可能性がある。
+.IP *
+インライン関数はスタックフレームを持たない。
+.IP *
+末尾呼び出しの最適化 (tail\-call optimization) を行うと、 あるスタックフレームが別のスタックフレームを置き換える可能性がある。
+.IP *
+\fBbacktrace\fP()  and \fBbacktrace_symbols_fd\fP()  don't call \fBmalloc\fP()
+explicitly, but they are part of \fIlibgcc\fP, which gets loaded dynamically
+when first used.  Dynamic loading usually triggers a call to \fBmalloc\fP(3).
+If you need certain calls to these two functions to not allocate memory (in
+signal handlers, for example), you need to make sure \fIlibgcc\fP is loaded
+beforehand.
+.PP
+シンボル名は特別なリンカーオプションを使用しないと利用できない場合がある。 GNU リンカーを使用するシステムでは、 \fI\-rdynamic\fP
+リンカーオプションを使う必要がある。 "static" な関数のシンボル名は公開されず、 バックトレースでは利用できない点に注意すること。
+.SH 例
+以下のプログラムは、 \fBbacktrace\fP()  と \fBbacktrace_symbols\fP()  の使用例を示したものである。
+以下に示すシェルのセッションは、 このプログラムを動かした際の実行例である。
+.PP
+.in +4n
+.EX
+$\fB cc \-rdynamic prog.c \-o prog\fP
+$\fB ./prog 3\fP
+backtrace() returned 8 addresses
+\&./prog(myfunc3+0x5c) [0x80487f0]
+\&./prog [0x8048871]
+\&./prog(myfunc+0x21) [0x8048894]
+\&./prog(myfunc+0x1a) [0x804888d]
+\&./prog(myfunc+0x1a) [0x804888d]
+\&./prog(main+0x65) [0x80488fb]
+\&/lib/libc.so.6(__libc_start_main+0xdc) [0xb7e38f9c]
+\&./prog [0x8048711]
+.EE
+.in
+.SS プログラムのソース
+\&
+.EX
+#include <execinfo.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define BT_BUF_SIZE 100
+
+void
+myfunc3(void)
+{
+    int nptrs;
+    void *buffer[BT_BUF_SIZE];
+    char **strings;
+
+    nptrs = backtrace(buffer, BT_BUF_SIZE);
+    printf("backtrace() returned %d addresses\en", nptrs);
+
+    /* backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO) を
+       呼び出しても、以下と同様の出力が得られる。 */
+
+    strings = backtrace_symbols(buffer, nptrs);
+    if (strings == NULL) {
+        perror("backtrace_symbols");
+        exit(EXIT_FAILURE);
+    }
+
+    for (int j = 0; j < nptrs; j++)
+        printf("%s\en", strings[j]);
+
+    free(strings);
+}
+
+static void   /* "static" はシンボルを公開しないことを意味する */
+myfunc2(void)
+{
+    myfunc3();
+}
+
+void
+myfunc(int ncalls)
+{
+    if (ncalls > 1)
+        myfunc(ncalls \- 1);
+    else
+        myfunc2();
+}
+
+int
+main(int argc, char *argv[])
+{
+    if (argc != 2) {
+        fprintf(stderr, "%s num\-calls\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    myfunc(atoi(argv[1]));
+    exit(EXIT_SUCCESS);
+}
+.EE
+.SH 関連項目
+\fBaddr2line\fP(1), \fBgcc\fP(1), \fBgdb\fP(1), \fBld\fP(1), \fBdlopen\fP(3), \fBmalloc\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
+\%https://www.kernel.org/doc/man\-pages/ に書かれている。
index 7da10db..019a56c 100644 (file)
@@ -106,7 +106,7 @@ POSIX.1\-2001, POSIX.1\-2008.
 .PP
 .in +4n
 .EX
-\fB    #define _GNU_SOURCE\fP         /* See feature_test_macros(7) */
+\fB    #define _GNU_SOURCE\fP         /* feature_test_macros(7) 参照 */
 \fB#include <string.h>\fP
 .EE
 .in
@@ -117,14 +117,12 @@ GNU バージョンは引き数を変更することはなく、 \fIpath\fP の
 glibc では、 \fI<libgen.h>\fP をインクルードすると POSIX バージョンの \fBbasename\fP()
 が使用され、それ以外の場合は GNU バージョンとなる。
 .SH バグ
-In the glibc implementation, the POSIX versions of these functions modify
-the \fIpath\fP argument, and segfault when called with a static string such as
-"/usr/".
+glibc の実装では、これらの関数の POSIX バージョンは \fIpath\fP 引き数が変更され、 "/usr/"
+などの静的文字列を指定されるとセグメンテーションフォールトを起こす。
 .PP
-Before glibc 2.2.1, the glibc version of \fBdirname\fP()  did not correctly
-handle pathnames with trailing \(aq/\(aq characters, and generated a
-segfault if given a NULL argument.
-.SH EXAMPLES
+バージョン 2.2.1 以前の glibc では、 glibc の \fBdirname\fP()  は末尾が \(aq/\(aq
+文字になっているパス名を正しく扱えず、 引き数が NULL だとセグメンテーションフォールトを起こした。
+.SH 例
 The following code snippet demonstrates the use of \fBbasename\fP()  and
 \fBdirname\fP():
 .in +4n
diff --git a/manual/LDP_man-pages/draft/man3/envz_add.3 b/manual/LDP_man-pages/draft/man3/envz_add.3
new file mode 100644 (file)
index 0000000..a6f2d21
--- /dev/null
@@ -0,0 +1,120 @@
+.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" Distributed under GPL
+.\" %%%LICENSE_END
+.\"
+.\" based on the description in glibc source and infopages
+.\"
+.\" Corrections and additions, aeb
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.\"
+.\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI, all rights reserved.
+.\" Translated Mon Feb  2 2003 by Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\"
+.TH ENVZ_ADD 3 2020\-11\-01 "" "Linux Programmer's Manual"
+.SH 名前
+envz_add, envz_entry, envz_get, envz_merge, envz_remove, envz_strip \-
+環境変数文字列の操作
+.SH 書式
+.nf
+\fB#include <envz.h>\fP
+.PP
+\fBerror_t envz_add(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB,\fP
+\fB                 const char *\fP\fIname\fP\fB, const char *\fP\fIvalue\fP\fB);\fP
+.PP
+\fBchar *envz_entry(const char *\fP\fIenvz\fP\fB, size_t \fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP
+.PP
+\fBchar *envz_get(const char *\fP\fIenvz\fP\fB, size_t \fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP
+.PP
+\fBerror_t envz_merge(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB,\fP
+\fB                   const char *\fP\fIenvz2\fP\fB, size_t \fP\fIenvz2_len\fP\fB, int \fP\fIoverride\fP\fB);\fP
+.PP
+\fBvoid envz_remove(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP
+.PP
+\fBvoid envz_strip(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB);\fP
+.fi
+.SH 説明
+これらの関数は glibc 固有である。
+.PP
+argz vector は長さ情報付きの文字バッファーへのポインターである。 \fBargz_add\fP(3)  を参照のこと。 envz vector
+は、文字列が "name=value (名前=値)" の形式になっている特別な argz vector である。 最初の \(aq=\(aq
+以降はすべて値とみなされる。\(aq=\(aq がなければ、 値は NULL と解釈される。(文字列の一番最後の文字が \(aq=\(aq
+の場合、値は空文字列 "" と解釈される。)
+.PP
+これらの関数は envz vector を操作するためのものである。
+.PP
+\fBenvz_add\fP()  は、文字列 "\fIname\fP=\fIvalue\fP" (\fIvalue\fP が NULL でない場合) または
+"\fIname\fP" (\fIvalue\fP が NULL の場合) を envz vector (\fI*envz\fP,\ \fI*envz_len\fP)
+に追加し、 \fI*envz\fP と \fI*envz_len\fP を更新する。 \fIname\fP
+と同じ名前を持つエントリーがあった場合、元のエントリーは削除される。
+.PP
+\fBenvz_entry\fP()  は、envz vector (\fIenvz\fP,\ \fIenvz_len\fP)  から名前が \fIname\fP
+のエントリーを検索する。 見つかった場合はそのエントリーを返し、見つからなかった場合は NULL を返す。
+.PP
+\fBenvz_get\fP()  は、envz vector (\fIenvz\fP,\ \fIenvz_len\fP)  から名前が \fIname\fP
+のエントリーを検索する。 見つかった場合はエントリーの値を返し、見つからなかった場合は NULL を返す。 (値は NULL
+の場合もあることに注意すること。名前が \fIname\fP のエントリーに \(aq=\(aq 符号がない場合が該当する。)
+.PP
+\fBenvz_merge\fP()  は、 \fBenvz_add\fP()  と同じように \fIenvz2\fP の各エントリーを \fI*envz\fP に追加する。
+\fIoverride\fP が真の場合、 \fIenvz2\fP の値で \fI*envz\fP 内の同じ名前をもつ値は上書きされる。 偽の場合は上書きされない。
+.PP
+\fBenvz_remove\fP()  は、名前が \fIname\fP のエントリーがあれば (\fI*envz\fP,\ \fI*envz_len\fP)
+から削除する。
+.PP
+\fBenvz_strip\fP()  は、値が NULL のエントリーをすべて削除する。
+.SH 返り値
+メモリー割り当てを行う envz 関数群はすべて \fIerror_t\fP 型 (integer 型) の返り値を持つ。 成功した場合は 0
+を返し、割り当てエラーが発生した場合は \fBENOMEM\fP を返す。
+.SH 属性
+この節で使用されている用語の説明については、 \fBattributes\fP(7) を参照。
+.TS
+allbox;
+lbw27 lb lb
+l l l.
+インターフェース       属性  値
+T{
+\fBenvz_add\fP(),
+\fBenvz_entry\fP(),
+.br
+\fBenvz_get\fP(),
+\fBenvz_merge\fP(),
+.br
+\fBenvz_remove\fP(),
+\fBenvz_strip\fP()
+T}     Thread safety   MT\-Safe
+.TE
+.sp 1
+.SH 準拠
+これらの関数は GNU による拡張である。
+.SH 例
+.EX
+#include <stdio.h>
+#include <stdlib.h>
+#include <envz.h>
+
+int
+main(int argc, char *argv[], char *envp[])
+{
+    int e_len = 0;
+    char *str;
+
+    for (int i = 0; envp[i] != NULL; i++)
+        e_len += strlen(envp[i]) + 1;
+
+    str = envz_entry(*envp, e_len, "HOME");
+    printf("%s\en", str);
+    str = envz_get(*envp, e_len, "HOME");
+    printf("%s\en", str);
+    exit(EXIT_SUCCESS);
+}
+.EE
+.SH 関連項目
+\fBargz_add\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
+\%https://www.kernel.org/doc/man\-pages/ に書かれている。
index cc140c1..aaa7d2e 100644 (file)
@@ -84,8 +84,8 @@ POSIX.1\-2001, POSIX.1\-2008.
 もちろん \fIkey_t\fP が他と重ならないものであるかどうかは保証されない。 最善の場合の組み合わせを考えても、 \fIproj_id\fP の 1
 バイト、i ノード番号の低位 16 ビット、および デバイス番号の低位 8 ビットなので、結果は 32 ビットに過ぎない。 例えば
 \fI/dev/hda1\fP と \fI/dev/sda1\fP それぞれにあるファイルに対して、衝突は容易に起こりうる。
-.SH EXAMPLES
-See \fBsemget\fP(2).
+.SH 
+\fBsemget\fP(2) を参照。
 .SH 関連項目
 \fBmsgget\fP(2), \fBsemget\fP(2), \fBshmget\fP(2), \fBstat\fP(2), \fBsysvipc\fP(7)
 .SH この文書について
index 89e40ac..66373f3 100644 (file)
@@ -55,7 +55,7 @@ offsetof \- 構造体のメンバーのオフセットを返す
 \fBoffsetof\fP()  は、指定された \fImember\fP の指定された \fItype\fP の中でのオフセットを、バイト単位で返す。
 .SH 準拠
 POSIX.1\-2001, POSIX.1\-2008, C89, C99.
-.SH EXAMPLES
+.SH 
 Linux/i386 システムで、 \fBgcc\fP(1)  のデフォルトオプションで コンパイルされた場合、下記のプログラムは以下のような出力を返す。
 .PP
 .in +4n
index 5dbc2f0..6588692 100644 (file)
@@ -61,8 +61,8 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 .RS 4
 .\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 _XOPEN_SOURCE\ >=\ 500
-    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
-    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
+    || /* glibc 2.19 以降: */ _DEFAULT_SOURCE
+    || /* glibc 2.19 以前: */ _BSD_SOURCE
 .RE
 .ad
 .SH 説明
@@ -109,7 +109,7 @@ _XOPEN_SOURCE\ >=\ 500
 指定されたファイルが存在しない。
 .TP 
 \fBENOMEM\fP
-Out of memory.
+メモリ不足。
 .TP 
 \fBENOTDIR\fP
 パスのディレクトリ要素が、ディレクトリでない。
index 33fc406..0d1d9d5 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "POT-Creation-Date: 2021-03-12 14:00+0900\n"
-"PO-Revision-Date: 2021-03-26 13:31+0900\n"
+"PO-Revision-Date: 2021-04-02 01:13+0900\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: \n"
@@ -159,8 +159,7 @@ msgstr ""
 #: build/C/man3/__setfpucw.3:51 build/C/man3/backtrace.3:199
 #: build/C/man3/basename.3:181 build/C/man3/envz_add.3:141
 #: build/C/man3/ftok.3:115 build/C/man3/offsetof.3:65
-#, fuzzy, no-wrap
-#| msgid "EXAMPLE"
+#, no-wrap
 msgid "EXAMPLES"
 msgstr "例"
 
@@ -235,7 +234,7 @@ msgstr "ADDSEVERITY"
 #: build/C/man3/addseverity.3:9
 #, no-wrap
 msgid "2016-03-15"
-msgstr ""
+msgstr "2016-03-15"
 
 #. type: TH
 #: build/C/man3/addseverity.3:9 build/C/man3/backtrace.3:27
@@ -279,6 +278,11 @@ msgid ""
 "    Glibc 2.19 and earlier:\n"
 "        _SVID_SOURCE\n"
 msgstr ""
+"B<addseverity>():\n"
+"    glibc 2.19 以降:\n"
+"        _DEFAULT_SOURCE\n"
+"    Glibc 2.19 以前:\n"
+"        _SVID_SOURCE\n"
 
 #. type: Plain text
 #: build/C/man3/addseverity.3:52
@@ -443,7 +447,7 @@ msgstr "ARGZ_ADD"
 #: build/C/man3/envz_add.3:10 build/C/man3/offsetof.3:28
 #, no-wrap
 msgid "2020-11-01"
-msgstr ""
+msgstr "2020-11-01"
 
 #. type: Plain text
 #: build/C/man3/argz_add.3:15
@@ -522,10 +526,9 @@ msgstr "B<void argz_delete(char **>I<argz>B<, size_t *>I<argz_len>B<, char *>I<e
 
 #. type: Plain text
 #: build/C/man3/argz_add.3:39
-#, fuzzy, no-wrap
-#| msgid "B<void argz_extract(const char *>I<argz>B<, size_t >I<argz_len>B<, char  **>I<argv>B<);>\n"
+#, no-wrap
 msgid "B<void argz_extract(const char *>I<argz>B<, size_t >I<argz_len>B<, char **>I<argv>B<);>\n"
-msgstr "B<void argz_extract(const char *>I<argz>B<, size_t >I<argz_len>B<, char  **>I<argv>B<);>\n"
+msgstr "B<void argz_extract(const char *>I<argz>B<, size_t >I<argz_len>B<, char **>I<argv>B<);>\n"
 
 #. type: Plain text
 #: build/C/man3/argz_add.3:42
@@ -688,11 +691,6 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man3/argz_add.3:173
-#, fuzzy
-#| 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."
 msgid ""
 "B<argz_next>()  is a function to step through the argz vector.  If I<entry> "
 "is NULL, the first entry is returned.  Otherwise, the entry following is "
@@ -726,18 +724,11 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man3/argz_add.3:199
-#, fuzzy
-#| 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."
 msgid ""
 "All argz functions that do memory allocation have a return type of "
 "I<error_t> (an integer type), and return 0 for success, and B<ENOMEM> if an "
 "allocation error occurs."
-msgstr ""
-"メモリー割り当てを行う argz 関数群はすべて I<error_t> 型の返り値を持つ。 成功"
-"した場合は 0 を返し、割り当てエラーが発生した場合は B<ENOMEM> を返す。"
+msgstr "メモリー割り当てを行う argz 関数群はすべて I<error_t> 型 (integer 型) の返り値を持つ。 成功した場合は 0 を返し、割り当てエラーが発生した場合は B<ENOMEM> を返す。"
 
 #. type: tbl table
 #: build/C/man3/argz_add.3:210
@@ -746,6 +737,8 @@ msgid ""
 "B<argz_add>(),\n"
 "B<argz_add_sep>(),\n"
 msgstr ""
+"B<argz_add>(),\n"
+"B<argz_add_sep>(),\n"
 
 #. type: tbl table
 #: build/C/man3/argz_add.3:210 build/C/man3/argz_add.3:213
@@ -755,7 +748,7 @@ msgstr ""
 #: build/C/man3/envz_add.3:133
 #, no-wrap
 msgid ".br\n"
-msgstr ""
+msgstr ".br\n"
 
 #. type: tbl table
 #: build/C/man3/argz_add.3:213
@@ -764,6 +757,8 @@ msgid ""
 "B<argz_append>(),\n"
 "B<argz_count>(),\n"
 msgstr ""
+"B<argz_append>(),\n"
+"B<argz_count>(),\n"
 
 #. type: tbl table
 #: build/C/man3/argz_add.3:216
@@ -772,6 +767,8 @@ msgid ""
 "B<argz_create>(),\n"
 "B<argz_create_sep>(),\n"
 msgstr ""
+"B<argz_create>(),\n"
+"B<argz_create_sep>(),\n"
 
 #. type: tbl table
 #: build/C/man3/argz_add.3:219
@@ -780,6 +777,8 @@ msgid ""
 "B<argz_delete>(),\n"
 "B<argz_extract>(),\n"
 msgstr ""
+"B<argz_delete>(),\n"
+"B<argz_extract>(),\n"
 
 #. type: tbl table
 #: build/C/man3/argz_add.3:222
@@ -788,6 +787,8 @@ msgid ""
 "B<argz_insert>(),\n"
 "B<argz_next>(),\n"
 msgstr ""
+"B<argz_insert>(),\n"
+"B<argz_next>(),\n"
 
 #. type: tbl table
 #: build/C/man3/argz_add.3:225
@@ -796,11 +797,11 @@ msgid ""
 "B<argz_replace>(),\n"
 "B<argz_stringify>()"
 msgstr ""
+"B<argz_replace>(),\n"
+"B<argz_stringify>()"
 
 #. type: Plain text
 #: build/C/man3/argz_add.3:230 build/C/man3/envz_add.3:141
-#, fuzzy
-#| msgid "These functions are GNU extensions."
 msgid "These functions are a GNU extension."
 msgstr "これらの関数は GNU による拡張である。"
 
@@ -913,25 +914,13 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man3/backtrace.3:119
-#, fuzzy
-#| 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."
 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, but see NOTES."
-msgstr ""
-"B<backtrace_symbols_fd>()  は、 B<backtrace_symbols>()  と同じ引き数 "
-"I<buffer> と I<size> をとるが、呼び出し側に文字列の配列を返す代わりに、 文字"
-"列をファイルディスクリプター I<fd> に 1 行に 1 エントリーの形で書き込む。 "
-"B<backtrace_symbols_fd>()  は B<malloc>(3)  を呼び出さない。 そのため、これに"
-"続く関数が失敗する可能性がある状況でも利用できる。"
+msgstr "B<backtrace_symbols_fd>()  は、 B<backtrace_symbols>()  と同じ引き数 I<buffer> と I<size> をとるが、呼び出し側に文字列の配列を返す代わりに、 文字列をファイルディスクリプター I<fd> に 1 行に 1 エントリーの形で書き込む。 B<backtrace_symbols_fd>()  は B<malloc>(3)  を呼び出さない。 そのため、これに続く関数が失敗する可能性がある状況でも利用できるが、「注意」も参照のこと。"
 
 #. type: Plain text
 #: build/C/man3/backtrace.3:131
@@ -970,19 +959,19 @@ msgstr ""
 #: build/C/man3/backtrace.3:154
 #, no-wrap
 msgid "B<backtrace>(),\n"
-msgstr ""
+msgstr "B<backtrace>(),\n"
 
 #. type: tbl table
 #: build/C/man3/backtrace.3:156
 #, no-wrap
 msgid "B<backtrace_symbols>(),\n"
-msgstr ""
+msgstr "B<backtrace_symbols>(),\n"
 
 #. type: tbl table
 #: build/C/man3/backtrace.3:158
 #, no-wrap
 msgid "B<backtrace_symbols_fd>()"
-msgstr ""
+msgstr "B<backtrace_symbols_fd>()"
 
 #. type: Plain text
 #: build/C/man3/backtrace.3:162
@@ -1114,19 +1103,11 @@ msgstr ""
 #: build/C/man3/backtrace.3:231
 #, no-wrap
 msgid "#define BT_BUF_SIZE 100\n"
-msgstr ""
+msgstr "#define BT_BUF_SIZE 100\n"
 
 #. type: Plain text
 #: build/C/man3/backtrace.3:238
-#, fuzzy, no-wrap
-#| msgid ""
-#| "void\n"
-#| "myfunc3(void)\n"
-#| "{\n"
-#| "    int j, nptrs;\n"
-#| "#define SIZE 100\n"
-#| "    void *buffer[100];\n"
-#| "    char **strings;\n"
+#, no-wrap
 msgid ""
 "void\n"
 "myfunc3(void)\n"
@@ -1138,22 +1119,18 @@ msgstr ""
 "void\n"
 "myfunc3(void)\n"
 "{\n"
-"    int j, nptrs;\n"
-"#define SIZE 100\n"
-"    void *buffer[100];\n"
+"    int nptrs;\n"
+"    void *buffer[BT_BUF_SIZE];\n"
 "    char **strings;\n"
 
 #. type: Plain text
 #: build/C/man3/backtrace.3:241
-#, fuzzy, no-wrap
-#| msgid ""
-#| "    nptrs = backtrace(buffer, SIZE);\n"
-#| "    printf(\"backtrace() returned %d addresses\\en\", nptrs);\n"
+#, no-wrap
 msgid ""
 "    nptrs = backtrace(buffer, BT_BUF_SIZE);\n"
 "    printf(\"backtrace() returned %d addresses\\en\", nptrs);\n"
 msgstr ""
-"    nptrs = backtrace(buffer, SIZE);\n"
+"    nptrs = backtrace(buffer, BT_BUF_SIZE);\n"
 "    printf(\"backtrace() returned %d addresses\\en\", nptrs);\n"
 
 #. type: Plain text
@@ -1184,15 +1161,12 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man3/backtrace.3:253
-#, fuzzy, no-wrap
-#| msgid ""
-#| "    for (j = 0; j E<lt> nptrs; j++)\n"
-#| "        printf(\"%s\\en\", strings[j]);\n"
+#, no-wrap
 msgid ""
 "    for (int j = 0; j E<lt> nptrs; j++)\n"
 "        printf(\"%s\\en\", strings[j]);\n"
 msgstr ""
-"    for (j = 0; j E<lt> nptrs; j++)\n"
+"    for (int j = 0; j E<lt> nptrs; j++)\n"
 "        printf(\"%s\\en\", strings[j]);\n"
 
 #. type: Plain text
@@ -1277,11 +1251,9 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man3/backtrace.3:291
-#, fuzzy
-#| msgid "B<gcc>(1), B<ld>(1), B<dlopen>(3), B<malloc>(3)"
 msgid ""
 "B<addr2line>(1), B<gcc>(1), B<gdb>(1), B<ld>(1), B<dlopen>(3), B<malloc>(3)"
-msgstr "B<gcc>(1), B<ld>(1), B<dlopen>(3), B<malloc>(3)"
+msgstr "B<addr2line>(1), B<gcc>(1), B<gdb>(1), B<ld>(1), B<dlopen>(3), B<malloc>(3)"
 
 #. type: TH
 #: build/C/man3/basename.3:27
@@ -1494,19 +1466,18 @@ msgstr ""
 
 #. type: tbl table
 #: build/C/man3/basename.3:141
-#, fuzzy, no-wrap
-#| msgid "B<basename>(1), B<dirname>(1)"
+#, no-wrap
 msgid ""
 "B<basename>(),\n"
 "B<dirname>()"
-msgstr "B<basename>(1), B<dirname>(1)"
+msgstr ""
+"B<basename>(),\n"
+"B<dirname>()"
 
 #. type: Plain text
 #: build/C/man3/basename.3:145 build/C/man3/ftok.3:84
-#, fuzzy
-#| msgid "POSIX.1-2001."
 msgid "POSIX.1-2001, POSIX.1-2008."
-msgstr "POSIX.1-2001."
+msgstr "POSIX.1-2001, POSIX.1-2008."
 
 #. type: Plain text
 #: build/C/man3/basename.3:150
@@ -1520,16 +1491,13 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man3/basename.3:155
-#, fuzzy, no-wrap
-#| msgid ""
-#| "B<#define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
-#| "B<#include E<lt>errno.hE<gt>>\n"
+#, no-wrap
 msgid ""
 "B<    #define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
 "B<#include E<lt>string.hE<gt>>\n"
 msgstr ""
-"B<#define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
-"B<#include E<lt>errno.hE<gt>>\n"
+"B<    #define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
+"B<#include E<lt>string.hE<gt>>\n"
 
 #. type: Plain text
 #: build/C/man3/basename.3:164
@@ -1557,27 +1525,15 @@ msgid ""
 "In the glibc implementation, the POSIX versions of these functions modify "
 "the I<path> argument, and segfault when called with a static string such as "
 "\"/usr/\"."
-msgstr ""
+msgstr "glibc の実装では、これらの関数の POSIX バージョンは I<path> 引き数が変更され、 \"/usr/\" などの静的文字列を指定されるとセグメンテーションフォールトを起こす。"
 
 #. type: Plain text
 #: build/C/man3/basename.3:181
-#, fuzzy
-#| 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."
 msgid ""
 "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."
-msgstr ""
-"glibc の POSIX バージョンの実装では、引き数の内容が変更され、 引き数に (\"/"
-"usr/\" などの) 定数文字列を指定されると セグメンテーションフォールトを起こ"
-"す。 バージョン 2.2.1 以前の glibc では、 glibc の B<dirname>()  は末尾が "
-"\\(aq/\\(aq 文字になっているパス名を正しく扱えず、 引き数が NULL だとセグメン"
-"テーションフォールトを起こした。"
+msgstr "バージョン 2.2.1 以前の glibc では、 glibc の B<dirname>()  は末尾が \\(aq/\\(aq 文字になっているパス名を正しく扱えず、 引き数が NULL だとセグメンテーションフォールトを起こした。"
 
 #. type: Plain text
 #: build/C/man3/basename.3:186
@@ -1766,18 +1722,11 @@ msgstr "B<envz_strip>()  は、値が NULL のエントリーをすべて削除
 
 #. type: Plain text
 #: build/C/man3/envz_add.3:119
-#, fuzzy
-#| 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."
 msgid ""
 "All envz functions that do memory allocation have a return type of "
 "I<error_t> (an integer type), and return 0 for success, and B<ENOMEM> if an "
 "allocation error occurs."
-msgstr ""
-"メモリー割り当てを行う envz 関数群はすべて I<error_t> 型の返り値を持つ。 成功"
-"した場合は 0 を返し、割り当てエラーが発生した場合は B<ENOMEM> を返す。"
+msgstr "メモリー割り当てを行う envz 関数群はすべて I<error_t> 型 (integer 型) の返り値を持つ。 成功した場合は 0 を返し、割り当てエラーが発生した場合は B<ENOMEM> を返す。"
 
 #. type: tbl table
 #: build/C/man3/envz_add.3:130
@@ -1786,6 +1735,8 @@ msgid ""
 "B<envz_add>(),\n"
 "B<envz_entry>(),\n"
 msgstr ""
+"B<envz_add>(),\n"
+"B<envz_entry>(),\n"
 
 #. type: tbl table
 #: build/C/man3/envz_add.3:133
@@ -1794,6 +1745,8 @@ msgid ""
 "B<envz_get>(),\n"
 "B<envz_merge>(),\n"
 msgstr ""
+"B<envz_get>(),\n"
+"B<envz_merge>(),\n"
 
 #. type: tbl table
 #: build/C/man3/envz_add.3:136
@@ -1802,6 +1755,8 @@ msgid ""
 "B<envz_remove>(),\n"
 "B<envz_strip>()"
 msgstr ""
+"B<envz_remove>(),\n"
+"B<envz_strip>()"
 
 #. type: Plain text
 #: build/C/man3/envz_add.3:146
@@ -1817,13 +1772,7 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man3/envz_add.3:152
-#, fuzzy, no-wrap
-#| msgid ""
-#| "int\n"
-#| "main(int argc, char *argv[], char *envp[])\n"
-#| "{\n"
-#| "    int i, e_len = 0;\n"
-#| "    char *str;\n"
+#, no-wrap
 msgid ""
 "int\n"
 "main(int argc, char *argv[], char *envp[])\n"
@@ -1834,20 +1783,17 @@ msgstr ""
 "int\n"
 "main(int argc, char *argv[], char *envp[])\n"
 "{\n"
-"    int i, e_len = 0;\n"
+"    int e_len = 0;\n"
 "    char *str;\n"
 
 #. type: Plain text
 #: build/C/man3/envz_add.3:155
-#, fuzzy, no-wrap
-#| msgid ""
-#| "    for (i = 0; envp[i] != NULL; i++)\n"
-#| "        e_len += strlen(envp[i]) + 1;\n"
+#, no-wrap
 msgid ""
 "    for (int i = 0; envp[i] != NULL; i++)\n"
 "        e_len += strlen(envp[i]) + 1;\n"
 msgstr ""
-"    for (i = 0; envp[i] != NULL; i++)\n"
+"    for (int i = 0; envp[i] != NULL; i++)\n"
 "        e_len += strlen(envp[i]) + 1;\n"
 
 #. type: Plain text
@@ -1881,10 +1827,9 @@ msgstr "FTOK"
 
 #. type: TH
 #: build/C/man3/ftok.3:29
-#, fuzzy, no-wrap
-#| msgid "2006-04-29"
+#, no-wrap
 msgid "2020-04-11"
-msgstr "2006-04-29"
+msgstr "2020-04-11"
 
 #. type: Plain text
 #: build/C/man3/ftok.3:32
@@ -1948,7 +1893,7 @@ msgstr ""
 #: build/C/man3/ftok.3:80
 #, no-wrap
 msgid "B<ftok>()"
-msgstr ""
+msgstr "B<ftok>()"
 
 #. type: Plain text
 #: build/C/man3/ftok.3:86
@@ -1957,10 +1902,9 @@ msgstr "いくつかの古いシステムでは、プロトタイプは以下の
 
 #. type: Plain text
 #: build/C/man3/ftok.3:90
-#, fuzzy, no-wrap
-#| msgid "B<key_t ftok(char *>I<pathname>B<, char >I<proj_id>B<);>"
+#, no-wrap
 msgid "B<key_t ftok(char *>I<pathname>B<, char >I<proj_id>B<);>\n"
-msgstr "B<key_t ftok(char *>I<pathname>B<, char >I<proj_id>B<);>"
+msgstr "B<key_t ftok(char *>I<pathname>B<, char >I<proj_id>B<);>\n"
 
 #. type: Plain text
 #: build/C/man3/ftok.3:103
@@ -1991,14 +1935,12 @@ msgstr ""
 #. type: Plain text
 #: build/C/man3/ftok.3:118
 msgid "See B<semget>(2)."
-msgstr ""
+msgstr "B<semget>(2) を参照。"
 
 #. type: Plain text
 #: build/C/man3/ftok.3:124
-#, fuzzy
-#| msgid "B<msgget>(2), B<semget>(2), B<shmget>(2), B<stat>(2), B<svipc>(7)"
 msgid "B<msgget>(2), B<semget>(2), B<shmget>(2), B<stat>(2), B<sysvipc>(7)"
-msgstr "B<msgget>(2), B<semget>(2), B<shmget>(2), B<stat>(2), B<svipc>(7)"
+msgstr "B<msgget>(2), B<semget>(2), B<shmget>(2), B<stat>(2), B<sysvipc>(7)"
 
 #. type: TH
 #: build/C/man3/offsetof.3:28
@@ -2067,7 +2009,7 @@ msgstr ""
 #. type: Plain text
 #: build/C/man3/offsetof.3:65
 msgid "POSIX.1-2001, POSIX.1-2008, C89, C99."
-msgstr ""
+msgstr "POSIX.1-2001, POSIX.1-2008, C89, C99."
 
 #. type: Plain text
 #: build/C/man3/offsetof.3:69
@@ -2134,22 +2076,17 @@ msgstr "    /* 出力はコンパイラ依存である */\n"
 
 #. type: Plain text
 #: build/C/man3/offsetof.3:100
-#, fuzzy, no-wrap
-#| msgid ""
-#| "    printf(\"offsets: i=%zd; c=%zd; d=%zd a=%zd\\en\",\n"
-#| "            offsetof(struct s, i), offsetof(struct s, c),\n"
-#| "            offsetof(struct s, d), offsetof(struct s, a));\n"
-#| "    printf(\"sizeof(struct s)=%zd\\en\", sizeof(struct s));\n"
+#, no-wrap
 msgid ""
 "    printf(\"offsets: i=%zu; c=%zu; d=%zu a=%zu\\en\",\n"
 "            offsetof(struct s, i), offsetof(struct s, c),\n"
 "            offsetof(struct s, d), offsetof(struct s, a));\n"
 "    printf(\"sizeof(struct s)=%zu\\en\", sizeof(struct s));\n"
 msgstr ""
-"    printf(\"offsets: i=%zd; c=%zd; d=%zd a=%zd\\en\",\n"
+"    printf(\"offsets: i=%zu; c=%zu; d=%zu a=%zu\\en\",\n"
 "            offsetof(struct s, i), offsetof(struct s, c),\n"
 "            offsetof(struct s, d), offsetof(struct s, a));\n"
-"    printf(\"sizeof(struct s)=%zd\\en\", sizeof(struct s));\n"
+"    printf(\"sizeof(struct s)=%zu\\en\", sizeof(struct s));\n"
 
 #. type: Plain text
 #: build/C/man3/offsetof.3:103
@@ -2171,7 +2108,7 @@ msgstr "INVOCATION_NAME"
 #: build/C/man3/program_invocation_name.3:24 build/C/man3/realpath.3:28
 #, no-wrap
 msgid "2017-09-15"
-msgstr ""
+msgstr "2017-09-15"
 
 #. type: Plain text
 #: build/C/man3/program_invocation_name.3:28
@@ -2299,6 +2236,9 @@ msgid ""
 "    || /* Glibc since 2.19: */ _DEFAULT_SOURCE\n"
 "    || /* Glibc versions E<lt>= 2.19: */ _BSD_SOURCE\n"
 msgstr ""
+"_XOPEN_SOURCE\\ E<gt>=\\ 500\n"
+"    || /* glibc 2.19 以降: */ _DEFAULT_SOURCE\n"
+"    || /* glibc 2.19 以前: */ _BSD_SOURCE\n"
 
 #. type: Plain text
 #: build/C/man3/realpath.3:73
@@ -2440,15 +2380,14 @@ msgstr "指定されたファイルが存在しない。"
 
 #. type: TP
 #: build/C/man3/realpath.3:134
-#, fuzzy, no-wrap
-#| msgid "B<ENOENT>"
+#, no-wrap
 msgid "B<ENOMEM>"
-msgstr "B<ENOENT>"
+msgstr "B<ENOMEM>"
 
 #. type: Plain text
 #: build/C/man3/realpath.3:137
 msgid "Out of memory."
-msgstr ""
+msgstr "メモリ不足。"
 
 #. type: TP
 #: build/C/man3/realpath.3:137
@@ -2463,10 +2402,9 @@ msgstr "パスのディレクトリ要素が、ディレクトリでない。"
 
 #. type: tbl table
 #: build/C/man3/realpath.3:150
-#, fuzzy, no-wrap
-#| msgid "B<realpath>():"
+#, no-wrap
 msgid "B<realpath>()"
-msgstr "B<realpath>():"
+msgstr "B<realpath>()"
 
 #. type: Plain text
 #: build/C/man3/realpath.3:154
@@ -2603,16 +2541,12 @@ msgstr "SETJMP"
 #: build/C/man3/setjmp.3:24
 #, no-wrap
 msgid "2017-03-13"
-msgstr ""
+msgstr "2017-03-13"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:27
-#, fuzzy
-#| msgid "setjmp, sigsetjmp - save stack context for nonlocal goto"
 msgid "setjmp, sigsetjmp, longjmp, siglongjmp - performing a nonlocal goto"
-msgstr ""
-"setjmp, sigsetjmp - 非局所的なジャンプのために、スタックコンテキスト (stack "
-"context) を保存する"
+msgstr "setjmp, sigsetjmp, longjmp, siglongjmp - 非局所的なジャンプの実行"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:30
@@ -2622,21 +2556,23 @@ msgstr "B<#include E<lt>setjmp.hE<gt>>\n"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:33
-#, fuzzy, no-wrap
-#| msgid "B<int sigsetjmp(sigjmp_buf >I<env>B<, int >I<savesigs>B<);>\n"
+#, no-wrap
 msgid ""
 "B<int setjmp(jmp_buf >I<env>B<);>\n"
 "B<int sigsetjmp(sigjmp_buf >I<env>B<, int >I<savesigs>B<);>\n"
-msgstr "B<int sigsetjmp(sigjmp_buf >I<env>B<, int >I<savesigs>B<);>\n"
+msgstr ""
+"B<int setjmp(jmp_buf >I<env>B<);>\n"
+"B<int sigsetjmp(sigjmp_buf >I<env>B<, int >I<savesigs>B<);>\n"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:36
-#, fuzzy, no-wrap
-#| msgid "B<void siglongjmp(sigjmp_buf >I<env>B<, int >I<val>B<);>\n"
+#, no-wrap
 msgid ""
 "B<void longjmp(jmp_buf >I<env>B<, int >I<val>B<);>\n"
 "B<void siglongjmp(sigjmp_buf >I<env>B<, int >I<val>B<);>\n"
-msgstr "B<void siglongjmp(sigjmp_buf >I<env>B<, int >I<val>B<);>\n"
+msgstr ""
+"B<void longjmp(jmp_buf >I<env>B<, int >I<val>B<);>\n"
+"B<void siglongjmp(sigjmp_buf >I<env>B<, int >I<val>B<);>\n"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:45
@@ -2645,10 +2581,8 @@ msgstr "B<setjmp>(): 「注意」参照。"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:48
-#, fuzzy
-#| msgid "B<addseverity>(): _SVID_SOURCE"
 msgid "B<sigsetjmp>(): _POSIX_C_SOURCE"
-msgstr "B<addseverity>(): _SVID_SOURCE"
+msgstr "B<sigsetjmp>(): _POSIX_C_SOURCE"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:58
@@ -2692,10 +2626,9 @@ msgstr ""
 
 #. type: SS
 #: build/C/man3/setjmp.3:99
-#, fuzzy, no-wrap
-#| msgid "B<longjmp>(3), B<siglongjmp>(3)"
+#, no-wrap
 msgid "sigsetjmp() and siglongjmp()"
-msgstr "B<longjmp>(3), B<siglongjmp>(3)"
+msgstr "sigsetjmp() と siglongjmp()"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:105
@@ -2738,38 +2671,38 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:134
-#, fuzzy
-#| msgid "The B<basename>()  and B<dirname>()  functions are thread-safe."
 msgid "The B<longjmp>()  or B<siglongjmp>()  functions do not return."
-msgstr "関数 B<basename>() と B<dirname>() 関数はスレッドセーフである。"
+msgstr "関数 B<longjmp>() と B<siglongjmp>() が返ることはない。"
 
 #. type: tbl table
 #: build/C/man3/setjmp.3:145
-#, fuzzy, no-wrap
-#| msgid "B<setjmp>(3), B<sigsetjmp>(3)"
+#, no-wrap
 msgid ""
 "B<setjmp>(),\n"
 "B<sigsetjmp>()"
-msgstr "B<setjmp>(3), B<sigsetjmp>(3)"
+msgstr ""
+"B<setjmp>(),\n"
+"B<sigsetjmp>()"
 
 #. type: tbl table
 #: build/C/man3/setjmp.3:149
-#, fuzzy, no-wrap
-#| msgid "B<longjmp>(3), B<siglongjmp>(3)"
+#, no-wrap
 msgid ""
 "B<longjmp>(),\n"
 "B<siglongjmp>()"
-msgstr "B<longjmp>(3), B<siglongjmp>(3)"
+msgstr ""
+"B<longjmp>(),\n"
+"B<siglongjmp>()"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:155
 msgid "B<setjmp>(), B<longjmp>(): POSIX.1-2001, POSIX.1-2008, C89, C99."
-msgstr ""
+msgstr "B<setjmp>(), B<longjmp>(): POSIX.1-2001, POSIX.1-2008, C89, C99."
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:159
 msgid "B<sigsetjmp>(), B<siglongjmp>(): POSIX.1-2001, POSIX.1-2008."
-msgstr ""
+msgstr "B<sigsetjmp>(), B<siglongjmp>(): POSIX.1-2001, POSIX.1-2008."
 
 #.  so that _FAVOR_BSD is triggered
 #.  .BR _XOPEN_SOURCE_EXTENDED ,
@@ -2845,26 +2778,16 @@ msgstr "\\(bu"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:227
-#, fuzzy
-#| msgid ""
-#| "they are local to the function that made the corresponding B<setjmp>(3)  "
-#| "call;"
 msgid ""
 "they are local to the function that made the corresponding B<setjmp>()  call;"
-msgstr ""
-"その自動変数が、対応する B<setjmp>(3)  呼び出しを行った関数のローカル変数であ"
-"る。"
+msgstr "その自動変数が、対応する B<setjmp>() 呼び出しを行った関数のローカル変数である。"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:233
-#, fuzzy
-#| msgid ""
-#| "their values are changed between the calls to B<setjmp>(3)  and "
-#| "B<longjmp>(); and"
 msgid ""
 "their values are changed between the calls to B<setjmp>()  and B<longjmp>(); "
 "and"
-msgstr "自動変数の値が B<setjmp>(3)  と B<longjmp>()  の間で変更されている。"
+msgstr "自動変数の値が B<setjmp>() と B<longjmp>() の間で変更されている。"
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:236
@@ -2981,10 +2904,8 @@ msgstr ""
 
 #. type: Plain text
 #: build/C/man3/setjmp.3:328
-#, fuzzy
-#| msgid "B<setjmp>(3), B<sigsetjmp>(3)"
 msgid "B<signal>(7), B<signal-safety>(7)"
-msgstr "B<setjmp>(3), B<sigsetjmp>(3)"
+msgstr "B<signal>(7), B<signal-safety>(7)"
 
 #. type: TH
 #: build/C/man3/xcrypt.3:13
@@ -2996,7 +2917,7 @@ msgstr "XCRYPT"
 #: build/C/man3/xcrypt.3:13
 #, no-wrap
 msgid "2019-03-06"
-msgstr ""
+msgstr "2019-03-06"
 
 #. type: Plain text
 #: build/C/man3/xcrypt.3:16
@@ -3086,6 +3007,9 @@ msgid ""
 "B<xencrypt>(),\n"
 "B<xdecrypt>()"
 msgstr ""
+"B<passwd2des>(),\n"
+"B<xencrypt>(),\n"
+"B<xdecrypt>()"
 
 #. type: Plain text
 #: build/C/man3/xcrypt.3:90
@@ -3097,9 +3021,6 @@ msgstr "上記のインクルードファイルにプロトタイプがない。
 msgid "B<cbc_crypt>(3)"
 msgstr "B<cbc_crypt>(3)"
 
-#~ msgid "2012-12-31"
-#~ msgstr "2012-12-31"
-
 #~ msgid "Set FPU control word on the i386 architecture to"
 #~ msgstr "は、i386アーキテクチャーにおける FPU のコントロールワードを、"
 
@@ -3112,51 +3033,11 @@ msgstr "B<cbc_crypt>(3)"
 #~ msgid "     - exceptions on overflow, zero divide and NaN\n"
 #~ msgstr "     - 桁溢れ、0で除算、及び無効値(NaN)ときに例外を発生に設定する。\n"
 
-#~ msgid "2014-05-28"
-#~ msgstr "2014-05-28"
-
-#~ msgid "These functions are a GNU extension.  Handle with care."
-#~ msgstr "これらの関数は GNU による拡張である。注意して使用すること。"
-
-#~ msgid "2014-06-13"
-#~ msgstr "2014-06-13"
-
-#~ msgid "Multithreading (see pthreads(7))"
-#~ msgstr "マルチスレッディング (pthreads(7) 参照)"
-
-#~ msgid "B<    #define _GNU_SOURCE>         /* See feature_test_macros(7) */\n"
-#~ msgstr "B<    #define _GNU_SOURCE>         /* feature_test_macros(7) 参照 */\n"
-
-#~ msgid "B<#include E<lt>string.hE<gt>>\n"
-#~ msgstr "B<#include E<lt>string.hE<gt>>\n"
-
-#~ msgid "2014-08-19"
-#~ msgstr "2014-08-19"
-
-#~ msgid "The B<ftok>()  function is thread-safe."
-#~ msgstr "B<ftok>() 関数はスレッドセーフである。"
-
-#~ msgid "LONGJMP"
-#~ msgstr "LONGJMP"
-
-#~ msgid "2009-01-13"
-#~ msgstr "2009-01-13"
-
 #~ msgid "longjmp, siglongjmp - nonlocal jump to a saved stack context"
 #~ msgstr ""
 #~ "longjmp, siglongjmp - 保存されたスタックコンテキスト (stack context)  への"
 #~ "非局所的なジャンプ"
 
-#~ msgid "B<void longjmp(jmp_buf >I<env>B<, int >I<val>B<);>\n"
-#~ msgstr "B<void longjmp(jmp_buf >I<env>B<, int >I<val>B<);>\n"
-
-#~ msgid ""
-#~ "B<siglongjmp>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
-#~ "_POSIX_C_SOURCE"
-#~ msgstr ""
-#~ "B<siglongjmp>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
-#~ "_POSIX_C_SOURCE"
-
 #~ msgid ""
 #~ "B<longjmp>()  and B<setjmp>(3)  are useful for dealing with errors and "
 #~ "interrupts encountered in a low-level subroutine of a program.  "
@@ -3222,181 +3103,6 @@ msgstr "B<cbc_crypt>(3)"
 #~ "B<longjmp>()  や B<siglongjmp>()  を使うと、プログラムは理解しづらく、保守"
 #~ "しにくいものになる。 別の方法が可能なら、それを使うべきである。"
 
-#~ msgid "2014-04-06"
-#~ msgstr "2014-04-06"
-
-#~ msgid "C89, C99, POSIX.1-2001."
-#~ msgstr "C89, C99, POSIX.1-2001."
-
-#~ msgid "QUEUE"
-#~ msgstr "QUEUE"
-
-#~ msgid "2007-12-28"
-#~ msgstr "2007-12-28"
-
-#~ 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"
-#~ 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) キュー・循環キューの実装"
-
-#~ msgid "B<#include E<lt>sys/queue.hE<gt>>\n"
-#~ msgstr "B<#include E<lt>sys/queue.hE<gt>>\n"
-
-#~ msgid ""
-#~ "B<LIST_ENTRY(>I<TYPE>B<);>\n"
-#~ "B<LIST_HEAD(>I<HEADNAME>B<, >I<TYPE>B<);>\n"
-#~ "B<LIST_INIT(LIST_HEAD *>I<head>B<);>\n"
-#~ "B<LIST_INSERT_AFTER(LIST_ENTRY *>I<listelm>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, LIST_ENTRY >I<NAME>B<);>\n"
-#~ "B<LIST_INSERT_HEAD(LIST_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, LIST_ENTRY >I<NAME>B<);>\n"
-#~ "B<LIST_REMOVE(TYPE *>I<elm>B<, LIST_ENTRY >I<NAME>B<);>\n"
-#~ msgstr ""
-#~ "B<LIST_ENTRY(>I<TYPE>B<);>\n"
-#~ "B<LIST_HEAD(>I<HEADNAME>B<, >I<TYPE>B<);>\n"
-#~ "B<LIST_INIT(LIST_HEAD *>I<head>B<);>\n"
-#~ "B<LIST_INSERT_AFTER(LIST_ENTRY *>I<listelm>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, LIST_ENTRY >I<NAME>B<);>\n"
-#~ "B<LIST_INSERT_HEAD(LIST_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, LIST_ENTRY >I<NAME>B<);>\n"
-#~ "B<LIST_REMOVE(TYPE *>I<elm>B<, LIST_ENTRY >I<NAME>B<);>\n"
-
-#~ msgid ""
-#~ "B<TAILQ_ENTRY(>I<TYPE>B<);>\n"
-#~ "B<TAILQ_HEAD(>I<HEADNAME>B<, >I<TYPE>B<);>\n"
-#~ "B<TAILQ_INIT(TAILQ_HEAD *>I<head>B<);>\n"
-#~ "B<TAILQ_INSERT_AFTER(TAILQ_HEAD *>I<head>B<, TYPE *>I<listelm>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, TAILQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<TAILQ_INSERT_HEAD(TAILQ_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, TAILQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<TAILQ_INSERT_TAIL(TAILQ_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, TAILQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<TAILQ_REMOVE(TAILQ_HEAD *>I<head>B<, TYPE *>I<elm>B<, TAILQ_ENTRY >I<NAME>B<);>\n"
-#~ msgstr ""
-#~ "B<TAILQ_ENTRY(>I<TYPE>B<);>\n"
-#~ "B<TAILQ_HEAD(>I<HEADNAME>B<, >I<TYPE>B<);>\n"
-#~ "B<TAILQ_INIT(TAILQ_HEAD *>I<head>B<);>\n"
-#~ "B<TAILQ_INSERT_AFTER(TAILQ_HEAD *>I<head>B<, TYPE *>I<listelm>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, TAILQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<TAILQ_INSERT_HEAD(TAILQ_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, TAILQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<TAILQ_INSERT_TAIL(TAILQ_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, TAILQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<TAILQ_REMOVE(TAILQ_HEAD *>I<head>B<, TYPE *>I<elm>B<, TAILQ_ENTRY >I<NAME>B<);>\n"
-
-#~ msgid ""
-#~ "B<CIRCLEQ_ENTRY(>I<TYPE>B<);>\n"
-#~ "B<CIRCLEQ_HEAD(>I<HEADNAME>B<, >I<TYPE>B<);>\n"
-#~ "B<CIRCLEQ_INIT(CIRCLEQ_HEAD *>I<head>B<);>\n"
-#~ "B<CIRCLEQ_INSERT_AFTER(CIRCLEQ_HEAD *>I<head>B<, TYPE *>I<listelm>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<CIRCLEQ_INSERT_BEFORE(CIRCLEQ_HEAD *>I<head>B<, TYPE *>I<listelm>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<CIRCLEQ_INSERT_HEAD(CIRCLEQ_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<CIRCLEQ_INSERT_TAIL(CIRCLEQ_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<CIRCLEQ_REMOVE(CIRCLEQ_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
-#~ msgstr ""
-#~ "B<CIRCLEQ_ENTRY(>I<TYPE>B<);>\n"
-#~ "B<CIRCLEQ_HEAD(>I<HEADNAME>B<, >I<TYPE>B<);>\n"
-#~ "B<CIRCLEQ_INIT(CIRCLEQ_HEAD *>I<head>B<);>\n"
-#~ "B<CIRCLEQ_INSERT_AFTER(CIRCLEQ_HEAD *>I<head>B<, TYPE *>I<listelm>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<CIRCLEQ_INSERT_BEFORE(CIRCLEQ_HEAD *>I<head>B<, TYPE *>I<listelm>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<CIRCLEQ_INSERT_HEAD(CIRCLEQ_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<CIRCLEQ_INSERT_TAIL(CIRCLEQ_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
-#~ "B<CIRCLEQ_REMOVE(CIRCLEQ_HEAD *>I<head>B<, >\n"
-#~ "B<                TYPE *>I<elm>B<, CIRCLEQ_ENTRY >I<NAME>B<);>\n"
-
-#~ 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:"
-#~ msgstr ""
-#~ "これらのマクロは、次の 3 つのデータ構造を定義して操作する: リスト・テール"
-#~ "キュー・循環キュー。 3 つのデータ構造すべてにおいて以下の機能がサポートさ"
-#~ "れている:"
-
-#~ msgid "Insertion of a new entry at the head of the list."
-#~ msgstr "新たなエントリーをリストの先頭に挿入する。"
-
-#~ msgid "Insertion of a new entry after any element in the list."
-#~ msgstr "新たなエントリーをリストのどの要素よりも後に挿入する。"
-
-#~ msgid "Removal of any entry in the list."
-#~ msgstr "リストの任意のエントリーを削除する。"
-
-#~ msgid "Forward traversal through the list."
-#~ msgstr "リストを順方向に辿る。"
-
-#~ msgid ""
-#~ "Lists are the simplest of the three data structures and support only the "
-#~ "above functionality."
-#~ msgstr ""
-#~ "リストは 3 つのデータ構造の中で最も単純であり、 上記の機能のみをサポートす"
-#~ "る。"
-
-#~ msgid "Tail queues add the following functionality:"
-#~ msgstr "テールキューは以下の機能を追加する:"
-
-#~ msgid "Entries can be added at the end of a list."
-#~ msgstr "エントリーをリストの最後に追加できる。"
-
-#~ msgid "However:"
-#~ msgstr "ただし:"
-
-#~ msgid "1."
-#~ msgstr "1."
-
-#~ msgid "All list insertions and removals must specify the head of the list."
-#~ msgstr ""
-#~ "全てのリスト挿入と削除において、リストの先頭を指定しなければならない。"
-
-#~ msgid "2."
-#~ msgstr "2."
-
-#~ msgid "Each head entry requires two pointers rather than one."
-#~ msgstr "各先頭エントリーは 1 つではなく 2 つのポインターを必要とする。"
-
-#~ msgid "3."
-#~ msgstr "3."
-
-#~ msgid ""
-#~ "Code size is about 15% greater and operations run about 20% slower than "
-#~ "lists."
-#~ msgstr ""
-#~ "リストと比べて、コードサイズは 15% 大きくなり、操作は 20% 遅くなる。"
-
-#~ msgid "Circular queues add the following functionality:"
-#~ msgstr "循環キューは以下の機能を追加する:"
-
-#~ msgid "Entries can be added before another entry."
-#~ msgstr "エントリーを他のエントリーの前に追加できる。"
-
-#~ msgid "They may be traversed backward, from tail to head."
-#~ msgstr "逆方向に末尾から先頭へ辿ることができる。"
-
-#~ msgid "The termination condition for traversal is more complex."
-#~ msgstr "辿る際の終了条件がより複雑である。"
-
-#~ msgid "4."
-#~ msgstr "4."
-
 #~ msgid ""
 #~ "Code size is about 40% greater and operations run about 45% slower than "
 #~ "lists."
@@ -3418,9 +3124,6 @@ msgstr "B<cbc_crypt>(3)"
 #~ "B<CIRCLEQ_HEAD> を用いて宣言されなければならない。 これらのマクロがどのよ"
 #~ "うに使われるかについての更なる説明は、 以下の例を参照すること。"
 
-#~ msgid "Lists"
-#~ msgstr "リスト"
-
 #~ 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.  "
@@ -3435,9 +3138,6 @@ msgstr "B<cbc_crypt>(3)"
 #~ "素の後またはリストの先頭に追加できる。 B<LIST_HEAD> 構造体は以下のように宣"
 #~ "言されている:"
 
-#~ msgid "LIST_HEAD(HEADNAME, TYPE) head;\n"
-#~ msgstr "LIST_HEAD(HEADNAME, TYPE) head;\n"
-
 #~ 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 "
@@ -3447,89 +3147,6 @@ msgstr "B<cbc_crypt>(3)"
 #~ "ンクされる要素の型である。 リストの先頭へのポインターは、その後で次のよう"
 #~ "に宣言される:"
 
-#~ msgid "struct HEADNAME *headp;\n"
-#~ msgstr "struct HEADNAME *headp;\n"
-
-#~ msgid "(The names I<head> and I<headp> are user selectable.)"
-#~ msgstr "(名前 I<head> と I<headp> はユーザーが選択できる。)"
-
-#~ msgid ""
-#~ "The macro B<LIST_ENTRY> declares a structure that connects the elements "
-#~ "in the list."
-#~ msgstr "マクロ B<LIST_ENTRY> はリストの要素を接続する構造体を宣言する。"
-
-#~ msgid "The macro B<LIST_INIT> initializes the list referenced by I<head>."
-#~ msgstr "マクロ B<LIST_INIT> は I<head> で参照されるリストを初期化する。"
-
-#~ msgid ""
-#~ "The macro B<LIST_INSERT_HEAD> inserts the new element I<elm> at the head "
-#~ "of the list."
-#~ msgstr ""
-#~ "マクロ B<LIST_INSERT_HEAD> は新たな要素 I<elm> をリストの先頭に挿入する。"
-
-#~ msgid ""
-#~ "The macro B<LIST_INSERT_AFTER> inserts the new element I<elm> after the "
-#~ "element I<listelm>."
-#~ msgstr ""
-#~ "マクロ B<LIST_INSERT_AFTER> は新たな要素 I<elm> を要素 I<listelm> の後に挿"
-#~ "入する。"
-
-#~ msgid "The macro B<LIST_REMOVE> removes the element I<elm> from the list."
-#~ msgstr "マクロ B<LIST_REMOVE> は要素 I<elm> をリストから削除する。"
-
-#~ msgid "List example"
-#~ msgstr "リストの例"
-
-#~ msgid ""
-#~ "LIST_HEAD(listhead, entry) head;\n"
-#~ "struct listhead *headp;                 /* List head. */\n"
-#~ "struct entry {\n"
-#~ "    ...\n"
-#~ "    LIST_ENTRY(entry) entries;          /* List. */\n"
-#~ "    ...\n"
-#~ "} *n1, *n2, *np;\n"
-#~ msgstr ""
-#~ "LIST_HEAD(listhead, entry) head;\n"
-#~ "struct listhead *headp;                 /* リストの先頭。*/\n"
-#~ "struct entry {\n"
-#~ "    ...\n"
-#~ "    LIST_ENTRY(entry) entries;          /* リスト。 */\n"
-#~ "    ...\n"
-#~ "} *n1, *n2, *np;\n"
-
-#~ msgid "LIST_INIT(&head);                       /* Initialize the list. */\n"
-#~ msgstr "LIST_INIT(&head);                       /* リストを初期化する。*/\n"
-
-#~ msgid ""
-#~ "n1 = malloc(sizeof(struct entry));      /* Insert at the head. */\n"
-#~ "LIST_INSERT_HEAD(&head, n1, entries);\n"
-#~ msgstr ""
-#~ "n1 = malloc(sizeof(struct entry));      /* 先頭に挿入する。*/\n"
-#~ "LIST_INSERT_HEAD(&head, n1, entries);\n"
-
-#~ msgid ""
-#~ "n2 = malloc(sizeof(struct entry));      /* Insert after. */\n"
-#~ "LIST_INSERT_AFTER(n1, n2, entries);\n"
-#~ "                                        /* Forward traversal. */\n"
-#~ "for (np = head.lh_first; np != NULL; np = np-E<gt>entries.le_next)\n"
-#~ "    np-E<gt> ...\n"
-#~ msgstr ""
-#~ "n2 = malloc(sizeof(struct entry));      /* 後ろに挿入する。*/\n"
-#~ "LIST_INSERT_AFTER(n1, n2, entries);\n"
-#~ "                                        /* 順方向に辿る。*/\n"
-#~ "for (np = head.lh_first; np != NULL; np = np-E<gt>entries.le_next)\n"
-#~ "    np-E<gt> ...\n"
-
-#~ msgid ""
-#~ "while (head.lh_first != NULL)           /* Delete. */\n"
-#~ "    LIST_REMOVE(head.lh_first, entries);\n"
-#~ msgstr ""
-#~ "while (head.lh_first != NULL)           /* 削除する。*/\n"
-#~ "    LIST_REMOVE(head.lh_first, entries);\n"
-
-#~ msgid "Tail queues"
-#~ msgstr "テールキュー"
-
 #~ 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 "
@@ -3547,113 +3164,6 @@ msgstr "B<cbc_crypt>(3)"
 #~ "削除できる。 新しい要素は既存の要素の後またはテールキューの先頭または末尾"
 #~ "に追加できる。 B<TAILQ_HEAD> 構造体は以下のように定義されている:"
 
-#~ msgid "TAILQ_HEAD(HEADNAME, TYPE) head;\n"
-#~ msgstr "TAILQ_HEAD(HEADNAME, TYPE) head;\n"
-
-#~ 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:"
-#~ msgstr ""
-#~ "ここで I<HEADNAME> は定義される構造体の名前であり、 I<TYPE> はテールキュー"
-#~ "内でリンクされる要素の型である。 テールキューの先頭へのポインターは、その"
-#~ "後で次のように宣言される:"
-
-#~ msgid ""
-#~ "The macro B<TAILQ_ENTRY> declares a structure that connects the elements "
-#~ "in the tail queue."
-#~ msgstr ""
-#~ "マクロ B<TAILQ_ENTRY> はテールキューの要素を接続する構造体を宣言する。"
-
-#~ msgid ""
-#~ "The macro B<TAILQ_INIT> initializes the tail queue referenced by I<head>."
-#~ msgstr ""
-#~ "マクロ B<TAILQ_INIT> は I<head> で参照されるテールキューを初期化する。"
-
-#~ msgid ""
-#~ "The macro B<TAILQ_INSERT_HEAD> inserts the new element I<elm> at the head "
-#~ "of the tail queue."
-#~ msgstr ""
-#~ "マクロ B<TAILQ_INSERT_HEAD> は新たな要素 I<elm> をテールキューの先頭に挿入"
-#~ "する。"
-
-#~ msgid ""
-#~ "The macro B<TAILQ_INSERT_TAIL> inserts the new element I<elm> at the end "
-#~ "of the tail queue."
-#~ msgstr ""
-#~ "マクロ B<TAILQ_INSERT_TAIL> は新たな要素 I<elm> をテールキューの末尾に挿入"
-#~ "する。"
-
-#~ msgid ""
-#~ "The macro B<TAILQ_INSERT_AFTER> inserts the new element I<elm> after the "
-#~ "element I<listelm>."
-#~ msgstr ""
-#~ "マクロ B<TAILQ_INSERT_AFTER> は新たな要素 I<elm> を要素 I<listelm> の後に"
-#~ "挿入する。"
-
-#~ msgid ""
-#~ "The macro B<TAILQ_REMOVE> removes the element I<elm> from the tail queue."
-#~ msgstr "マクロ B<TAILQ_REMOVE> は要素 I<elm> をテールキューから削除する。"
-
-#~ msgid "Tail queue example"
-#~ msgstr "テールキューの例"
-
-#~ msgid ""
-#~ "TAILQ_HEAD(tailhead, entry) head;\n"
-#~ "struct tailhead *headp;                 /* Tail queue head. */\n"
-#~ "struct entry {\n"
-#~ "    ...\n"
-#~ "    TAILQ_ENTRY(entry) entries;         /* Tail queue. */\n"
-#~ "    ...\n"
-#~ "} *n1, *n2, *np;\n"
-#~ msgstr ""
-#~ "TAILQ_HEAD(tailhead, entry) head;\n"
-#~ "struct tailhead *headp;                 /* テールキューの先頭。*/\n"
-#~ "struct entry {\n"
-#~ "    ...\n"
-#~ "    TAILQ_ENTRY(entry) entries;         /* テールキュー。*/\n"
-#~ "    ...\n"
-#~ "} *n1, *n2, *np;\n"
-
-#~ msgid "TAILQ_INIT(&head);                      /* Initialize the queue. */\n"
-#~ msgstr "TAILQ_INIT(&head);                      /* キューを初期化する。*/\n"
-
-#~ msgid ""
-#~ "n1 = malloc(sizeof(struct entry));      /* Insert at the head. */\n"
-#~ "TAILQ_INSERT_HEAD(&head, n1, entries);\n"
-#~ msgstr ""
-#~ "n1 = malloc(sizeof(struct entry));      /* 先頭に挿入する。*/\n"
-#~ "TAILQ_INSERT_HEAD(&head, n1, entries);\n"
-
-#~ msgid ""
-#~ "n1 = malloc(sizeof(struct entry));      /* Insert at the tail. */\n"
-#~ "TAILQ_INSERT_TAIL(&head, n1, entries);\n"
-#~ msgstr ""
-#~ "n1 = malloc(sizeof(struct entry));      /* 末尾に挿入する。*/\n"
-#~ "TAILQ_INSERT_TAIL(&head, n1, entries);\n"
-
-#~ msgid ""
-#~ "n2 = malloc(sizeof(struct entry));      /* Insert after. */\n"
-#~ "TAILQ_INSERT_AFTER(&head, n1, n2, entries);\n"
-#~ "                                        /* Forward traversal. */\n"
-#~ "for (np = head.tqh_first; np != NULL; np = np-E<gt>entries.tqe_next)\n"
-#~ "    np-E<gt> ...\n"
-#~ "                                        /* Delete. */\n"
-#~ "while (head.tqh_first != NULL)\n"
-#~ "    TAILQ_REMOVE(&head, head.tqh_first, entries);\n"
-#~ msgstr ""
-#~ "n2 = malloc(sizeof(struct entry));      /* 後ろに挿入する。*/\n"
-#~ "TAILQ_INSERT_AFTER(&head, n1, n2, entries);\n"
-#~ "                                        /* 順方向に辿る。*/\n"
-#~ "for (np = head.tqh_first; np != NULL; np = np-E<gt>entries.tqe_next)\n"
-#~ "    np-E<gt> ...\n"
-#~ "                                        /* 削除する。*/\n"
-#~ "while (head.tqh_first != NULL)\n"
-#~ "    TAILQ_REMOVE(&head, head.tqh_first, entries);\n"
-
-#~ msgid "Circular queues"
-#~ msgstr "循環キュー"
-
 #~ 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 "
@@ -3671,9 +3181,6 @@ msgstr "B<cbc_crypt>(3)"
 #~ "る。 新しい要素は、既存の要素の後または前、またはキューの先頭または末尾に"
 #~ "追加できる。 A B<CIRCLEQ_HEAD> 構造体は以下のように定義されている:"
 
-#~ msgid "CIRCLEQ_HEAD(HEADNAME, TYPE) head;\n"
-#~ msgstr "CIRCLEQ_HEAD(HEADNAME, TYPE) head;\n"
-
 #~ 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 "
@@ -3684,154 +3191,6 @@ msgstr "B<cbc_crypt>(3)"
 #~ "次のように宣言される:"
 
 #~ msgid ""
-#~ "The macro B<CIRCLEQ_ENTRY> declares a structure that connects the "
-#~ "elements in the circular queue."
-#~ msgstr ""
-#~ "マクロ B<CIRCLEQ_ENTRY> は循環キューの要素を接続する構造体を宣言する。"
-
-#~ msgid ""
-#~ "The macro B<CIRCLEQ_INIT> initializes the circular queue referenced by "
-#~ "I<head>."
-#~ msgstr ""
-#~ "マクロ B<CIRCLEQ_INIT> は I<head> で参照される循環キューを初期化する。"
-
-#~ msgid ""
-#~ "The macro B<CIRCLEQ_INSERT_HEAD> inserts the new element I<elm> at the "
-#~ "head of the circular queue."
-#~ msgstr ""
-#~ "マクロ B<CIRCLEQ_INSERT_HEAD> は新たな要素 I<elm> を循環キューの先頭に挿入"
-#~ "する。"
-
-#~ msgid ""
-#~ "The macro B<CIRCLEQ_INSERT_TAIL> inserts the new element I<elm> at the "
-#~ "end of the circular queue."
-#~ msgstr ""
-#~ "マクロ B<CIRCLEQ_INSERT_TAIL> は新たな要素 I<elm> を循環キューの末尾に挿入"
-#~ "する。"
-
-#~ msgid ""
-#~ "The macro B<CIRCLEQ_INSERT_AFTER> inserts the new element I<elm> after "
-#~ "the element I<listelm>."
-#~ msgstr ""
-#~ "マクロ B<CIRCLEQ_INSERT_AFTER> は新たな要素 I<elm> を要素 I<listelm> の後"
-#~ "に挿入する。"
-
-#~ msgid ""
-#~ "The macro B<CIRCLEQ_INSERT_BEFORE> inserts the new element I<elm> before "
-#~ "the element I<listelm>."
-#~ msgstr ""
-#~ "マクロ B<CIRCLEQ_INSERT_AFTER> は新たな要素 I<elm> を要素 I<listelm> の前"
-#~ "に挿入する。"
-
-#~ msgid ""
-#~ "The macro B<CIRCLEQ_REMOVE> removes the element I<elm> from the circular "
-#~ "queue."
-#~ msgstr "マクロ B<CIRCLEQ_REMOVE> は要素 I<elm> を循環キューから削除する。"
-
-#~ msgid "Circular queue example"
-#~ msgstr "循環キューの例"
-
-#~ msgid ""
-#~ "CIRCLEQ_HEAD(circleq, entry) head;\n"
-#~ "struct circleq *headp;              /* Circular queue head. */\n"
-#~ "struct entry {\n"
-#~ "    ...\n"
-#~ "    CIRCLEQ_ENTRY(entry) entries;   /* Circular queue. */\n"
-#~ "    ...\n"
-#~ "} *n1, *n2, *np;\n"
-#~ msgstr ""
-#~ "CIRCLEQ_HEAD(circleq, entry) head;\n"
-#~ "struct circleq *headp;                  /* 循環キューの先頭。*/\n"
-#~ "struct entry {\n"
-#~ "    ...\n"
-#~ "    CIRCLEQ_ENTRY(entry) entries;       /* 循環キュー。*/\n"
-#~ "    ...\n"
-#~ "} *n1, *n2, *np;\n"
-
-#~ msgid "CIRCLEQ_INIT(&head);                /* Initialize the circular queue. */\n"
-#~ msgstr "CIRCLEQ_INIT(&head);                    /* 循環キューを初期化する。*/\n"
-
-#~ msgid ""
-#~ "n1 = malloc(sizeof(struct entry));  /* Insert at the head. */\n"
-#~ "CIRCLEQ_INSERT_HEAD(&head, n1, entries);\n"
-#~ msgstr ""
-#~ "n1 = malloc(sizeof(struct entry));      /* 先頭に挿入する。*/\n"
-#~ "CIRCLEQ_INSERT_HEAD(&head, n1, entries);\n"
-
-#~ msgid ""
-#~ "n1 = malloc(sizeof(struct entry));  /* Insert at the tail. */\n"
-#~ "CIRCLEQ_INSERT_TAIL(&head, n1, entries);\n"
-#~ msgstr ""
-#~ "n1 = malloc(sizeof(struct entry));      /* 末尾に挿入する。*/\n"
-#~ "CIRCLEQ_INSERT_TAIL(&head, n1, entries);\n"
-
-#~ msgid ""
-#~ "n2 = malloc(sizeof(struct entry));  /* Insert after. */\n"
-#~ "CIRCLEQ_INSERT_AFTER(&head, n1, n2, entries);\n"
-#~ msgstr ""
-#~ "n2 = malloc(sizeof(struct entry));      /* 後ろに挿入する。*/\n"
-#~ "CIRCLEQ_INSERT_AFTER(&head, n1, n2, entries);\n"
-
-#~ msgid ""
-#~ "n2 = malloc(sizeof(struct entry));  /* Insert before. */\n"
-#~ "CIRCLEQ_INSERT_BEFORE(&head, n1, n2, entries);\n"
-#~ "                                    /* Forward traversal. */\n"
-#~ "for (np = head.cqh_first; np != (void *)&head;\n"
-#~ "        np = np-E<gt>entries.cqe_next)\n"
-#~ "    np-E<gt> ...\n"
-#~ "                                    /* Reverse traversal. */\n"
-#~ "for (np = head.cqh_last; np != (void *)&head; np = np-E<gt>entries.cqe_prev)\n"
-#~ "    np-E<gt> ...\n"
-#~ "                                    /* Delete. */\n"
-#~ "while (head.cqh_first != (void *)&head)\n"
-#~ "    CIRCLEQ_REMOVE(&head, head.cqh_first, entries);\n"
-#~ msgstr ""
-#~ "n2 = malloc(sizeof(struct entry));      /* 前に挿入する。*/\n"
-#~ "CIRCLEQ_INSERT_BEFORE(&head, n1, n2, entries);\n"
-#~ "                                        /* 順方向に辿る。*/\n"
-#~ "for (np = head.cqh_first; np != (void *)&head; np = np-E<gt>entries.cqe_next)\n"
-#~ "    np-E<gt> ...\n"
-#~ "                                        /* 逆方向に辿る。*/\n"
-#~ "for (np = head.cqh_last; np != (void *)&head; np = np-E<gt>entries.cqe_prev)\n"
-#~ "    np-E<gt> ...\n"
-#~ "                                        /* 削除する。*/\n"
-#~ "while (head.cqh_first != (void *)&head)\n"
-#~ "    CIRCLEQ_REMOVE(&head, head.cqh_first, entries);\n"
-
-#~ msgid ""
-#~ "Not in POSIX.1-2001.  Present on the BSDs.  The queue functions first "
-#~ "appeared in 4.4BSD."
-#~ msgstr ""
-#~ "POSIX.1-2001 にはない。 BSD 系に存在する。 queue 関数は 4.4BSD で初めて登"
-#~ "場した。"
-
-#~ msgid "2014-10-02"
-#~ msgstr "2014-10-02"
-
-#~ msgid ""
-#~ "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
-#~ "_XOPEN_SOURCE_EXTENDED"
-#~ msgstr ""
-#~ "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
-#~ "_XOPEN_SOURCE_EXTENDED"
-
-#~ msgid "2014-01-07"
-#~ msgstr "2014-01-07"
-
-#~ msgid "B<#include E<lt>setjmp.hE<gt>>"
-#~ msgstr "B<#include E<lt>setjmp.hE<gt>>"
-
-#~ msgid "B<int setjmp(jmp_buf >I<env>B<);>\n"
-#~ msgstr "B<int setjmp(jmp_buf >I<env>B<);>\n"
-
-#~ msgid ""
-#~ "B<sigsetjmp>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
-#~ "_POSIX_C_SOURCE"
-#~ msgstr ""
-#~ "B<sigsetjmp>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
-#~ "_POSIX_C_SOURCE"
-
-#~ 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 "
@@ -3845,13 +3204,6 @@ msgstr "B<cbc_crypt>(3)"
 #~ "ンテキストは無効になる。"
 
 #~ msgid ""
-#~ "C89, C99, and POSIX.1-2001 specify B<setjmp>().  POSIX.1-2001 specifies "
-#~ "B<sigsetjmp>()."
-#~ msgstr ""
-#~ "B<setjmp>()  は C89, C99, POSIX.1-2001 で規定されている。 B<sigsetjmp>()  "
-#~ "は POSIX.1-2001 で規定されている。"
-
-#~ msgid ""
 #~ "If you want to portably save and restore signal masks, use "
 #~ "B<sigsetjmp>()  and B<siglongjmp>(3)."
 #~ msgstr ""
index c8b36bc..3f7aae8 100644 (file)
@@ -1,13 +1,6 @@
 # pagename,#complete,#remaining,#all
-__setfpucw.3,22,2,24
-addseverity.3,31,2,33
-argz_add.3,47,16,63
-backtrace.3,51,14,65
-basename.3,60,7,67
-envz_add.3,37,11,48
-ftok.3,28,7,35
-offsetof.3,24,4,28
-program_invocation_name.3,20,1,21
-realpath.3,52,5,57
-setjmp.3,30,34,64
-xcrypt.3,30,3,33
+__setfpucw.3,23,1,24
+backtrace.3,64,1,65
+basename.3,66,1,67
+setjmp.3,44,20,64
+xcrypt.3,32,1,33
index 9a98f08..9e823a4 100644 (file)
 <TR class="over80"><TD>vmsplice.2</TD><TD>8/44</TD><TD>81.82</TD></TR>
 <TR><TD>userfaultfd.2</TD><TD>135/157</TD><TD>14.01</TD></TR>
 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>man3</B></TD></TR>
-<TR class="over80"><TD>__setfpucw.3</TD><TD>2/24</TD><TD>91.67</TD></TR>
-<TR class="over80"><TD>addseverity.3</TD><TD>2/33</TD><TD>93.94</TD></TR>
-<TR class="over70"><TD>argz_add.3</TD><TD>16/63</TD><TD>74.60</TD></TR>
-<TR class="over70"><TD>backtrace.3</TD><TD>14/65</TD><TD>78.46</TD></TR>
-<TR class="over80"><TD>basename.3</TD><TD>7/67</TD><TD>89.55</TD></TR>
-<TR class="over70"><TD>envz_add.3</TD><TD>11/48</TD><TD>77.08</TD></TR>
-<TR class="over80"><TD>ftok.3</TD><TD>7/35</TD><TD>80.00</TD></TR>
-<TR class="over80"><TD>offsetof.3</TD><TD>4/28</TD><TD>85.71</TD></TR>
-<TR class="over80"><TD>program_invocation_name.3</TD><TD>1/21</TD><TD>95.24</TD></TR>
-<TR class="over80"><TD>realpath.3</TD><TD>5/57</TD><TD>91.23</TD></TR>
-<TR><TD>setjmp.3</TD><TD>34/64</TD><TD>46.88</TD></TR>
-<TR class="over80"><TD>xcrypt.3</TD><TD>3/33</TD><TD>90.91</TD></TR>
+<TR class="over80"><TD>__setfpucw.3</TD><TD>1/24</TD><TD>95.83</TD></TR>
+<TR class="over80"><TD>backtrace.3</TD><TD>1/65</TD><TD>98.46</TD></TR>
+<TR class="over80"><TD>basename.3</TD><TD>1/67</TD><TD>98.51</TD></TR>
+<TR><TD>setjmp.3</TD><TD>20/64</TD><TD>68.75</TD></TR>
+<TR class="over80"><TD>xcrypt.3</TD><TD>1/33</TD><TD>96.97</TD></TR>
 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>man5</B></TD></TR>
 <TR class="over80"><TD>dir_colors.5</TD><TD>9/210</TD><TD>95.71</TD></TR>
 <TR class="over80"><TD>issue.5</TD><TD>2/14</TD><TD>85.71</TD></TR>
 <TR class="over80"><TD>login.3</TD><TD>1/46</TD><TD>97.83</TD></TR>
 <TR><TD ALIGN="center" COLSPAN=3 BGCOLOR="Yellow"><B>wchar</B></TD></TR>
 <TR class="over80"><TD>mbsnrtowcs.3</TD><TD>1/47</TD><TD>97.87</TD></TR>
-<TR><TD COLSPAN=3>Total 708 pages</TD></TR>
+<TR><TD COLSPAN=3>Total 697 pages</TD></TR>
 </TABLE>
 </BODY></HTML>