home *** CD-ROM | disk | FTP | other *** search
/ Dream 45 / Amiga_Dream_45.iso / Amiga / Magazine / Dossier-LaTeX / AmiWeb2C.lha / web2c61 / rexx / MakeTeXFont.rexx < prev    next >
OS/2 REXX Batch file  |  1995-04-09  |  6KB  |  282 lines

  1. /* This ARexx program was automatically created by NUWEB.
  2.    Do not edit by hand! */
  3. FONTSDIR = "TeXMF:fonts"
  4.  
  5. SOURCEDIR = FONTSDIR || "/source"
  6. GFDIR     = FONTSDIR || "/gf"
  7. PKDIR     = FONTSDIR || "/pk"
  8. TFMDIR    = FONTSDIR || "/tfm"
  9. LOGDIR    = FONTSDIR || "/log"
  10.  
  11. MASTERLOG = LOGDIR || "/MakeTeXFont.log" /* Main logfile */
  12. REXXDIR = "TeXMF:web2c61/rexx"
  13.  
  14. VIRMF  = "VirMF"
  15. GFTOPK = "GFtoPK"
  16.  
  17. BASE = "plain"
  18.  
  19. KEEPGFFILES = 0
  20.  
  21.  
  22. Signal On BREAK_C
  23. Signal On BREAK_D
  24. Address COMMAND
  25.  
  26. DUMMY = Time("Reset")
  27. Parse Arg FONTNAME DPI HBASE VBASE DRIVER PKFILEARG PKDIRARG .
  28.  
  29. LOGSTRING = "Making font" FONTNAME "at" DPI "dpi and base"
  30. LOGSTRING = LOGSTRING || " ("HBASE","VBASE")"
  31. Say LOGSTRING
  32.  
  33. CURGFFILENAME  = FONTNAME || "." || DPI || "gf"
  34. CURPKFILENAME  = FONTNAME || "." || DPI || "pk"
  35. CURLOGFILENAME = FONTNAME || ".log"
  36. CURTFMFILENAME = FONTNAME || ".tfm"
  37.  
  38. LOGFILENAME = FONTNAME || "." || DPI || "log"
  39. Call SafeMakeDir(LOGDIR)
  40. Call SafeMakeFile(MASTERLOG)
  41. Call SafeMakeDir(PKDIR)
  42. Call SafeMakeDir(TFMDIR)
  43.  
  44. If 0 ~= KEEPGFFILES Then
  45.   Call SafeMakeDir(GFDIR)
  46.  
  47. MODE = Left(PKDIRARG,LastPos("/",PKDIRARG)-1)
  48. MODE = SubStr(MODE,LastPos("/",MODE)+1)
  49.  
  50. MAG = DPI / HBASE
  51.  
  52. MFOPTIONS = "\mode="MODE"; mag="MAG"; scrollmode; input" FONTNAME
  53.  
  54. Say "Calling MetaFont with base: &"BASE "and startup commands:"
  55. Say "`"MFOPTIONS"'"
  56.  
  57. If ~Exists(CURGFFILENAME) Then
  58.   VIRMF '&'BASE '"'MFOPTIONS'"'
  59. Else RC = 0 /* Simulate a perfect result */
  60.  
  61. ERRORCODE = RC
  62.  
  63. If 5 >= ERRORCODE Then Do
  64.   If 0 < ERRORCODE Then
  65.     Call Error
  66.   Else
  67.     Say FONTNAME "translated without errors."
  68. End; Else Do
  69.   Call Error
  70.   Exit 0
  71. End
  72.  
  73.  
  74. GFTOPK CURGFFILENAME
  75. If Exists(CURPKFILENAME) Then Do
  76.   If 0 = KEEPGFFILES Then
  77.     Delete CURGFFILENAME
  78.   FileNote CURPKFILENAME '"mode='MODE', mag='MAG'"'
  79. End; Else Do
  80.   Call Log("Where is my "CURPKFILENAME"?")
  81.   Exit 5
  82. End
  83.  
  84.  
  85. If ~Open('LOGFILE',CURLOGFILENAME,'READ') Then Do
  86.   Call Log("Can't open "CURLOGFILENAME"!")
  87.   Exit 10
  88. End
  89.  
  90. LINE = ReadLn('LOGFILE') /* Dummy read the first intro line */
  91. LINE = ReadLn('LOGFILE') /* Dummy read the second calling line */
  92. LINE = ReadLn('LOGFILE') /* Read the third line for real */
  93.  
  94. SOURCEFILE = Word(LINE,1) /* The `driver' file is what we want */
  95.  
  96. If ~Close('LOGFILE') Then Do
  97.   Call Log("Can't close "CURLOGFILENAME"!")
  98.   Exit 10
  99. End
  100.  
  101. SUPPLIER = SubStr(SOURCEFILE,Length(SOURCEDIR)+2)
  102. /* `+1' for the open brace and `+1' for the leftmost slash */
  103. SUPPLIER = Left(SUPPLIER,LastPos("/",SUPPLIER)-1)
  104.  
  105. TYPEFACE = SubStr(SUPPLIER,LastPos("/",SUPPLIER))
  106. SUPPLIER = Left(SUPPLIER,LastPos("/",SUPPLIER)-1)
  107.  
  108. LOGDIR = LOGDIR || SUPPLIER
  109. Call SafeMakeDir(LOGDIR)
  110.  
  111. LOGDIR = LOGDIR || TYPEFACE
  112. Call SafeMakeDir(LOGDIR)
  113.  
  114. LOGDIR = LOGDIR || "/" || MODE
  115. Call SafeMakeDir(LOGDIR)
  116.  
  117. LOGDIR = LOGDIR || "/dpi" || DPI
  118. Call SafeMakeDir(LOGDIR)
  119.  
  120. LOGFILENAME = LOGDIR || "/" || LOGFILENAME
  121.  
  122. Copy CURLOGFILENAME LOGFILENAME clone
  123. Delete CURLOGFILENAME
  124.  
  125.  
  126. TFMDIR = TFMDIR || SUPPLIER
  127. Call SafeMakeDir(TFMDIR)
  128.  
  129. TFMDIR = TFMDIR || TYPEFACE
  130. Call SafeMakeDir(TFMDIR)
  131.  
  132. TFMFILENAME = TFMDIR || "/" || CURTFMFILENAME
  133.  
  134. If ~Exists(TFMFILENAME) Then Do
  135.   Copy CURTFMFILENAME TFMFILENAME clone
  136.   Protect TFMFILENAME r
  137. End
  138.  
  139. Delete CURTFMFILENAME
  140.  
  141.  
  142. PKDIR = PKDIR || SUPPLIER
  143. Call SafeMakeDir(PKDIR)
  144.  
  145. PKDIR = PKDIR || TYPEFACE
  146. Call SafeMakeDir(PKDIR)
  147.  
  148. PKDIR = PKDIR || "/" || MODE
  149. Call SafeMakeDir(PKDIR)
  150.  
  151. PKDIR = PKDIR || "/dpi" || DPI
  152. Call SafeMakedir(PKDIR)
  153.  
  154. PKFILENAME = PKDIR || "/" || CURPKFILENAME
  155.  
  156. If Exists(PKFILENAME) Then Do
  157.   LOGSTRING = PKFILENAME
  158.   LOGSTRING = LOGSTRING "already exists;" '0A'X
  159.   LOGSTRING = LOGSTRING "check your driver's configuration!"
  160.   Say LOGSTRING
  161.   Call Log(LOGSTRING)
  162.   Delete CURPKFILENAME
  163.   Exit 5
  164. End
  165.  
  166. Copy CURPKFILENAME PKFILENAME clone
  167. Delete CURPKFILENAME
  168. Protect PKFILENAME r
  169.  
  170.  
  171. If 0 ~= KEEPGFFILES Then Do /* Optionally store GF files */
  172.   GFDIR = GFDIR || SUPPLIER
  173.   Call SafeMakeDir(GFDIR)
  174.   
  175.   GFDIR = GFDIR || TYPEFACE
  176.   Call SafeMakeDir(GFDIR)
  177.   
  178.   GFDIR = GFDIR || "/" || MODE
  179.   Call SafeMakeDir(GFDIR)
  180.   
  181.   GFDIR = GFDIR || "/dpi" || DPI
  182.   Call SafeMakedir(GFDIR)
  183.   
  184.   GFFILENAME = GFDIR || "/" || CURGFFILENAME
  185.   
  186.   If Exists(GFFILENAME) Then Do
  187.     LOGSTRING = GFFILENAME
  188.     LOGSTRING = LOGSTRING "already exists;" '0A'X
  189.     LOGSTRING = LOGSTRING "check your driver's configuration!"
  190.     Say LOGSTRING
  191.     Call Log(LOGSTRING)
  192.     Delete CURGFFILENAME
  193.     Exit 5
  194.   End
  195.   
  196.   Copy CURGFFILENAME GFFILENAME clone
  197.   Delete CURGFFILENAME
  198.   Protect GFFILENAME r
  199.   
  200. End
  201.  
  202.  
  203.  
  204. ELAPSED = Time("ELAPSED")
  205. LOGSTRING = "created in "ELAPSED%3600
  206. LOGSTRING = LOGSTRING || ":"Right(ELAPSED%60//60,2,'0')
  207. LOGSTRING = LOGSTRING || ":"Right(ELAPSED%1//60,2,'0')
  208. Call Log(LOGSTRING)
  209. Exit 0 /* This is the end */
  210.  
  211. BREAK_C:
  212. BREAK_D:
  213.   Call Log "Execution aborted!"
  214.  
  215.   If Exists(CURGFFILENAME) Then
  216.     Delete CURGFFILENAME
  217.   If Exists(CURLOGFILENAME) Then
  218.     Delete CURLOGFILENAME
  219.  
  220.   Exit 10
  221. Log: Procedure Expose MASTERLOG FONTNAME MODE HBASE VBASE DPI MAG
  222. Parse Arg MSG
  223.  
  224. MESSAGE = Date() Time() || ":"
  225. MESSAGE = MESSAGE FONTNAME "for" MODE
  226. MESSAGE = MESSAGE "("HBASE","VBASE") with" DPI "dpi"
  227. MESSAGE = MESSAGE "(mag="MAG")" '0A'X
  228. MESSAGE = MESSAGE || MSG
  229. Say MESSAGE
  230.  
  231. If ~Open(LOGFILE,MASTERLOG,'Append') Then Do
  232.   Say "Can't open logfile!"
  233.   Return
  234. End
  235.  
  236. DUMMY = WriteLn(LOGFILE,MESSAGE)
  237. If ~Close(LOGFILE) Then
  238.   Say "Can't close logfile!"
  239.  
  240. Return
  241. Error:
  242.   Say "Translation problem, MetaFont returned "ERRORCODE"."
  243.   Call Log("Translation problem, MetaFont returned "ERRORCODE".")
  244. Return
  245. MyGetEnv: Procedure
  246. Parse Arg NAME
  247.  
  248. If Open(TEMPFILE,"ENV:"||NAME,'READ') Then Do
  249.   GIVES = Readln(TEMPFILE)
  250.   Call Close TEMPFILE
  251. End; Else
  252.   GIVES = ""
  253.  
  254. Return GIVES
  255. SafeMakeDir: Procedure
  256. Parse Arg DIRNAME
  257.  
  258. If ~Exists(DIRNAME) Then Do
  259.   MakeDir DIRNAME
  260.   If ~Exists(DIRNAME) Then Do
  261.     Call Log("Could not create directory" DIRNAME)
  262.     Exit 10
  263.   End
  264.   Say "Directory ("DIRNAME") did not exist.  It was created."
  265. End
  266.  
  267. Return
  268. SafeMakeFile: Procedure
  269. Parse Arg FILENAME
  270.  
  271. If ~Exists(FILENAME) Then Do
  272.   "echo >" || FILENAME
  273.   If ~Exists(FILENAME) Then Do
  274.     Call Log("Could not create file="FILENAME)
  275.     Exit 10
  276.   End
  277.   Say "File ("FILENAME") did not exist.  It was created."
  278. End
  279.  
  280. Return
  281.  
  282.