---
name: "libinn_clientlib"
section: "3"
platform: "linux"
package: "inn"
version: "2.7.4-4"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libinn_clientlib"
---

# libinn\_clientlib(3)

NNTP clientlib part of InterNetNews library

## NAME

clientlib - NNTP clientlib part of InterNetNews library

## SYNOPSIS

```
    #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);
```

## DESCRIPTION

The routines described in this manual page are part of the InterNetNews library, [libinn(3)](/libinn/3.md).  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.

## HISTORY

Written by Rich $alz \<rsalz@uunet.uu.net\> for InterNetNews.  Rewritten into POD by Julien Elie.

## SEE ALSO

[libinn(3)](/libinn/3.md).
