This is initialize.c in view mode; [Download] [Up]
/*
* initialize.c of dviamiga software package. Initializes all the data
* structures either for an entire run or for one file.
*/
#include "structures.h"
#include "paths.h"
#include <kpathsea/tex-file.h>
#include <kpathsea/proginit.h>
#include <kpathsea/lib.h>
#include "strings.h"
/*
* These are the external variables we use.
*/
extern TeXfontdesctype *TeXfonts[], *TeXfontlist ;
extern fontdesctype *fontlist ;
extern float conv ;
extern real alpha ;
extern integer iconv ;
extern float pxlconv ;
extern float screendpi ;
extern integer dvimag, num, den ;
extern struct Gadget *mygadgets ;
extern integer curpos, thispage ;
extern FILE *dvifile ;
extern Boolean orientationset ;
extern Boolean landscape ;
extern Boolean usersetsizes ;
extern shalfword vvmax, vvmin, hhmax, hhmin ;
extern Boolean interlaceon ;
extern shalfword vscreenheight, vscreen ;
extern shalfword vwindow, vwindowheight ;
extern Boolean pageinterrupted ;
extern Boolean zoomed ;
extern int rowsize, colsize ;
extern int sfrgnd, sbckgnd ;
extern long frgnd, bckgnd ;
int wxsize, wysize, wxpos, wypos ;
extern void TPSdvimag() ;
extern void bringupwindow() ;
Boolean firstpage ;
extern int tracking ;
extern int debugon ;
extern real hsize, vsize, hmarg, vmarg, defhsize, defvsize, defhmarg, defvmarg ;
/*
* The external routines we use:
*/
extern halfword dvibyte() ;
extern integer signedquad() ;
extern void abortpage() ;
extern void storeimagedata() ;
extern void *tempbuf() ;
extern void cleartheair() ;
extern void configure(), setenvvars() ;
extern char *getenv() ;
extern void dviseek() ;
extern char *strcpy() ;
extern void resetsize() ;
extern void newdpi() ;
extern char *newstring() ;
extern void freepages() ;
extern void resetsizes() ;
extern void free() ;
extern void getdefaults() ;
extern void relativepage(), skippage() ;
extern void reportnewdpi() ;
extern void initcolor() ;
/*
* Get environment variables! These override entries in ./config.h.
* We substitute everything of the form ::, ^: or :$ with default,
* so a user can easily build on to the existing paths.
*/
static char *getenvup(who, what)
char *who, *what ;
{
char *p, *getenv() ;
char *tb = tempbuf(9512L) ;
if (p=getenv(who)) {
register char *pp, *qq ;
int lastsep = 1 ;
for (pp=tb, qq=p; *qq;) {
if (*qq == ':') {
if (lastsep) {
strcpy(pp, what) ;
pp = pp + strlen(pp) ;
}
lastsep = 1 ;
} else
lastsep = 0 ;
*pp++ = *qq++ ;
}
if (lastsep) {
strcpy(pp, what) ;
pp = pp + strlen(pp) ;
}
*pp = 0 ;
return newstring(tb) ;
} else
return what ;
}
/*
* Initialize sets everything up. DO NOT call cleanup unless this
* routine has been called first!
*/
void initialize() {
char *getenv() ;
void *mymalloc() ;
(void)tempbuf(512L) ;
setenvvars() ;
configure() ;
getdefaults("config.ps") ;
getdefaults(0L) ;
reportnewdpi() ;
}
/*
* flight: grab environment variable (from csh!) into our env.
*/
/*
void
xupdateenv(const char *varname) {
string s=mgetenv(varname);
if(s) xputenv(varname,s);
}
*/
/*
* Set all of the environment variables.
*/
void
setenvvars() {
/*
static string test;
test = getenv("SELFAUTODIR");
test = getenv("SELFAUTOPARENT");
test = getenv("TETEXDIR");
xupdateenv("PATH") ;
xupdateenv("TETEXDIR") ;
xupdateenv("TEXPKS") ;
xupdateenv("TEXINPUTS") ;
xupdateenv("VFFONTS") ;
xupdateenv("TEXFONTS") ;
xupdateenv("TEXCONFIG") ;
xupdateenv("DVIPSHEADERS") ;
*/
}
/*
* fontinit disassociates TeXfonts from the current list of fonts,
* necessary when a new magnification or dvi job is started.
*/
extern TeXfontdesctype *TeXfontlist ;
void fontinit() {
register int i ;
register TeXfontdesctype *tft ;
for (tft = TeXfontlist; tft; tft = tft->next) {
tft->loaded = 0 ;
tft->scaledsize = tft->origssize ;
}
for (i=0; i<256; i++)
if (tft = TeXfonts[i])
tft->loaded = 0 ;
}
extern long fakeeof ;
void dviinit() {
register int i ;
curpos = 0 ;
dviseek(0) ;
orientationset = 0 ;
if (landscape || !usersetsizes)
resetsizes() ;
landscape = 0 ;
fontinit() ;
for (i=0; i<256; i++)
if (TeXfonts[i]) {
free(TeXfonts[i]) ;
TeXfonts[i] = NULL ;
}
if (dvibyte()!=247)
abortpage() ;
if (dvibyte()!=2)
abortpage() ;
num = signedquad() ;
den = signedquad() ;
alpha = (((real)den / 7227.0) / 0x100000) * (25400000.0 / (real) num) ;
dvimag = signedquad() ;
TPSdvimag((real)dvimag / 1000.0) ;
for (i=dvibyte(); i>0; i--)
dvibyte() ;
initcolor() ;
newdpi() ;
freepages() ;
relativepage(1) ;
firstpage = 1 ;
skippage() ;
cleartheair() ;
firstpage = 0 ;
pageinterrupted = 0 ;
fakeeof = 2000000000 ;
bringupwindow() ;
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.