|
|
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 b
Length: 4220 (0x107c)
Types: TextFile
Names: »bncvt-2-unbatch«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦this⟧ »EUUGD11/euug-87hel/sec1/news/misc/bncvt-2-unbatch«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
└─⟦95173b3df⟧ »EurOpenD3/news/bnews.2.11/misc.tar.Z«
└─⟦ff4664b96⟧
└─⟦this⟧ »misc/bncvt-2-unbatch«
From csg@pyramid.UUCP (Carl S. Gutekunst) Wed Oct 30 22:12:27 1985
Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site seismo.UUCP
Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site pyramid.UUCP
Path: seismo!lll-crg!dual!pyramid!csg
From: csg@pyramid.UUCP (Carl S. Gutekunst)
Newsgroups: net.sources
Subject: bncvt -- filter bnproc batches to unbatch
Message-ID: <54@pyramid.UUCP>
Date: 31 Oct 85 03:12:27 GMT
Date-Received: 31 Oct 85 12:52:30 GMT
Reply-To: csg@pyramid.UUCP (Carl S. Gutekunst)
Followup-To: net.sources.bugs
Organization: Pyramid Technology, Mountain View, CA
Lines: 104
Keywords: news bnproc unbatch bncvt
/*===========================================================================**
** BBBBBBB NN NN CCCCC VV VV TTTTTTTT **
** BB BB NNN NN CC CC VV VV TT **
** BB BB NNNN NN CC VV VV TT **
** BBBBBBB NN NN NN CC VV VV TT **
** BB BB NN NNNN CC VV VV TT **
** BB BB NN NNN CC CC VVVV TT **
** BBBBBBB NN NN CCCCC VV TT **
**===========================================================================**
** Copyright (C) 1985 by PYRAMID TECHNOLOGY CORPORATION, Mountain View, CA **
**===========================================================================**
** Permission is granted to freely use and distribute this software, as long **
** as no attempt is made to profit from it, and this notice is included. **
**===========================================================================**
**
** ** bncvt.c -- utility to filter bnproc news batches to unbatch.
**
** Written in a fit of desperation by Carl S. Gutekunst
**
** ** Decsription:
**
** This filter accepts uncompressed news batches in "bnproc" format and
** writes them out in "unbatch" format. Using 2.10.3 news, its output can
** be piped directly into rnews.
**
** The filter also adjusts for the bnproc "article eater" bug, which threw
** off the article byte count and caused rnews to discard entire articles.
**
** ** Execution (for 2.10.3 netnews):
**
** uncompress | bncvt | rnews
**
** ** Generation:
**
** cc bncvt.c -o bncvt -s -O
**
** ** $Log: bncvt.c,v $
** Revision 1.1 85/10/30 19:07:13 csg
** Initial version, written in a fit of desperation by Carl S. Gutekunst.
**
**===========================================================================*/
#include <stdio.h>
#define LINESIZE 128 /* Size of the input line buffer */
static char RCSid[] = "$Header: bncvt.c,v 1.1 85/10/30 19:07:13 csg Rel $";
main ()
{
char linebuf[LINESIZE], *lp; /* Single line buffer, and pointer */
int expected, nbytes; /* Bytes expected and read so far */
nbytes = expected = 0;
while (fgets (linebuf, LINESIZE, stdin) != NULL)
{
/*
* Check for an article eater. This is a DEL character, either 0x7F or
* 0xFF, in the first column preceeding a new article byte count. It
* usually throws off the byte count, so we have to add some padding
* to keep rnews from losing sync (and discarding the next article).
*/
if ((linebuf[0] & 0x7F) == 0x7F)
{
if (expected > 0)
while (nbytes++ < expected)
putc ('\0', stdout);
}
/*
* If we aren't expecting text, then we're expecting an article byte
* count. This is a left-justified integer, immediately followed by a
* newline. We ignore leading article-eater DEL characters.
*/
if (nbytes >= expected)
{
nbytes = expected = 0;
lp = linebuf;
while ((*lp & 0x7F) == 0x7F)
++lp;
while (*lp >= '0' && *lp <= '9')
expected = expected * 10 + (*lp++ - '0');
if (*lp == '\n' && expected > 0)
printf ("#! rnews %d\n", expected);
else
{ fprintf (stderr, "Sync->%s", linebuf);
expected = 0;
}
}
/*
* Another normal line of text: write it out.
*/
else
{
fputs (linebuf, stdout);
nbytes += strlen (linebuf);
}
}
}