ENDPROTOENT(3P)

πŸ’– ENDPROTOENT(3P) πŸ’–

okay bestie, so this is a page from the POSIX Programmer's Manual β€” the 3P is giving "POSIX library functions" energy, iykyk ✨


🌸 PROLOG 🌸

Real talk first, bestie: this manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface may differ (so go check the corresponding Linux manual page for the deets on Linux behavior), or honestly the interface might not even be implemented on Linux at all. πŸ™ˆ So don't come for me if it's not there.


✨ NAME ✨

endprotoent, getprotobyname, getprotobynumber, getprotoent, setprotoent β€” network protocol database functions. it's giving "who is this protocol and why do I need to know" πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

#include <netdb.h>

void endprotoent(void);
struct protoent *getprotobyname(const char *name);
struct protoent *getprotobynumber(int proto);
struct protoent *getprotoent(void);
void setprotoent(int stayopen);

πŸ‘‘ DESCRIPTION πŸ‘‘

So these functions retrieve information about protocols. This info is considered to be stored in a database that you can access either sequentially or randomly. The implementation of this database is unspecified β€” like, nobody's telling you how it works under the hood, and that's on purpose. 🫢

The setprotoent() function shall open a connection to the database, and set the next entry to the first entry. If the stayopen argument is non-zero, the connection to the network protocol database shall not be closed after each call to getprotoent() (whether that call is direct, or happens indirectly through one of the other getproto*() functions) β€” and the implementation may maintain an open file descriptor for the database. so basically: keep the door open, bestie. πŸšͺ✨

The getprotobyname() function shall search the database from the beginning and find the first entry for which the protocol name specified by name matches the p_name member β€” opening and closing a connection to the database as necessary.

The getprotobynumber() function shall search the database from the beginning and find the first entry for which the protocol number specified by proto matches the p_proto member β€” opening and closing a connection to the database as necessary.

The getprotoent() function shall read the next entry of the database, opening and closing a connection to the database as necessary. it's giving "one at a time, in order, no skipping" πŸ“–

The getprotobyname(), getprotobynumber(), and getprotoent() functions shall each return a pointer to a protoent structure, and the members of that structure shall contain the fields of an entry in the network protocol database.

The endprotoent() function shall close the connection to the database, releasing any open file descriptor. bye bestie, door's closed, lights off. πŸ’€

These functions need not be thread-safe. no cap. don't say I didn't warn you.

⭐ RETURN VALUE ⭐

Upon successful completion, getprotobyname(), getprotobynumber(), and getprotoent() return a pointer to a protoent structure if the requested entry was found, and a null pointer if the end of the database was reached or the requested entry was not found. Otherwise, a null pointer is returned. πŸ€·β™€οΈ

The application shall not modify the structure to which the return value points, nor any storage areas pointed to by pointers within the structure. The returned pointer, and pointers within the structure, might be invalidated β€” or the structure or the storage areas might be overwritten β€” by a subsequent call to getprotobyname(), getprotobynumber(), or getprotoent(). The returned pointer, and pointers within the structure, might also be invalidated if the calling thread is terminated. 😭 so like, screenshot it in your brain but don't touch it, and definitely don't hold onto it forever.


πŸ’€ ERRORS πŸ’€

No errors are defined. (iconic, honestly. nothing to report. 😌)

The following sections are informative. (aka: the vibes section, not the law section ✨)


πŸ“ EXAMPLES πŸ“

None. πŸ“ nope, not a single one. we're keeping it mysterious.


🌈 APPLICATION USAGE 🌈

None. 🌈 also nothing here. slay.


🧚 RATIONALE 🧚

None. 🧚 the reasoning is lost to time, bestie.


πŸ’œ FUTURE DIRECTIONS πŸ’œ

None. πŸ’œ the future is a mystery and that's fine.


πŸ”₯ SEE ALSO πŸ”₯

  • The Base Definitions volume of POSIX.1‐2017, <netdb.h>

Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html .

Any typographical or formatting errors that appear in this page are most likely to have been introduced during the conversion of the source files to man page format. To report such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .


and that's the whole page, bestie β€” brought to you by IEEE/The Open Group, dated 2017, living its best life in the POSIX Programmer's Manual. πŸ’– mwah, go read a man page, ily 🫢

πŸ“¦ where this page comes from