libstorage - routines for managing INN storage


       #include <inn/storage.h>

       typedef enum {
       } RETRTYPE;

       typedef enum {
       } SMSETUP;

       typedef unsigned char STORAGECLASS;
       typedef unsigned char STORAGETYPE;

       typedef struct token {
           STORAGETYPE  type;
           STORAGECLASS class;
           char         token[STORAGE_TOKEN_LENGTH];
       } TOKEN;

       typedef struct {
           unsigned char type;
           const char    *data;
           struct iovec  *iov;
           int           iovcnt;
           size_t        len;
           unsigned char nextmethod;
           void          *private;
           time_t        arrived;
           time_t        expires;
           char          *groups;
           int           groupslen;
           TOKEN         *token;
       } ARTHANDLE;

       typedef enum {
       } PROBETYPE;

       typedef enum {
       } FLUSHTYPE;

       struct artngnum {
           char   *groupname;
           ARTNUM artnum;

       bool IsToken(const char *text);

       char *TokenToText(const TOKEN token);

       TOKEN TextToToken(const char *text);

       bool SMsetup(SMSETUP type, void *value);

       bool SMinit(void);

       TOKEN SMstore(const ARTHANDLE article);

       ARTHANDLE *SMretrieve(const TOKEN token, const RETRTYPE amount);

       ARTHANDLE *SMnext(const ARTHANDLE *article, const RETRTYPE amount);

       void SMfreearticle(ARTHANDLE *article);

       bool SMcancel(TOKEN token);

       bool SMprobe(PROBETYPE type, TOKEN *token, void *value);

       void SMprintfiles(FILE *file, TOKEN token, char **xref, int ngroups);

       bool SMflushcacheddata(FLUSHTYPE type);

       char *SMexplaintoken(const TOKEN token);

       void SMshutdown(void);

       int SMerrno;

       char *SMerrorstr;

       #include <inn/ov.h>

       #define OV_NOSPACE ...

       typedef enum {
       } OVCTLTYPE;

       typedef enum {
       } OVSORTTYPE;

       typedef enum {

       bool OVopen(int mode);

       bool OVctl(OVCTLTYPE type, void *val);

       bool OVgroupstats(char *group, int *lo, int *hi, int *count, int *flag);

       bool OVgroupadd(char *group, ARTNUM lo, ARTNUM hi, char *flag);

       bool OVgroupdel(char *group);

       OVADDRESULT OVadd(TOKEN token, char *data, int len, time_t arrived, time_t expires);

       bool OVcancel(TOKEN token);

       void *OVopensearch(char *group, int low, int high);

       bool OVsearch(void *handle, ARTNUM *artnum, char **data, int *len, TOKEN *token, time_t *arrived);

       void OVclosesearch(void *handle);

       bool OVgetartinfo(char *group, ARTNUM artnum, TOKEN *token);

       bool OVexpiregroup(char *group, int *lo, struct history *h);

       typedef struct _OVGE {
           bool   delayrm;
           bool   usepost;
           bool   quiet;
           bool   keep;
           bool   earliest;
           bool   ignoreselfexpire;
           char   *filename;
           time_t now;
           float  timewarp;
       } OVGE;

       void OVclose(void);


   libstorage is a library of common utility (the storage manager)
   routines for accessing Usenet articles and related data independent of
   particular storage method; this is known as the storage API.

   The storage manager's function is to isolate the applications from the
   individual methods and make the policy decisions as to which storage
   method should be called to store an article.  One of the core concepts
   in the storage API is that articles are not manipulated using the
   message-ID or article number, but rather a token that uniquely
   identifies the article to the method that stored it.  This may seem to
   be redundant since the message-ID already is a unique identifier for
   the article; however, since the storage method generates the token, it
   can encode all the information it needs to locate the article in the

   OV is a common utility routines for accessing newsgroups and overview
   data independent of particular overview method.

   The OV function is to isolate the applications from the individual
   methods.  All articles passed through the storage API are assumed to be
   in wire format.  Wire format means "\r\n" at the end of lines, dot-
   stuffed lines (that is to say "." at the beginning of lines which
   already start with "."), and ".\r\n" at the end of article on NNTP
   stream are not stripped.  This has a performance win when transferring
   articles.  Note that for the tradspool method, wire format can be
   disabled.  This is just for compatibility which is needed by some old
   tools written for traditional spool.

   The IsToken function checks to see if the text is formatted as a text
   token string.  It returns true if formatted correctly or returns false
   if not.

   The TokenToText function converts a token into a text string for

   The TextToToken function converts a text string into a token.

   The SMsetup function configures some parameters for use by the storage
   manager.  type is one of following:

       Allow read/write open for storage files (default is false).

       Open all storage files at startup time and keep them (default is

   value is the pointer which tells each type's value.  It returns true if
   setup is successful, or false if not.

   The SMinit function calls the setup function for all of the configured
   methods based on SMsetup.  This function should be called prior to all
   other storage API functions which begin with "SM" except SMsetup.  It
   returns true if initialization is successful or returns false if not.
   SMinit returns true, unless all storage methods fail initialization.

   The SMstore function stores an article specified with article.  The
   headers and body of the article are supplied to SMstore using the iov
   and iovcnt members of ARTHANDLE.  (data and private are ignored by
   SMstore.)  If arrived is specified, SMstore uses its value as article's
   arrival time; otherwise SMstore uses the current time for it.  SMstore
   returns the token type or returns TOKEN_EMPTY if the article is not
   stored because some error occurs or simply does not match any
   uwildmat(3) expression in storage.conf.  SMstore fails if SM_RDWR has
   not been set to true with SMsetup.

   The SMretrieve function retrieves an article specified with token.
   amount is the one of following which specifies retrieving type:

       Retrieve the whole article.

       Retrieve the headers of the article.

       Retrieve the body of the article.

       Just check to see if the article exists.

   SMretrieve provides the article data via the data and len members of
   ARTHANDLE.  (iov is not set by SMretrieve.)  The data area indicated by
   ARTHANDLE should not be modified.

   The SMnext function is similar in function to SMretrieve except that it
   is intended for traversing the method's article store sequentially.  To
   start a query, SMnext should be called with a NULL pointer ARTHANDLE.
   Then SMnext returns ARTHANDLE which should be used for the next query.
   If a NULL pointer ARTHANDLE is returned, no articles are left to be
   queried.  If data of ARTHANDLE is NULL pointer or len of ARTHANDLE is
   0, it indicates the article may be corrupted and should be cancelled by
   SMcancel.  The data area indicated by ARTHANDLE should not be modified.

   The SMfreearticle function frees all allocated memory used by
   SMretrieve and SMnext.  If SMnext will be called with previously
   returned ARTHANDLE, SMfreearticle should not be called as SMnext frees
   allocated memory internally.

   The SMcancel function removes the article specified with token.  It
   returns true if cancellation is successful or returns false if not.
   SMcancel fails if SM_RDWR has not been set to true with SMsetup.

   The SMprobe function checks the token on PROBETYPE.  type is one of

       Check to see if the method of the token has self expire

       Get the newsgroup name and the article number of the token.

       Check to see whether checking the existence of an article is
       expensive or not.

   The SMprintfiles function shows file name or token usable by fastrm(8).

   The SMflushcacheddata function flushes cached data on each storage
   method.  type is one of following:

       Flush cached header.

       Flush the articles which should be cancelled.

       Flush all cached data.

   The SMexplaintoken function returns a human-readable text string with a
   clear, decoded form of the storage API token.

   The SMshutdown function calls the shutdown for each configured storage
   method and then frees any resources it has allocated for itself.

   SMerrno and SMerrorstr indicate the reason of the last error concerning
   storage manager.

   OVopen calls the setup function for configured method which is
   specified as ovmethod in inn.conf.  mode is constructed from following:

       Allow read open for the overview method.

       Allow write open for the overview method.

   This function should be called prior to all other OV functions which
   begin with "OV".

   The OVctl function probes or sets some parameters for the overview
   method.  type is one of following:

       Setup how group-based expiry is done.

       Do not add overview data if the data is under the lowest article.

       Probe which key is suitable for the overview method.

       Probe the overview space usage.

       Stat all the articles when OVexpiregroup is called.

       Setup if results of OVsearch are stored in a static buffer and must
       be copied before the next call to OVsearch.

       Setup whether the cache should be kept.

       Free the cache.

   The OVgroupstats function retrieves the specified newsgroup information
   from the overview method.

   The OVgroupadd function informs the overview method that the specified
   newsgroup is being added.

   The OVgroupdel function informs the overview method that the specified
   newsgroup is being removed.

   The OVadd function stores an overview data.

   The OVcancel function requests the overview method delete overview data
   specified with token.

   The OVopensearch function requests the overview method prepare overview
   data retrieval.  The request range is determined by low and high.  The
   setting of OVSTATICSEARCH determines how search result data must be
   handled.  (Note that with some storage methods, each call to
   OVopensearch may cause internal storage to be remapped.  Therefore,
   multiple simultaneous searches may require data to be copied in between
   OVsearch calls even if OVSTATICSEARCH is false.)

   The OVsearch function retrieves information, article number, overview
   data, or arrival time.  It should be called with NULL handle when it is
   the first time; subsequent OVsearch calls should use the handle
   returned by the previous call to OVsearch.  OVsearch returns true,
   unless it reaches high, which is specified by OVopensearch.  Retrieved
   overview data are sorted by article number, and len is 0 if there is no
   overview data for the article.  Note that the retrieved data is not
   necessarily null-terminated; you should only rely on len octets of
   overview data being present.

   The OVclosesearch function frees all resources which have been
   allocated by OVopensearch.

   The OVgetartinfo function retrieves the overview data and the token
   specified with artnum.

   The OVexpiregroup function expires the overview data for the newsgroup.
   It checks the existence of the article and purges the overview data if
   the article no longer exists.  If groupbaseexpiry in inn.conf is true,
   OVexpiregroup also expires articles.

   The OVclose function frees all resources which are used by the overview


   Written by Katsuhiro Kondou <> for InterNetNews.
   Converted to POD by Julien Elie.

   $Id: libstorage.pod 9073 2010-05-31 19:00:23Z iulius $


   expire(8), fastrm(8), inn.conf(5), storage.conf(5).

More Linux Commands

systemd-random-seed(8) Load and save the system random seed
systemd-random-seed.service is a service that restores the random seed of the system at early-boot and saves it at shutdown. See random(4) for details. Saving/r

BitmapUnit(3) - image format functions and macros (ManPage)
The XListPixmapFormats function returns an array of XPixmapFormatValues structures that describe the types of Z format images supported by the specified display

gnutls_x509_crt_get_activation_time(3) - API function.......
This function will return the time this Certificate was or will be activated. RETURNS activation time, or (time_t)-1 on error. REPORTING BUGS Report bugs to &lt;bu

glMultiTexCoord2fARB(3gl) - set the current texture coordina
glMultiTexCoordARB specifies texture coordinates in one, two, three, or four dimensions. glMultiTexCoord1ARB sets the current texture coordinates to (s, 0, 0, 1

deleteln(3ncurses) - delete and insert lines in a curses win
deleteln.3ncurses - The deleteln and wdeleteln routines delete the line under the cursor in the window; all lines below the current line are moved up one line.

netstat(8) - Print network connections, routing tables, inte
Netstat prints information about the Linux networking subsystem. The type of information printed is controlled by the first argument, as follows: (none) By defa

idn.conf(5) - configuration files for idnkit library........
idn.conf and .idnrc are configuration files for idnkit library which is a toolkit for handling internationalized domain names. idnkit library tries to load the

ldap_modrdn(3) - Perform an LDAP modify RDN operation.......
The ldap_modrdn() and ldap_modrdn_s() routines perform an LDAP modify RDN operation. They both take dn, the DN of the entry whose RDN is to be changed, and newr

getprotobyname_r(3) - get protocol entry (reentrant)........
The getprotoent_r(), getprotobyname_r(), and getprotobynumber_r() functions are the reentrant equivalents of, respectively, getprotoent(3), getprotobyname(3), a

Tcl_DeleteEventSource(3) - the event queue and notifier inte
The interfaces described here are used to customize the Tcl event loop. The two most common customizations are to add new sources of events and to merge Tcls ev

gnutls_pkcs11_set_pin_function(3) - API function (Man Page)
This function will set a callback function to be used when a PIN is required for PKCS 11 operations. See gnutls_pkcs11_pin_callback_t() on how the callback shou

res_query(3) - resolver routines (Library - Linux man page)
These functions make queries to and interpret the responses from Internet domain name servers. The res_init() function reads the configuration files (see resolv

We can't live, work or learn in freedom unless the software we use is free.