ftp.nice.ch/pub/next/text/tex/apps/TeXview-kp0.25.s.tar.gz#/TeXview-grey/dviinput.c

This is dviinput.c in view mode; [Download] [Up]

/*
 *   dviinput.c of dvisw software package.  This code is copyright (C) 1986
 *   by Radical Eye Software.
 *
 *   Input files for the dvi file.  These routines could probably be
 *   sped up significantly; they are very machine dependent, though, so
 *   I will leave such tuning to the installer.   They simply get and
 *   return bytes of the dvifile in batches of one, two, three, and four,
 *   updateing the current position as necessary.
 */
#include "structures.h"
void error() ;
extern integer curpos ;
extern FILE *dvifile ;
extern quarterword *virpos, *virlim ;

void
abortpage()
{
   printf("Tried to get byte %ld\n", curpos-1) ;
   error("! unexpected eof on DVI file") ;
}

shalfword
dvibyte()
{
  register shalfword i ;

  if (virpos) {
     if (virpos >= virlim)
        return 140 ;
     else
        return *virpos++ ;
  } else {
     curpos++ ;
     i = getc(dvifile) ;
     if (i==EOF)
       abortpage() ;
     return(i) ;
  }
}

halfword
twobytes()
{
  register halfword i ;
  i = dvibyte() ;
  return(i*256+dvibyte()) ; }

integer
threebytes()
{
  register integer i ;
  i = twobytes() ;
  return(i*256+dvibyte()) ; }

shalfword
signedbyte()
{
  register shalfword i ;
  if (virpos) {
     if (virpos >= virlim) {
        i = 0 ;
        error("! unexpected end of virtual packet") ;
     } else
        i = *virpos++ ;
  } else {
     curpos++ ;
     if ((i=getc(dvifile))==EOF)
       abortpage() ;
  }
  if (i<128) return(i) ;
  else return(i-256) ;
}

shalfword
signedpair()
{
  register shalfword i ;
  i = signedbyte() ;
  return(i*256+dvibyte()) ;
}

integer
signedtrio()
{
  register integer i ;
  i = signedpair() ;
  return(i*256+dvibyte()) ;
}

integer
signedquad()
{
  register integer i ;
  i = signedpair() ;
  return(i*65536+twobytes()) ;
}

void
skipover(i)
	int i ;
{
  while (i-->0) (void)dvibyte() ;
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.