- bring back ja queue.3 from man-pages-ja-20210315 in extra-files patch auto/th/man-pages-5.11-1
authorJakub Bogusz <qboosh@pld-linux.org>
Sat, 8 May 2021 16:56:16 +0000 (18:56 +0200)
committerJakub Bogusz <qboosh@pld-linux.org>
Sat, 8 May 2021 16:56:34 +0000 (18:56 +0200)
man-pages-extra-files.patch

index 863faac5cda780f4f9be3793c7b7c55c2fc34d78..303f749f7c25c68d03dd3f9f20f2eca0b214c85d 100644 (file)
 +      man-pages-zh_CN-1.5.tar.gz (converted from UTF-8 to GB2312)
 +
 +Some .so pointers have been added.
+--- man-pages-extra/ja/man3/queue.3.orig       1970-01-01 01:00:00.000000000 +0100
++++ man-pages-extra/ja/man3/queue.3    2021-05-08 18:44:32.566178023 +0200
+@@ -0,0 +1,357 @@
++.\" Copyright (c) 1993
++.\"     The Regents of the University of California.  All rights reserved.
++.\"
++.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
++.\" Redistribution and use in source and binary forms, with or without
++.\" modification, are permitted provided that the following conditions
++.\" are met:
++.\" 1. Redistributions of source code must retain the above copyright
++.\"    notice, this list of conditions and the following disclaimer.
++.\" 2. Redistributions in binary form must reproduce the above copyright
++.\"    notice, this list of conditions and the following disclaimer in the
++.\"    documentation and/or other materials provided with the distribution.
++.\" 3. All advertising materials mentioning features or use of this software
++.\"    must display the following acknowledgement:
++.\"     This product includes software developed by the University of
++.\"     California, Berkeley and its contributors.
++.\" 4. Neither the name of the University nor the names of its contributors
++.\"    may be used to endorse or promote products derived from this software
++.\"    without specific prior written permission.
++.\"
++.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++.\" SUCH DAMAGE.
++.\" %%%LICENSE_END
++.\"
++.\"     @(#)queue.3     8.2 (Berkeley) 1/24/94
++.\"
++.\" hch, 2002-03-25
++.\" 2007-12-08, mtk, Converted from mdoc to man macros
++.\"
++.\"*******************************************************************
++.\"
++.\" This file was generated with po4a. Translate the source file.
++.\"
++.\"*******************************************************************
++.\"
++.\" Japanese Version Copyright (c) 2004 Yuichi SATO
++.\"         all rights reserved.
++.\" Translated Thu Sep  2 04:41:11 JST 2004
++.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
++.\"
++.TH QUEUE 3 2007\-12\-28 Linux "Linux Programmer's Manual"
++.SH 名前
++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)
++キュー・循環キューの実装
++.SH 書式
++.nf
++\fB#include <sys/queue.h>\fP
++
++\fBLIST_ENTRY(\fP\fITYPE\fP\fB);\fP
++\fBLIST_HEAD(\fP\fIHEADNAME\fP\fB, \fP\fITYPE\fP\fB);\fP
++\fBLIST_INIT(LIST_HEAD *\fP\fIhead\fP\fB);\fP
++\fBLIST_INSERT_AFTER(LIST_ENTRY *\fP\fIlistelm\fP\fB, \fP
++\fB                TYPE *\fP\fIelm\fP\fB, LIST_ENTRY \fP\fINAME\fP\fB);\fP
++\fBLIST_INSERT_HEAD(LIST_HEAD *\fP\fIhead\fP\fB, \fP
++\fB                TYPE *\fP\fIelm\fP\fB, LIST_ENTRY \fP\fINAME\fP\fB);\fP
++\fBLIST_REMOVE(TYPE *\fP\fIelm\fP\fB, LIST_ENTRY \fP\fINAME\fP\fB);\fP
++
++\fBTAILQ_ENTRY(\fP\fITYPE\fP\fB);\fP
++\fBTAILQ_HEAD(\fP\fIHEADNAME\fP\fB, \fP\fITYPE\fP\fB);\fP
++\fBTAILQ_INIT(TAILQ_HEAD *\fP\fIhead\fP\fB);\fP
++\fBTAILQ_INSERT_AFTER(TAILQ_HEAD *\fP\fIhead\fP\fB, TYPE *\fP\fIlistelm\fP\fB, \fP
++\fB                TYPE *\fP\fIelm\fP\fB, TAILQ_ENTRY \fP\fINAME\fP\fB);\fP
++\fBTAILQ_INSERT_HEAD(TAILQ_HEAD *\fP\fIhead\fP\fB, \fP
++\fB                TYPE *\fP\fIelm\fP\fB, TAILQ_ENTRY \fP\fINAME\fP\fB);\fP
++\fBTAILQ_INSERT_TAIL(TAILQ_HEAD *\fP\fIhead\fP\fB, \fP
++\fB                TYPE *\fP\fIelm\fP\fB, TAILQ_ENTRY \fP\fINAME\fP\fB);\fP
++\fBTAILQ_REMOVE(TAILQ_HEAD *\fP\fIhead\fP\fB, TYPE *\fP\fIelm\fP\fB, TAILQ_ENTRY \fP\fINAME\fP\fB);\fP
++
++\fBCIRCLEQ_ENTRY(\fP\fITYPE\fP\fB);\fP
++\fBCIRCLEQ_HEAD(\fP\fIHEADNAME\fP\fB, \fP\fITYPE\fP\fB);\fP
++\fBCIRCLEQ_INIT(CIRCLEQ_HEAD *\fP\fIhead\fP\fB);\fP
++\fBCIRCLEQ_INSERT_AFTER(CIRCLEQ_HEAD *\fP\fIhead\fP\fB, TYPE *\fP\fIlistelm\fP\fB, \fP
++\fB                TYPE *\fP\fIelm\fP\fB, CIRCLEQ_ENTRY \fP\fINAME\fP\fB);\fP
++\fBCIRCLEQ_INSERT_BEFORE(CIRCLEQ_HEAD *\fP\fIhead\fP\fB, TYPE *\fP\fIlistelm\fP\fB, \fP
++\fB                TYPE *\fP\fIelm\fP\fB, CIRCLEQ_ENTRY \fP\fINAME\fP\fB);\fP
++\fBCIRCLEQ_INSERT_HEAD(CIRCLEQ_HEAD *\fP\fIhead\fP\fB, \fP
++\fB                TYPE *\fP\fIelm\fP\fB, CIRCLEQ_ENTRY \fP\fINAME\fP\fB);\fP
++\fBCIRCLEQ_INSERT_TAIL(CIRCLEQ_HEAD *\fP\fIhead\fP\fB, \fP
++\fB                TYPE *\fP\fIelm\fP\fB, CIRCLEQ_ENTRY \fP\fINAME\fP\fB);\fP
++\fBCIRCLEQ_REMOVE(CIRCLEQ_HEAD *\fP\fIhead\fP\fB, \fP
++\fB                TYPE *\fP\fIelm\fP\fB, CIRCLEQ_ENTRY \fP\fINAME\fP\fB);\fP
++.fi
++.SH 説明
++これらのマクロは、次の 3 つのデータ構造を定義して操作する: リスト・テールキュー・循環キュー。 3
++つのデータ構造すべてにおいて以下の機能がサポートされている:
++.sp
++.RS 4
++.PD 0
++.IP * 4
++新たなエントリーをリストの先頭に挿入する。
++.IP *
++新たなエントリーをリストのどの要素よりも後に挿入する。
++.IP *
++リストの任意のエントリーを削除する。
++.IP *
++リストを順方向に辿る。
++.PD
++.RE
++.PP
++リストは 3 つのデータ構造の中で最も単純であり、 上記の機能のみをサポートする。
++
++テールキューは以下の機能を追加する:
++.RS 4
++.IP * 4
++エントリーをリストの最後に追加できる。
++.RE
++.PP
++ただし:
++.sp
++.RS 4
++.PD 0
++.IP 1. 4
++全てのリスト挿入と削除において、リストの先頭を指定しなければならない。
++.IP 2.
++各先頭エントリーは 1 つではなく 2 つのポインターを必要とする。
++.IP 3.
++リストと比べて、コードサイズは 15% 大きくなり、操作は 20% 遅くなる。
++.PD
++.RE
++.PP
++循環キューは以下の機能を追加する:
++.sp
++.RS 4
++.PD 0
++.IP * 4
++エントリーをリストの最後に追加できる。
++.IP *
++エントリーを他のエントリーの前に追加できる。
++.IP *
++逆方向に末尾から先頭へ辿ることができる。
++.PD
++.RE
++.PP
++ただし:
++.sp
++.RS 4
++.PD 0
++.IP 1. 4
++全てのリスト挿入と削除において、リストの先頭を指定しなければならない。
++.IP 2.
++各先頭エントリーは 1 つではなく 2 つのポインターを必要とする。
++.IP 3.
++辿る際の終了条件がより複雑である。
++.IP 4.
++リストと比べて、コードサイズは 40% 大きくなり、操作は 45% 遅くなる。
++.PD
++.RE
++.PP
++マクロ定義において \fITYPE\fP はユーザー定義構造体の名前であり、 \fBLIST_ENTRY\fP, \fBTAILQ_ENTRY\fP,
++\fBCIRCLEQ_ENTRY\fP の何れか型のフィールドと 指定された \fINAME\fP を含まなければならない。 引き数 \fIHEADNAME\fP
++はユーザー定義構造体の名前であり、 マクロ \fBLIST_HEAD\fP, \fBTAILQ_HEAD\fP, \fBCIRCLEQ_HEAD\fP
++を用いて宣言されなければならない。 これらのマクロがどのように使われるかについての更なる説明は、 以下の例を参照すること。
++.SS リスト
++リストの先頭には、 \fBLIST_HEAD\fP マクロで定義される構造体が置かれる。 この構造体はリストの最初の要素へのポインターを 1 つ含む。 要素は
++2 重にリンクされており、 任意の要素はリストを辿らずに削除できる。 新しい要素は既存の要素の後またはリストの先頭に追加できる。
++\fBLIST_HEAD\fP 構造体は以下のように宣言されている:
++.in +4n
++.nf
++
++LIST_HEAD(HEADNAME, TYPE) head;
++.fi
++.in
++.PP
++ここで \fIHEADNAME\fP は定義される構造体の名前であり、 \fITYPE\fP はリンク内でリンクされる要素の型である。
++リストの先頭へのポインターは、その後で次のように宣言される:
++.in +4n
++.nf
++
++struct HEADNAME *headp;
++.fi
++.in
++.PP
++(名前 \fIhead\fP と \fIheadp\fP はユーザーが選択できる。)
++.PP
++マクロ \fBLIST_ENTRY\fP はリストの要素を接続する構造体を宣言する。
++.PP
++マクロ \fBLIST_INIT\fP は \fIhead\fP で参照されるリストを初期化する。
++.PP
++マクロ \fBLIST_INSERT_HEAD\fP は新たな要素 \fIelm\fP をリストの先頭に挿入する。
++.PP
++マクロ \fBLIST_INSERT_AFTER\fP は新たな要素 \fIelm\fP を要素 \fIlistelm\fP の後に挿入する。
++.PP
++マクロ \fBLIST_REMOVE\fP は要素 \fIelm\fP をリストから削除する。
++.SS リストの例
++.nf
++LIST_HEAD(listhead, entry) head;
++struct listhead *headp;                 /* リストの先頭。*/
++struct entry {
++    ...
++    LIST_ENTRY(entry) entries;          /* リスト。 */
++    ...
++} *n1, *n2, *np;
++
++LIST_INIT(&head);                       /* リストを初期化する。*/
++
++n1 = malloc(sizeof(struct entry));      /* 先頭に挿入する。*/
++LIST_INSERT_HEAD(&head, n1, entries);
++
++n2 = malloc(sizeof(struct entry));      /* 後ろに挿入する。*/
++LIST_INSERT_AFTER(n1, n2, entries);
++                                        /* 順方向に辿る。*/
++for (np = head.lh_first; np != NULL; np = np\->entries.le_next)
++    np\-> ...
++
++.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=1506
++while (head.lh_first != NULL)           /* 削除する。*/
++    LIST_REMOVE(head.lh_first, entries);
++.fi
++.SS テールキュー
++テールキューの先頭には \fBTAILQ_HEAD\fP マクロで定義される構造体が置かれる。 この構造体は 1 組のポインターを含んでいる。 1
++つはテールキューの最初の要素へのポインターであり、 もう 1 つはテールキューの最後の要素へのポインターである。 要素は 2 重にリンクされており、
++任意の要素はテールキューを辿らずに削除できる。 新しい要素は既存の要素の後またはテールキューの先頭または末尾に追加できる。 \fBTAILQ_HEAD\fP
++構造体は以下のように定義されている:
++.in +4n
++.nf
++
++TAILQ_HEAD(HEADNAME, TYPE) head;
++.fi
++.in
++.PP
++ここで \fIHEADNAME\fP は定義される構造体の名前であり、 \fITYPE\fP はテールキュー内でリンクされる要素の型である。
++テールキューの先頭へのポインターは、その後で次のように宣言される:
++.in +4n
++.nf
++
++struct HEADNAME *headp;
++.fi
++.in
++.PP
++(名前 \fIhead\fP と \fIheadp\fP はユーザーが選択できる。)
++.PP
++マクロ \fBTAILQ_ENTRY\fP はテールキューの要素を接続する構造体を宣言する。
++.PP
++マクロ \fBTAILQ_INIT\fP は \fIhead\fP で参照されるテールキューを初期化する。
++.PP
++マクロ \fBTAILQ_INSERT_HEAD\fP は新たな要素 \fIelm\fP をテールキューの先頭に挿入する。
++.PP
++マクロ \fBTAILQ_INSERT_TAIL\fP は新たな要素 \fIelm\fP をテールキューの末尾に挿入する。
++.PP
++マクロ \fBTAILQ_INSERT_AFTER\fP は新たな要素 \fIelm\fP を要素 \fIlistelm\fP の後に挿入する。
++.PP
++マクロ \fBTAILQ_REMOVE\fP は要素 \fIelm\fP をテールキューから削除する。
++.SS テールキューの例
++.nf
++TAILQ_HEAD(tailhead, entry) head;
++struct tailhead *headp;                 /* テールキューの先頭。*/
++struct entry {
++    ...
++    TAILQ_ENTRY(entry) entries;         /* テールキュー。*/
++    ...
++} *n1, *n2, *np;
++
++TAILQ_INIT(&head);                      /* キューを初期化する。*/
++
++n1 = malloc(sizeof(struct entry));      /* 先頭に挿入する。*/
++TAILQ_INSERT_HEAD(&head, n1, entries);
++
++n1 = malloc(sizeof(struct entry));      /* 末尾に挿入する。*/
++TAILQ_INSERT_TAIL(&head, n1, entries);
++
++n2 = malloc(sizeof(struct entry));      /* 後ろに挿入する。*/
++TAILQ_INSERT_AFTER(&head, n1, n2, entries);
++                                        /* 順方向に辿る。*/
++for (np = head.tqh_first; np != NULL; np = np\->entries.tqe_next)
++    np\-> ...
++                                        /* 削除する。*/
++while (head.tqh_first != NULL)
++    TAILQ_REMOVE(&head, head.tqh_first, entries);
++.fi
++.SS 循環キュー
++循環キューの先頭には \fBCIRCLEQ_HEAD\fP マクロで定義される構造体が置かれる。 この構造体は 1 組のポインターを含んでいる。 1
++つは循環キューの最初の要素へのポインターであり、 もう 1 つは循環キューの最後の要素へのポインターである。 要素は 2 重にリンクされており、
++任意の要素はキューを辿らずに削除できる。 新しい要素は、既存の要素の後または前、またはキューの先頭または末尾に追加できる。 A
++\fBCIRCLEQ_HEAD\fP 構造体は以下のように定義されている:
++.in +4n
++.nf
++
++CIRCLEQ_HEAD(HEADNAME, TYPE) head;
++.fi
++.in
++.PP
++ここで \fIHEADNAME\fP は定義される構造体の名前であり、 \fITYPE\fP は循環キュー内でリンクされる要素の型である。
++循環キューの先頭へのポインターは、その後で次のように宣言される:
++.in +4n
++.nf
++
++struct HEADNAME *headp;
++.fi
++.in
++.PP
++(名前 \fIhead\fP と \fIheadp\fP はユーザーが選択できる。)
++.PP
++マクロ \fBCIRCLEQ_ENTRY\fP は循環キューの要素を接続する構造体を宣言する。
++.PP
++マクロ \fBCIRCLEQ_INIT\fP は \fIhead\fP で参照される循環キューを初期化する。
++.PP
++マクロ \fBCIRCLEQ_INSERT_HEAD\fP は新たな要素 \fIelm\fP を循環キューの先頭に挿入する。
++.PP
++マクロ \fBCIRCLEQ_INSERT_TAIL\fP は新たな要素 \fIelm\fP を循環キューの末尾に挿入する。
++.PP
++マクロ \fBCIRCLEQ_INSERT_AFTER\fP は新たな要素 \fIelm\fP を要素 \fIlistelm\fP の後に挿入する。
++.PP
++マクロ \fBCIRCLEQ_INSERT_AFTER\fP は新たな要素 \fIelm\fP を要素 \fIlistelm\fP の前に挿入する。
++.PP
++マクロ \fBCIRCLEQ_REMOVE\fP は要素 \fIelm\fP を循環キューから削除する。
++.SS 循環キューの例
++.nf
++CIRCLEQ_HEAD(circleq, entry) head;
++struct circleq *headp;                  /* 循環キューの先頭。*/
++struct entry {
++    ...
++    CIRCLEQ_ENTRY(entry) entries;       /* 循環キュー。*/
++    ...
++} *n1, *n2, *np;
++
++CIRCLEQ_INIT(&head);                    /* 循環キューを初期化する。*/
++
++n1 = malloc(sizeof(struct entry));      /* 先頭に挿入する。*/
++CIRCLEQ_INSERT_HEAD(&head, n1, entries);
++
++n1 = malloc(sizeof(struct entry));      /* 末尾に挿入する。*/
++CIRCLEQ_INSERT_TAIL(&head, n1, entries);
++
++n2 = malloc(sizeof(struct entry));      /* 後ろに挿入する。*/
++CIRCLEQ_INSERT_AFTER(&head, n1, n2, entries);
++
++n2 = malloc(sizeof(struct entry));      /* 前に挿入する。*/
++CIRCLEQ_INSERT_BEFORE(&head, n1, n2, entries);
++                                        /* 順方向に辿る。*/
++for (np = head.cqh_first; np != (void *)&head; np = np\->entries.cqe_next)
++    np\-> ...
++                                        /* 逆方向に辿る。*/
++for (np = head.cqh_last; np != (void *)&head; np = np\->entries.cqe_prev)
++    np\-> ...
++                                        /* 削除する。*/
++while (head.cqh_first != (void *)&head)
++    CIRCLEQ_REMOVE(&head, head.cqh_first, entries);
++.fi
++.SH 準拠
++POSIX.1\-2001 にはない。 BSD 系に存在する。 queue 関数は 4.4BSD で初めて登場した。
++.SH この文書について
++この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
++である。プロジェクトの説明とバグ報告に関する情報は
++http://www.kernel.org/doc/man\-pages/ に書かれている。
This page took 0.141226 seconds and 4 git commands to generate.