summaryrefslogtreecommitdiffstats
path: root/man3/getservent_r.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/getservent_r.3')
-rw-r--r--man3/getservent_r.341
1 files changed, 20 insertions, 21 deletions
diff --git a/man3/getservent_r.3 b/man3/getservent_r.3
index d46d3d8c1..04397ee83 100644
--- a/man3/getservent_r.3
+++ b/man3/getservent_r.3
@@ -4,7 +4,7 @@
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
-.TH getservent_r 3 2023-02-05 "Linux man-pages 6.03"
+.TH getservent_r 3 2023-07-20 "Linux man-pages 6.05.01"
.SH NAME
getservent_r, getservbyname_r, getservbyport_r \- get
service entry (reentrant)
@@ -118,26 +118,25 @@ Try again with a larger buffer
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
-.ad l
-.nh
.TS
allbox;
lbx lb lb
l l l.
Interface Attribute Value
T{
+.na
+.nh
.BR getservent_r (),
.BR getservbyname_r (),
.BR getservbyport_r ()
T} Thread safety MT-Safe locale
.TE
-.hy
-.ad
.sp 1
-.SH STANDARDS
-These functions are GNU extensions.
+.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 getservbyport_r ()
@@ -175,9 +174,9 @@ Call failed/record not found
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-
+\&
#define MAX_BUF 10000
-
+\&
int
main(int argc, char *argv[])
{
@@ -186,25 +185,25 @@ main(int argc, char *argv[])
struct servent *result;
char buf[MAX_BUF];
char *protop;
-
+\&
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,
@@ -213,35 +212,35 @@ main(int argc, char *argv[])
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 (char **p = result_buf.s_aliases; *p != NULL; p++)
printf("%s ", *p);
printf("\en");
-
+\&
exit(EXIT_SUCCESS);
}
.EE