|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T n
Length: 2223 (0x8af)
Types: TextFile
Names: »nntppost.c«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
└─⟦6429e39db⟧ »EurOpenD3/news/tmnn.7.8.tar.Z«
└─⟦b5a65d78b⟧
└─⟦this⟧ »src/D.network/nntppost.c«
/****************************************************************************
NAME
nntppost.c -- functions for talking to the nntp server
SYNOPSIS
#include "news.h"
int net_post(file) -- call rnews to post an article
char *file;
char *getgroups() -- get a group descriptions list
char *getdistribs() -- get a current distributions list
DESCRIPTION
The primitives to post news, implemented to go through the NNTP network
server.
NOTE
This code assumes you are running NNTP 1.5 patchlevel 4 or a more recent
version, so that `LIST newsgroups' and `LIST distributions' are supported.
BUGS
Probably legion -- I don't have an nntp to test this on.
AUTHOR
Eric S. Raymond
Adapted from Phil Lapsley's NNTP inews.c and UNTESTED. No warranties
express or implied, your mileage may vary, and like that.
This software is Copyright (C) 1989 by Eric S. Raymond for the sole purpose
of protecting free redistribution; see the LICENSE file for details.
**************************************************************************/
/*LINTLIBRARY*/
#include "news.h"
/*ARGSUSED1*/
int net_post(file, options)
/* post the given article via an NNTP network connection */
char *file;
char *options;
{
char *stid, *endid;
/*
* We're talking to NNTP via a server
*/
if (nntpinit(newsattr("nntphost", NNTPSERVER)) < 0)
{
logerr0("NNTP connect failed");
return(FAIL);
}
/* try the post */
errno = SUCCEED;
if (nntpspew("POST", file) == FAIL)
{
switch(errno)
{
ERR_NOPOST:
logerr0("Sorry, you can't post from this machine.");
break;
ERR_POSTFAIL:
logerr0("Article not accepted by server; not posted.");
break;
default:
logerr1("Remote error: %s", bfr);
break;
}
}
/*
* Nntpclose sends the server a
* "quit" command for us, which is why we don't send it.
*/
nntpclose();
return(errno);
}
char *getgroups()
{
if (nntpsnarf("LIST newsgroups", bfr) == SUCCEED)
return(savestr(bfr));
else
return((char *)NULL);
}
char *getdistribs()
{
if (nntpsnarf("LIST distributions", bfr) == SUCCEED)
return(savestr(bfr));
else
return((char *)NULL);
}
/* nntppost.c ends here */