home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / applications / wp / dotex.lha / DoTeX.e (.txt) next >
Encoding:
LaTeX Document  |  1993-10-17  |  3.2 KB  |  122 lines

  1. MODULE 'workbench/startup', 'workbench/workbench',
  2.        'icon', 'dos/dostags', 'dos/dos'
  3. DEF y=11
  4. PROC main()
  5.   DEF i, wb:PTR TO wbstartup, args:PTR TO wbarg, olddir,
  6.       templ, rdargs=NIL, arglist:PTR TO LONG, rargs: PTR TO LONG
  7.   iconbase:=OpenLibrary('icon.library', 33)
  8.   IF wb:=wbmessage
  9.     IF iconbase=NIL
  10.       CleanUp(10)
  11.     ENDIF
  12.     args:=wb.arglist
  13.     IF wb.numargs<>1
  14.       args++
  15.       FOR i:=2 TO wb.numargs
  16.         IF args[].lock
  17.           olddir:=CurrentDir(args[].lock)
  18.           dofile(args[].name++)
  19.           CurrentDir(olddir)
  20.         ELSE
  21.           dofile(args[].name++)
  22.         ENDIF
  23.       ENDFOR
  24.     ELSE
  25.       interact(args[].name)
  26.     ENDIF
  27.   ELSE
  28.     IF iconbase=NIL
  29.       WriteF('Can''t open icon.library\n')
  30.       CleanUp(10)
  31.     ENDIF
  32.     templ:='FILE/M'
  33.     rdargs:=ReadArgs(templ,rargs,NIL)
  34.     IF rdargs
  35.       IF rargs AND (arglist:=rargs[])
  36.         WHILE arglist[]
  37.           dofile(arglist[]++)
  38.         ENDWHILE
  39.       ENDIF
  40.       FreeArgs(rdargs)
  41.     ENDIF
  42.   ENDIF
  43.   IF iconbase THEN CloseLibrary(iconbase)
  44. ENDPROC
  45. PROC dofile(file)
  46.   DEF handle=NIL, dobj:PTR TO diskobject, fmt=NIL, 
  47.       sysline[256]:STRING, con=NIL, tool, i=0, res
  48.   handle:=Open(file, OLDFILE)
  49.   IF handle
  50.     IF dobj:=GetDiskObject(file)
  51.       IF tool:=FindToolType(dobj.tooltypes, 'DOTEXFMT')
  52.         LowerStr(tool)
  53.         IF StrCmp(tool, 'tex', ALL)
  54.           fmt:='plain'
  55.         ELSEIF StrCmp(tool, 'latex', ALL)
  56.           fmt:='lplain'
  57.         ELSEIF tool[]
  58.           fmt:=tool
  59.         ENDIF
  60.       ENDIF
  61.     ENDIF
  62.     IF fmt=NIL
  63.       WHILE (i++<20) AND (ReadStr(handle, sysline)<>-1)
  64.         IF StrCmp(sysline, '\\documentstyle', STRLEN)
  65.           fmt:='lplain'
  66.         ELSE
  67.           LowerStr(sysline)
  68.           IF StrCmp(sysline, '% latex', ALL)
  69.             fmt:='lplain'
  70.           ELSEIF StrCmp(sysline, '% tex', ALL)
  71.             fmt:='plain'
  72.           ENDIF
  73.         ENDIF
  74.       ENDWHILE
  75.       IF fmt=NIL
  76.         fmt:='plain'
  77.       ENDIF
  78.     ENDIF
  79.     Close(handle)
  80.     StringF(sysline, 'con:0/\d/640/94/DoTeX - \s/CLOSE/WAIT', y, file)
  81.     IF con:=Open(sysline, OLDFILE)
  82.       StringF(sysline, 'tex:bin/virtex &\s \s', fmt, file)
  83.       res:=SystemTagList(sysline, [SYS_INPUT, con, SYS_OUTPUT, NIL,
  84.                                    SYS_ASYNCH, TRUE, NIL])
  85.       IF res=-1 THEN Close(con)
  86.       y:=y+11
  87.       IF y>106 THEN y:=11
  88.     ENDIF
  89.     IF dobj THEN FreeDiskObject(dobj)
  90.   ELSEIF wbmessage=NIL
  91.     WriteF('File "\s" does not exist\n', file)
  92.   ENDIF
  93. ENDPROC
  94. PROC interact(file)
  95.   DEF name[128]:STRING, sysline[256]:STRING, fmt, handle, pos, found
  96.   pos:=InStr(file, ':', 0)
  97.   IF pos=-1
  98.     pos:=0
  99.   ELSE
  100.     INC pos
  101.   ENDIF
  102.   WHILE (found:=InStr(file, '/', pos))<>-1
  103.     pos:=found+1
  104.   ENDWHILE
  105.   MidStr(name, file, pos, ALL)
  106.   StringF(sysline, 'CON:0/11/640/94/DoTeX -- \s running/CLOSE/WAIT', name)
  107.   IF handle:=Open(sysline, NEWFILE)
  108.     LowerStr(name)
  109.     IF StrCmp(name, 'latex', ALL)
  110.       fmt:='lplain'
  111.     ELSEIF StrCmp(name, 'tex', ALL)
  112.       fmt:='plain'
  113.     ELSE
  114.       fmt:=name
  115.     ENDIF
  116.     StringF(sysline, 'tex:bin/virtex &\s', fmt)
  117.     SystemTagList(sysline, [SYS_INPUT, handle, SYS_OUTPUT, handle,
  118.                             SYS_ASYNCH, FALSE, NIL])
  119.     Close(handle)
  120.   ENDIF
  121. ENDPROC
  122.