diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-24 04:52:24 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-24 04:52:24 +0000 |
commit | 100d1b33f088fd38f69129afff7f9c2a1e084a57 (patch) | |
tree | 5bf6b0bb14f22ecf0a5e9439fdd4c4758402400c /man3/getprotoent_r.3 | |
parent | Releasing progress-linux version 6.7-2~progress7.99u1. (diff) | |
download | manpages-100d1b33f088fd38f69129afff7f9c2a1e084a57.tar.xz manpages-100d1b33f088fd38f69129afff7f9c2a1e084a57.zip |
Merging upstream version 6.8.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man3/getprotoent_r.3')
-rw-r--r-- | man3/getprotoent_r.3 | 243 |
1 files changed, 0 insertions, 243 deletions
diff --git a/man3/getprotoent_r.3 b/man3/getprotoent_r.3 deleted file mode 100644 index d802b4c..0000000 --- a/man3/getprotoent_r.3 +++ /dev/null @@ -1,243 +0,0 @@ -'\" t -.\" Copyright 2008, Linux Foundation, written by Michael Kerrisk -.\" <mtk.manpages@gmail.com> -.\" -.\" SPDX-License-Identifier: Linux-man-pages-copyleft -.\" -.TH getprotoent_r 3 2023-10-31 "Linux man-pages 6.7" -.SH NAME -getprotoent_r, getprotobyname_r, getprotobynumber_r \- get -protocol entry (reentrant) -.SH LIBRARY -Standard C library -.RI ( libc ", " \-lc ) -.SH SYNOPSIS -.nf -.B #include <netdb.h> -.P -.BI "int getprotoent_r(struct protoent *restrict " result_buf , -.BI " char " buf "[restrict ." buflen "], size_t " buflen , -.BI " struct protoent **restrict " result ); -.BI "int getprotobyname_r(const char *restrict " name , -.BI " struct protoent *restrict " result_buf , -.BI " char " buf "[restrict ." buflen "], size_t " buflen , -.BI " struct protoent **restrict " result ); -.BI "int getprotobynumber_r(int " proto , -.BI " struct protoent *restrict " result_buf , -.BI " char " buf "[restrict ." buflen "], size_t " buflen , -.BI " struct protoent **restrict " result ); -.P -.fi -.RS -4 -Feature Test Macro Requirements for glibc (see -.BR feature_test_macros (7)): -.RE -.P -.BR getprotoent_r (), -.BR getprotobyname_r (), -.BR getprotobynumber_r (): -.nf - Since glibc 2.19: - _DEFAULT_SOURCE - glibc 2.19 and earlier: - _BSD_SOURCE || _SVID_SOURCE -.fi -.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. -.P -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 . -.P -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 -.P -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. -.P -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 ATTRIBUTES -For an explanation of the terms used in this section, see -.BR attributes (7). -.TS -allbox; -lbx lb lb -l l l. -Interface Attribute Value -T{ -.na -.nh -.BR getprotoent_r (), -.BR getprotobyname_r (), -.BR getprotobynumber_r () -T} Thread safety MT-Safe locale -.TE -.SH VERSIONS -Functions with similar names exist on some other systems, -though typically with different calling signatures. -.SH STANDARDS -GNU. -.SH EXAMPLES -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: -.P -.in +4n -.EX -.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 -.EE -.in -.SS Program source -\& -.\" SRC BEGIN (getprotoent_r.c) -.EX -#define _GNU_SOURCE -#include <ctype.h> -#include <errno.h> -#include <netdb.h> -#include <stdio.h> -#include <stdlib.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]; -\& - if (argc < 2) { - printf("Usage: %s proto\-name [buflen]\en", argv[0]); - exit(EXIT_FAILURE); - } -\& - buflen = 1024; - if (argc > 2) - buflen = atoi(argv[2]); -\& - if (buflen > MAX_BUF) { - printf("Exceeded buffer limit (%d)\en", 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\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("getprotobyname_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("p_name=%s; p_proto=%d; aliases=", - result_buf.p_name, result_buf.p_proto); - for (char **p = result_buf.p_aliases; *p != NULL; p++) - printf("%s ", *p); - printf("\en"); -\& - exit(EXIT_SUCCESS); -} -.EE -.\" SRC END -.SH SEE ALSO -.BR getprotoent (3), -.BR protocols (5) |