|
|
1.1 root 1: From [email protected] (Carl S. Gutekunst) Wed Oct 30 22:12:27 1985 2: Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site seismo.UUCP 3: Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site pyramid.UUCP 4: Path: seismo!lll-crg!dual!pyramid!csg 5: From: [email protected] (Carl S. Gutekunst) 6: Newsgroups: net.sources 7: Subject: bncvt -- filter bnproc batches to unbatch 8: Message-ID: <[email protected]> 9: Date: 31 Oct 85 03:12:27 GMT 10: Date-Received: 31 Oct 85 12:52:30 GMT 11: Reply-To: [email protected] (Carl S. Gutekunst) 12: Followup-To: net.sources.bugs 13: Organization: Pyramid Technology, Mountain View, CA 14: Lines: 104 15: Keywords: news bnproc unbatch bncvt 16: 17: /*===========================================================================** 18: ** BBBBBBB NN NN CCCCC VV VV TTTTTTTT ** 19: ** BB BB NNN NN CC CC VV VV TT ** 20: ** BB BB NNNN NN CC VV VV TT ** 21: ** BBBBBBB NN NN NN CC VV VV TT ** 22: ** BB BB NN NNNN CC VV VV TT ** 23: ** BB BB NN NNN CC CC VVVV TT ** 24: ** BBBBBBB NN NN CCCCC VV TT ** 25: **===========================================================================** 26: ** Copyright (C) 1985 by PYRAMID TECHNOLOGY CORPORATION, Mountain View, CA ** 27: **===========================================================================** 28: ** Permission is granted to freely use and distribute this software, as long ** 29: ** as no attempt is made to profit from it, and this notice is included. ** 30: **===========================================================================** 31: ** 32: ** ** bncvt.c -- utility to filter bnproc news batches to unbatch. 33: ** 34: ** Written in a fit of desperation by Carl S. Gutekunst 35: ** 36: ** ** Decsription: 37: ** 38: ** This filter accepts uncompressed news batches in "bnproc" format and 39: ** writes them out in "unbatch" format. Using 2.10.3 news, its output can 40: ** be piped directly into rnews. 41: ** 42: ** The filter also adjusts for the bnproc "article eater" bug, which threw 43: ** off the article byte count and caused rnews to discard entire articles. 44: ** 45: ** ** Execution (for 2.10.3 netnews): 46: ** 47: ** uncompress | bncvt | rnews 48: ** 49: ** ** Generation: 50: ** 51: ** cc bncvt.c -o bncvt -s -O 52: ** 53: ** ** $Log: bncvt.c,v $ 54: ** Revision 1.1 85/10/30 19:07:13 csg 55: ** Initial version, written in a fit of desperation by Carl S. Gutekunst. 56: ** 57: **===========================================================================*/ 58: 59: #include <stdio.h> 60: 61: #define LINESIZE 128 /* Size of the input line buffer */ 62: 63: static char RCSid[] = "$Header: bncvt.c,v 1.1 85/10/30 19:07:13 csg Rel $"; 64: 65: main () 66: { 67: char linebuf[LINESIZE], *lp; /* Single line buffer, and pointer */ 68: int expected, nbytes; /* Bytes expected and read so far */ 69: 70: nbytes = expected = 0; 71: while (fgets (linebuf, LINESIZE, stdin) != NULL) 72: { 73: /* 74: * Check for an article eater. This is a DEL character, either 0x7F or 75: * 0xFF, in the first column preceeding a new article byte count. It 76: * usually throws off the byte count, so we have to add some padding 77: * to keep rnews from losing sync (and discarding the next article). 78: */ 79: 80: if ((linebuf[0] & 0x7F) == 0x7F) 81: { 82: if (expected > 0) 83: while (nbytes++ < expected) 84: putc ('\0', stdout); 85: } 86: 87: /* 88: * If we aren't expecting text, then we're expecting an article byte 89: * count. This is a left-justified integer, immediately followed by a 90: * newline. We ignore leading article-eater DEL characters. 91: */ 92: 93: if (nbytes >= expected) 94: { 95: nbytes = expected = 0; 96: lp = linebuf; 97: while ((*lp & 0x7F) == 0x7F) 98: ++lp; 99: while (*lp >= '0' && *lp <= '9') 100: expected = expected * 10 + (*lp++ - '0'); 101: 102: if (*lp == '\n' && expected > 0) 103: printf ("#! rnews %d\n", expected); 104: else 105: { fprintf (stderr, "Sync->%s", linebuf); 106: expected = 0; 107: } 108: } 109: 110: /* 111: * Another normal line of text: write it out. 112: */ 113: 114: else 115: { 116: fputs (linebuf, stdout); 117: nbytes += strlen (linebuf); 118: } 119: } 120: } 121: 122:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.