clientlib - NNTP clientlib part of InterNetNews library
#include <inn/libinn.h> extern FILE *ser_rd_fp; extern FILE *ser_wr_fp; extern char ser_line; extern char *getserverbyfile(char *file UNUSED); extern int server_init(char *host, int port); extern int handle_server_response(int response, char *host); extern void put_server(const char *text); extern int get_server(char *buff, int buffsize); extern void close_server(void);
The routines described in this manual page are part of the InterNetNews library, libinn(3). They are replacements for the clientlib part of the NNTP distribution, and are intended to be used in building news clients.
The getserverbyfile function retrieves the value of the server parameter in inn.conf (or the value of the "NNTPSERVER" environment variable if set) as the name of the local NNTP server. It returns a pointer to static space. The file parameter is ignored (inn.conf is forced).
The server_init function opens a connection to the NNTP server at the specified host, in reader mode. It returns the server's response code or "-1" on error. If a connection was made, then ser_rd_fp and ser_wr_fp can be used to read from and write to the server, respectively, and ser_line will contain the server's response (though you should use the more convenient put_server and get_server functions instead).
The handle_server_response function decodes the response code, which comes from the server on host. If the client is authorized, it returns 0. A client that is only allowed to read is authorized, but handle_server_response will print a message on the standard output. If the client is not authorized to talk to the server, then a message is printed and the routine returns "-1".
The put_server function sends text to the server, adding the necessary NNTP line terminators, and flushing the I/O buffer.
The get_server function reads a line of text from the server into buff, reading at most buffsize characters. Any trailing "\r\n" terminators are stripped off. get_server returns "-1" on error, 0 on success.
The close_server function sends a "QUIT" command to the server and closes the connection.
Written by Rich $alz <email@example.com> for InterNetNews. Rewritten into POD by Julien Elie.