/* This ARexx program was automatically created by NUWEB from the master source file `callmf.w'. Do not edit by hand! */ FONTSDIR = MyGetEnv("SELFAUTOPARENT") FONTSDIR = FONTSDIR"/share/texmf/fonts" SOURCEDIR = FONTSDIR"/source" GFDIR = FONTSDIR"/gf" PKDIR = FONTSDIR"/pk" TFMDIR = FONTSDIR"/tfm" LOGDIR = FONTSDIR"/log" MASTERLOG = LOGDIR"/MakeTeXFont.log" VIRMF = GetClip("VIRMF") If "" = VIRMF Then VIRMF = "MF" GFTOPK = GetClip("GFTOPK") If "" = GFTOPK Then GFTOPK = "GFtoPK" BASE = MyGetEnv("MFBASE") If "" = BASE Then BASE = "plain" KEEPGFFILES = 0 Signal On BREAK_C Signal On BREAK_D Address COMMAND Call MySetEnv("LAST_FONT_CREATED","") DUMMY = Time('Reset') Parse Arg FONTNAME DPI HBASE VBASE DRIVER PKFILEARG PKDIRARG . LOGSTRING = "Making font" FONTNAME "at" DPI "dpi and base" LOGSTRING = LOGSTRING "("HBASE","VBASE")" Say LOGSTRING CURGFFILENAME = FONTNAME"."DPI"gf" CURPKFILENAME = FONTNAME".pk" CURLOGFILENAME = FONTNAME".log" CURTFMFILENAME = FONTNAME".tfm" LOGFILENAME = FONTNAME".log" Call SafeMakeDir(LOGDIR) Call SafeMakeFile(MASTERLOG) Call SafeMakeDir(PKDIR) Call SafeMakeDir(TFMDIR) If 0 ~= KEEPGFFILES Then Call SafeMakeDir(GFDIR) MODE = Left(PKDIRARG,LastPos('/',PKDIRARG)-1) MODE = SubStr(MODE,LastPos('/',MODE)+1) MFOPTIONS = "\mode="MODE";" MFOPTIONS = MFOPTIONS "mag="DPI"/"HBASE";" MFOPTIONS = MFOPTIONS "scrollmode;" MFOPTIONS = MFOPTIONS "input "FONTNAME Say "Calling MetaFont with base: &"BASE "and startup commands:" Say "`"MFOPTIONS"'" If ~Exists(CURGFFILENAME) Then VIRMF '&'BASE '"'MFOPTIONS'"' Else RC = 0 /* Simulate a perfect result */ ERRORCODE = RC If 5 >= ERRORCODE Then Do If 0 < ERRORCODE Then Call Error /* and fall through! */ Else Say FONTNAME "translated without errors." End; Else Do Call Error Exit 10 End If "nullmode" ~= MODE Then Do GFTOPK CURGFFILENAME CURPKFILENAME If Exists(CURPKFILENAME) Then Do If 0 = KEEPGFFILES Then Delete CURGFFILENAME FileNote CURPKFILENAME '"mode='MODE', mag='DPI'/'HBASE'"' End; Else Do Call Log("Where is my "CURPKFILENAME"?") Exit 5 End End If ~Open(LOGFILE,CURLOGFILENAME,'Read') Then Do Call Log("Can't open "CURLOGFILENAME"!") Exit 10 End LINE = ReadLn(LOGFILE) /* Dummy read the first intro line */ LINE = ReadLn(LOGFILE) /* Dummy read the second calling line */ LINE = ReadLn(LOGFILE) /* Read the third line for real */ SOURCEFILE = Word(LINE,1) /* The `driver' file is what we want */ If ~Close(LOGFILE) Then Do Call Log("Can't close "CURLOGFILENAME"!") Exit 10 End SUPPLIER = SubStr(SOURCEFILE,Length(SOURCEDIR)+2) /* `+1' for the open brace and `+1' for the leftmost slash */ SUPPLIER = Left(SUPPLIER,LastPos('/',SUPPLIER)-1) TYPEFACE = SubStr(SUPPLIER,LastPos('/',SUPPLIER)) SUPPLIER = Left(SUPPLIER,LastPos('/',SUPPLIER)-1) LOGDIR = LOGDIR"/"MODE Call SafeMakeDir(LOGDIR) LOGDIR = LOGDIR || SUPPLIER Call SafeMakeDir(LOGDIR) LOGDIR = LOGDIR || TYPEFACE Call SafeMakeDir(LOGDIR) LOGDIR = LOGDIR"/dpi"DPI Call SafeMakeDir(LOGDIR) LOGFILENAME = LOGDIR"/"LOGFILENAME Copy CURLOGFILENAME LOGFILENAME clone Delete CURLOGFILENAME TFMDIR = TFMDIR || SUPPLIER Call SafeMakeDir(TFMDIR) TFMDIR = TFMDIR || TYPEFACE Call SafeMakeDir(TFMDIR) TFMFILENAME = TFMDIR"/"CURTFMFILENAME If ~Exists(TFMFILENAME) Then Do Copy CURTFMFILENAME TFMFILENAME clone Protect TFMFILENAME r End Delete CURTFMFILENAME If "nullmode" ~= MODE Then Do PKDIR = PKDIR"/"MODE Call SafeMakeDir(PKDIR) PKDIR = PKDIR || SUPPLIER Call SafeMakeDir(PKDIR) PKDIR = PKDIR || TYPEFACE Call SafeMakeDir(PKDIR) PKDIR = PKDIR"/dpi"DPI Call SafeMakedir(PKDIR) PKFILENAME = PKDIR"/"CURPKFILENAME If Exists(PKFILENAME) Then Do LOGSTRING = PKFILENAME LOGSTRING = LOGSTRING "already exists;" '0A'X LOGSTRING = LOGSTRING "check your driver's configuration!" Say LOGSTRING Call Log(LOGSTRING) Delete CURPKFILENAME Exit 5 End Copy CURPKFILENAME PKFILENAME clone Delete CURPKFILENAME Protect PKFILENAME r If 0 ~= KEEPGFFILES Then Do GFDIR = GFDIR"/"MODE Call SafeMakeDir(GFDIR) GFDIR = GFDIR || SUPPLIER Call SafeMakeDir(GFDIR) GFDIR = GFDIR || TYPEFACE Call SafeMakeDir(GFDIR) GFDIR = GFDIR"/dpi"DPI Call SafeMakedir(GFDIR) GFFILENAME = GFDIR"/"CURGFFILENAME If Exists(GFFILENAME) Then Do LOGSTRING = GFFILENAME LOGSTRING = LOGSTRING "already exists;" '0A'X LOGSTRING = LOGSTRING "check your driver's configuration!" Say LOGSTRING Call Log(LOGSTRING) Delete CURGFFILENAME Exit 5 End Copy CURGFFILENAME GFFILENAME clone Delete CURGFFILENAME Protect GFFILENAME r End End ELAPSED = Time('Elapsed') LOGSTRING = "created in "ELAPSED%3600 LOGSTRING = LOGSTRING":"Right(ELAPSED%60//60,2,'0') LOGSTRING = LOGSTRING":"Right(ELAPSED%1//60,2,'0') Call Log(LOGSTRING) Call MySetEnv("LAST_FONT_CREATED",PKFILENAME) Exit 0 /* This is the end */ BREAK_C: BREAK_D: Call Log("Execution aborted!") If Exists(CURGFFILENAME) Then Delete CURGFFILENAME If Exists(CURLOGFILENAME) Then Delete CURLOGFILENAME Exit 10 Log: Procedure Expose MASTERLOG FONTNAME MODE HBASE VBASE DPI Parse Arg MSG MESSAGE = Date() Time() || ":" MESSAGE = MESSAGE FONTNAME "for" MODE MESSAGE = MESSAGE "("HBASE","VBASE") with" DPI "dpi" MESSAGE = MESSAGE "(mag="DPI"/"HBASE")" '0A'X MESSAGE = MESSAGE || MSG Say MESSAGE If ~Open(LOGFILE,MASTERLOG,'Append') Then Do Say "Can't open logfile!" Return End DUMMY = WriteLn(LOGFILE,MESSAGE) If ~Close(LOGFILE) Then Say "Can't close logfile!" Return Error: Say "Translation problem, MetaFont returned "ERRORCODE"." Call Log("Translation problem, MetaFont returned "ERRORCODE".") Return MyGetEnv: Procedure Parse Arg NAME If Open(TEMPFILE,"ENV:"NAME,'Read') Then Do GIVES = Readln(TEMPFILE) Close(TEMPFILE) End; Else GIVES = "" Return GIVES MySetEnv: Procedure Parse Arg NAME,VALUE Address COMMAND "SetEnv" NAME '"'VALUE'"' Return SafeMakeDir: Procedure Parse Arg DIRNAME If ~Exists(DIRNAME) Then Do MakeDir DIRNAME If ~Exists(DIRNAME) Then Do Call Log("Could not create directory" DIRNAME) Exit 10 End Say "Directory ("DIRNAME") did not exist. It was created." End Return SafeMakeFile: Procedure Parse Arg FILENAME If ~Exists(FILENAME) Then Do "echo >" FILENAME If ~Exists(FILENAME) Then Do Call Log("Could not create file="FILENAME) Exit 10 End Say "File ("FILENAME") did not exist. It was created." End Return