OSDN Git Service

Retire LDP man-pages repository
[linuxjm/LDP_man-pages.git] / draft / man3 / getservent_r.3
diff --git a/draft/man3/getservent_r.3 b/draft/man3/getservent_r.3
deleted file mode 100644 (file)
index b339861..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-.\" Copyright 2008, Linux Foundation, written by Michael Kerrisk
-.\"    <mtk.manpages@gmail.com>
-.\"
-.\" %%%LICENSE_START(VERBATIM)
-.\" Permission is granted to make and distribute verbatim copies of this
-.\" manual provided the copyright notice and this permission notice are
-.\" preserved on all copies.
-.\"
-.\" Permission is granted to copy and distribute modified versions of this
-.\" manual under the conditions for verbatim copying, provided that the
-.\" entire resulting derived work is distributed under the terms of a
-.\" permission notice identical to this one.
-.\"
-.\" Since the Linux kernel and libraries are constantly changing, this
-.\" manual page may be incorrect or out-of-date.  The author(s) assume no
-.\" responsibility for errors or omissions, or for damages resulting from
-.\" the use of the information contained herein.  The author(s) may not
-.\" have taken the same level of care in the production of this manual,
-.\" which is licensed free of charge, as they might when working
-.\" professionally.
-.\"
-.\" Formatted or processed versions of this manual, if unaccompanied by
-.\" the source, must acknowledge the copyright and authors of this work.
-.\" %%%LICENSE_END
-.\"
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.\"
-.\" Japanese Version Copyright (c) 2012  Akihiro MOTOKI
-.\"         all rights reserved.
-.\" Translated 2012-05-06, Akihiro MOTOKI <amotoki@gmail.com>
-.\"
-.TH GETSERVENT_R 3 2010\-09\-10 GNU "Linux Programmer's Manual"
-.SH 名前
-getservent_r, getservbyname_r, getservbyport_r \- サービスエントリーを
-取得する (リエントラント版)
-.SH 書式
-.nf
-\fB#include <netdb.h>\fP
-.sp
-\fBint getservent_r(struct servent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
-\fB                size_t \fP\fIbuflen\fP\fB, struct servent **\fP\fIresult\fP\fB);\fP
-.sp
-\fBint getservbyname_r(const char *\fP\fIname\fP\fB, const char *\fP\fIproto\fP\fB,\fP
-\fB                struct servent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
-\fB                size_t \fP\fIbuflen\fP\fB, struct servent **\fP\fIresult\fP\fB);\fP
-.sp
-\fBint getservbyport_r(int \fP\fIport\fP\fB, const char *\fP\fIproto\fP\fB,\fP
-\fB                struct servent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
-\fB                size_t \fP\fIbuflen\fP\fB, struct servent **\fP\fIresult\fP\fB);\fP
-.sp
-.fi
-.in -4n
-glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
-.ad l
-.in
-.sp
-\fBgetservent_r\fP(), \fBgetservbyname_r\fP(), \fBgetservbyport_r\fP():
-.RS 4
-_BSD_SOURCE || _SVID_SOURCE
-.RE
-.ad b
-.SH 説明
-関数 \fBgetservent_r\fP(), \fBgetservbyname_r\fP(), \fBgetservbyport_r\fP() は、
-それぞれ \fBgetservent\fP(3), \fBgetservbyname\fP(3), \fBgetservbyport\fP(3) の
-リエントラント版である。
-\fIservent\fP 構造体の返し方と、関数呼び出し時の引き数と返り値が異なる。
-このマニュアルページでは、リエントラントでない関数との違いだけを
-説明する。
-
-これらの関数は、関数の結果として静的に割り当てられた \fIservent\fP 構造体
-へのポインターを返すのではなく、 \fIservent\fP 構造体を \fIresult_buf\fP が
-指す場所にコピーする。
-
-.\" I can find no information on the required/recommended buffer size;
-.\" the nonreentrant functions use a 1024 byte buffer -- mtk.
-配列 \fIbuf\fP は、返される \fIservent\fP 構造体が指す文字列フィールドを
-格納するのに使用される (リエントラントでない関数の場合は、
-これらの文字列は静的な領域に格納される)。
-この配列の大きさは \fIbuflen\fP で指定される。
-\fIbuf\fP が小さすぎる場合、関数呼び出しはエラー \fBERANGE\fP で失敗し、
-呼び出し側ではもっと大きなバッファーで再度呼び出す必要がある (ほとんどの
-アプリケーションでは、長さ 1024 バイトのバッファーで十分なはずである)。
-
-関数呼び出しでサービスレコードの取得に成功すると、
-\fI*result\fP は \fIresult_buf\fP を指すように設定される。
-それ以外の場合は \fI*result\fP に NULL が設定される。
-.SH 返り値
-成功すると、これらの関数は 0 を返す。エラーの場合、「エラー」の節の
-リストにある正のエラー番号のいずれかを返す。
-
-エラーの場合、レコードが見つからなかった場合 (\fBgetservbyname_r\fP(),
-\fBgetservbyaddr_r\fP()) やこれ以上レコードがない場合 (\fBgetservent_r\fP())、
-\fIresult\fP には NULL が設定される。
-.SH エラー
-.TP 
-\fBENOENT\fP
-(\fBgetservent_r\fP())  データベースにこれ以上レコードがない。
-.TP 
-\fBERANGE\fP
-\fIbuf\fP が小さすぎる。もっと大きなバッファーにして
-(または \fIbuflen\fP を増やして) 再度呼び出すこと。
-.SH 準拠
-これらの関数は GNU による拡張である。
-他のシステムにも同様の名前の関数が存在する場合があるが、
-通常は関数の引き数が異なる。
-.SH 例
-以下のプログラムは、 \fBgetservbyport_r\fP() を使って、コマンド
-ライン引き数で指定されたポート番号とプロトコル名を持つ
-サービスレコードを取得する。
-三番目のコマンドライン引き数 (整数値) が指定された場合は、
-その値が \fIbuflen\fP の初期値として使用される。
-\fBgetservbyport_r\fP() がエラー \fBERANGE\fP で失敗すると、プログラムは
-より大きなバッファーサイズで再度 \fBgetservbyport_r\fP を呼び出す。
-下記のシェルのセッションは実行例を示している。
-.in +4n
-.nf
-
-$\fB ./a.out 7 tcp 1\fP
-ERANGE! Retrying with larger buffer
-getservbyport_r() returned: 0 (success)  (buflen=87)
-s_name=echo; s_proto=tcp; s_port=7; aliases=
-$\fB ./a.out 77777 tcp\fP
-getservbyport_r() returned: 0 (success)  (buflen=1024)
-Call failed/record not found
-.fi
-.in
-.SS プログラムのソース
-\&
-.nf
-#define _GNU_SOURCE
-#include <ctype.h>
-#include <netdb.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-
-#define MAX_BUF 10000
-
-int
-main(int argc, char *argv[])
-{
-    int buflen, erange_cnt, port, s;
-    struct servent result_buf;
-    struct servent *result;
-    char buf[MAX_BUF];
-    char *protop;
-    char **p;
-
-    if (argc < 3) {
-        printf("Usage: %s port\-num proto\-name [buflen]\en", argv[0]);
-        exit(EXIT_FAILURE);
-    }
-
-    port = htons(atoi(argv[1]));
-    protop = (strcmp(argv[2], "null") == 0 ||
-              strcmp(argv[2], "NULL") == 0) ?  NULL : argv[2];
-
-    buflen = 1024;
-    if (argc > 3)
-        buflen = atoi(argv[3]);
-
-    if (buflen > MAX_BUF) {
-        printf("Exceeded buffer limit (%d)\en", MAX_BUF);
-        exit(EXIT_FAILURE);
-    }
-
-    erange_cnt = 0;
-    do {
-        s = getservbyport_r(port, protop, &result_buf,
-                     buf, buflen, &result);
-        if (s == ERANGE) {
-            if (erange_cnt == 0)
-                printf("ERANGE! Retrying with larger buffer\en");
-            erange_cnt++;
-
-            /* Increment a byte at a time so we can see exactly
-               what size buffer was required */
-
-            buflen++;
-
-            if (buflen > MAX_BUF) {
-                printf("Exceeded buffer limit (%d)\en", MAX_BUF);
-                exit(EXIT_FAILURE);
-            }
-        }
-    } while (s == ERANGE);
-
-    printf("getservbyport_r() returned: %s  (buflen=%d)\en",
-            (s == 0) ? "0 (success)" : (s == ENOENT) ? "ENOENT" :
-            strerror(s), buflen);
-
-    if (s != 0 || result == NULL) {
-        printf("Call failed/record not found\en");
-        exit(EXIT_FAILURE);
-    }
-
-    printf("s_name=%s; s_proto=%s; s_port=%d; aliases=",
-                result_buf.s_name, result_buf.s_proto,
-                ntohs(result_buf.s_port));
-    for (p = result_buf.s_aliases; *p != NULL; p++)
-        printf("%s ", *p);
-    printf("\en");
-
-    exit(EXIT_SUCCESS);
-}
-.fi
-.SH 関連項目
-\fBgetservent\fP(3), \fBservices\fP(5)
-.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。