|
|
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 m
Length: 1371 (0x55b)
Types: TextFile
Names: »mftext.c«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
└─⟦c319c2751⟧ »unix3.0/TeX3.0.tar.Z«
└─⟦036c765ac⟧
└─⟦this⟧ »TeX3.0/mfware/mftext.c«
/* Reading input lines for MFT. Taken from weavext.c.
*/
#include <stdio.h>
#include "site.h"
/*
* lineread reads from the Pascal text file with iorec pointer filep
* into buffer[0], buffer[1],..., buffer[limit-1] (and
* setting "limit").
* Characters are read until a newline is found (which isn't put in the
* buffer) or until the next character would go into buffer[BUF_SIZE].
* And trailing blanks are to be ignored, so limit is really set to
* one past the last non-blank.
* The characters need to be translated, so really xord[c] is put into
* the buffer when c is read.
* If end-of-file is encountered, the funit field of *filep is set
* appropriately.
*/
#define BUF_SIZE 100 /* should agree with mft.web */
extern schar buffer[]; /* 0..BUF_SIZE. Input goes here */
extern schar xord[]; /* character translation arrays */
extern integer limit; /* index into buffer. */
void lineread(iop)
FILE *iop;
{
register c;
register schar *cs; /* pointer into buffer where next char goes */
register schar *cnb; /* last non-blank character input */
register l; /* how many chars allowed before buffer overflow */
cnb = cs = &(buffer[0]);
l = BUF_SIZE;
/* overflow when next char would go into buffer[BUF_SIZE] */
while (--l>=0 && (c = getc(iop)) != EOF && c!='\n')
if ((*cs++ = xord[c])!=' ') cnb = cs;
limit = cnb - &(buffer[0]);
}