OSDN Git Service

Retire LDP man-pages repository
[linuxjm/LDP_man-pages.git] / original / man3 / getprotoent_r.3
diff --git a/original/man3/getprotoent_r.3 b/original/man3/getprotoent_r.3
deleted file mode 100644 (file)
index d829209..0000000
+++ /dev/null
@@ -1,248 +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
-.\"
-.TH GETPROTOENT_R 3  2010-09-10 "GNU" "Linux Programmer's Manual"
-.SH NAME
-getprotoent_r, getprotobyname_r, getprotobynumber_r \- get
-protocol entry (reentrant)
-.SH SYNOPSIS
-.nf
-.B #include <netdb.h>
-.sp
-.BI "int getprotoent_r(struct protoent *" result_buf ", char *" buf ,
-.BI "                size_t " buflen ", struct protoent **" result );
-.sp
-.BI "int getprotobyname_r(const char *" name ,
-.BI "                struct protoent *" result_buf ", char *" buf ,
-.BI "                size_t " buflen ", struct protoent **" result );
-.sp
-.BI "int getprotobynumber_r(int " proto ,
-.BI "                struct protoent *" result_buf ", char *" buf ,
-.BI "                size_t " buflen ", struct protoent **" result );
-.sp
-.fi
-.in -4n
-Feature Test Macro Requirements for glibc (see
-.BR feature_test_macros (7)):
-.ad l
-.in
-.sp
-.BR getprotoent_r (),
-.BR getprotobyname_r (),
-.BR getprotobynumber_r ():
-.RS 4
-_BSD_SOURCE || _SVID_SOURCE
-.RE
-.ad b
-.SH DESCRIPTION
-The
-.BR getprotoent_r (),
-.BR getprotobyname_r (),
-and
-.BR getprotobynumber_r ()
-functions are the reentrant equivalents of, respectively,
-.BR getprotoent (3),
-.BR getprotobyname (3),
-and
-.BR getprotobynumber (3).
-They differ in the way that the
-.I protoent
-structure is returned,
-and in the function calling signature and return value.
-This manual page describes just the differences from
-the nonreentrant functions.
-
-Instead of returning a pointer to a statically allocated
-.I protoent
-structure as the function result,
-these functions copy the structure into the location pointed to by
-.IR result_buf .
-
-The
-.I buf
-array is used to store the string fields pointed to by the returned
-.I protoent
-structure.
-(The nonreentrant functions allocate these strings in static storage.)
-The size of this array is specified in
-.IR buflen .
-If
-.I buf
-is too small, the call fails with the error
-.BR ERANGE ,
-and the caller must try again with a larger buffer.
-(A buffer of length 1024 bytes should be sufficient for most applications.)
-.\" I can find no information on the required/recommended buffer size;
-.\" the nonreentrant functions use a 1024 byte buffer.
-.\" The 1024 byte value is also what the Solaris man page suggests. -- mtk
-
-If the function call successfully obtains a protocol record, then
-.I *result
-is set pointing to
-.IR result_buf ;
-otherwise,
-.I *result
-is set to NULL.
-.SH RETURN VALUE
-On success, these functions return 0.
-On error, they return one of the positive error numbers listed in ERRORS.
-
-On error, record not found
-.RB ( getprotobyname_r (),
-.BR getprotobynumber_r ()),
-or end of input
-.RB ( getprotoent_r ())
-.I result
-is set to NULL.
-.SH ERRORS
-.TP
-.B ENOENT
-.RB ( getprotoent_r ())
-No more records in database.
-.TP
-.B ERANGE
-.I buf
-is too small.
-Try again with a larger buffer
-(and increased
-.IR buflen ).
-.SH CONFORMING TO
-These functions are GNU extensions.
-Functions with similar names exist on some other systems,
-though typically with different calling signatures.
-.SH EXAMPLE
-The program below uses
-.BR getprotobyname_r ()
-to retrieve the protocol record for the protocol named
-in its first command-line argument.
-If a second (integer) command-line argument is supplied,
-it is used as the initial value for
-.IR buflen ;
-if
-.BR getprotobyname_r ()
-fails with the error
-.BR ERANGE ,
-the program retries with larger buffer sizes.
-The following shell session shows a couple of sample runs:
-.in +4n
-.nf
-
-.RB "$" " ./a.out tcp 1"
-ERANGE! Retrying with larger buffer
-getprotobyname_r() returned: 0 (success)  (buflen=78)
-p_name=tcp; p_proto=6; aliases=TCP
-.RB "$" " ./a.out xxx 1"
-ERANGE! Retrying with larger buffer
-getprotobyname_r() returned: 0 (success)  (buflen=100)
-Call failed/record not found
-.fi
-.in
-.SS Program source
-\&
-.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, s;
-    struct protoent result_buf;
-    struct protoent *result;
-    char buf[MAX_BUF];
-    char **p;
-
-    if (argc < 2) {
-        printf("Usage: %s proto\-name [buflen]\\n", argv[0]);
-        exit(EXIT_FAILURE);
-    }
-
-    buflen = 1024;
-    if (argc > 2)
-        buflen = atoi(argv[2]);
-
-    if (buflen > MAX_BUF) {
-        printf("Exceeded buffer limit (%d)\\n", MAX_BUF);
-        exit(EXIT_FAILURE);
-    }
-
-    erange_cnt = 0;
-    do {
-        s = getprotobyname_r(argv[1], &result_buf,
-                     buf, buflen, &result);
-        if (s == ERANGE) {
-            if (erange_cnt == 0)
-                printf("ERANGE! Retrying with larger buffer\\n");
-            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)\\n", MAX_BUF);
-                exit(EXIT_FAILURE);
-            }
-        }
-    } while (s == ERANGE);
-
-    printf("getprotobyname_r() returned: %s  (buflen=%d)\\n",
-            (s == 0) ? "0 (success)" : (s == ENOENT) ? "ENOENT" :
-            strerror(s), buflen);
-
-    if (s != 0 || result == NULL) {
-        printf("Call failed/record not found\\n");
-        exit(EXIT_FAILURE);
-    }
-
-    printf("p_name=%s; p_proto=%d; aliases=",
-                result_buf.p_name, result_buf.p_proto);
-    for (p = result_buf.p_aliases; *p != NULL; p++)
-        printf("%s ", *p);
-    printf("\\n");
-
-    exit(EXIT_SUCCESS);
-}
-.fi
-.SH SEE ALSO
-.BR getprotoent (3),
-.BR protocols (5)
-.SH COLOPHON
-This page is part of release 3.79 of the Linux
-.I man-pages
-project.
-A description of the project,
-information about reporting bugs,
-and the latest version of this page,
-can be found at
-\%http://www.kernel.org/doc/man\-pages/.