.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
-.TH GETPROTOENT_R 3 2016-03-15 "GNU" "Linux Programmer's Manual"
+.TH GETPROTOENT_R 3 2019-03-06 "GNU" "Linux Programmer's Manual"
.SH NAME
getprotoent_r, getprotobyname_r, getprotobynumber_r \- get
protocol entry (reentrant)
.BR ERANGE ,
the program retries with larger buffer sizes.
The following shell session shows a couple of sample runs:
+.PP
.in +4n
-.nf
-
+.EX
.RB "$" " ./a.out tcp 1"
ERANGE! Retrying with larger buffer
getprotobyname_r() returned: 0 (success) (buflen=78)
ERANGE! Retrying with larger buffer
getprotobyname_r() returned: 0 (success) (buflen=100)
Call failed/record not found
-.fi
+.EE
.in
.SS Program source
\&
char **p;
if (argc < 2) {
- printf("Usage: %s proto\-name [buflen]\\n", argv[0]);
+ printf("Usage: %s proto\-name [buflen]\en", argv[0]);
exit(EXIT_FAILURE);
}
buflen = atoi(argv[2]);
if (buflen > MAX_BUF) {
- printf("Exceeded buffer limit (%d)\\n", MAX_BUF);
+ printf("Exceeded buffer limit (%d)\en", MAX_BUF);
exit(EXIT_FAILURE);
}
buf, buflen, &result);
if (s == ERANGE) {
if (erange_cnt == 0)
- printf("ERANGE! Retrying with larger buffer\\n");
+ printf("ERANGE! Retrying with larger buffer\en");
erange_cnt++;
/* Increment a byte at a time so we can see exactly
buflen++;
if (buflen > MAX_BUF) {
- printf("Exceeded buffer limit (%d)\\n", MAX_BUF);
+ printf("Exceeded buffer limit (%d)\en", MAX_BUF);
exit(EXIT_FAILURE);
}
}
} while (s == ERANGE);
- printf("getprotobyname_r() returned: %s (buflen=%d)\\n",
+ 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\\n");
+ printf("Call failed/record not found\en");
exit(EXIT_FAILURE);
}
result_buf.p_name, result_buf.p_proto);
for (p = result_buf.p_aliases; *p != NULL; p++)
printf("%s ", *p);
- printf("\\n");
+ printf("\en");
exit(EXIT_SUCCESS);
}