Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/cm/bootstrap/btcompile.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/bootstrap/btcompile.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 367, Sat Jul 3 04:59:01 1999 UTC revision 368, Sat Jul 3 13:05:59 1999 UTC
# Line 55  Line 55 
55                                 val pending = AutoLoad.getPending)                                 val pending = AutoLoad.getPending)
56    
57      (* copying an input file to an output file safely... *)      (* copying an input file to an output file safely... *)
58      fun copyFile (inf, outf) = let      fun copyFile (oi, ci, oo, co, inp, outp, eof) (inf, outf) = let
59          fun workIn ins = let          fun workIn is = let
60              fun workOut outs = let              fun workOut os = let
61                  val N = 4096                  val N = 4096
62                  fun loop () =                  fun loop () =
63                      if TextIO.endOfStream ins then ()                      if eof is then () else (outp (os, inp (is, N)); loop ())
                     else (TextIO.output (outs, TextIO.inputN (ins, N));  
                           loop ())  
64              in              in
65                  loop ()                  loop ()
66              end              end
67          in          in
68              SafeIO.perform { openIt = fn () => AutoDir.openTextOut outf,              SafeIO.perform { openIt = fn () => oo outf,
69                               closeIt = TextIO.closeOut,                               closeIt = co,
70                               work = workOut,                               work = workOut,
71                               cleanup = fn () =>                               cleanup = fn () =>
72                                   (F.remove outf handle _ => ()) }                                   (F.remove outf handle _ => ()) }
73          end          end
74      in      in
75          SafeIO.perform { openIt = fn () => TextIO.openIn inf,          SafeIO.perform { openIt = fn () => oi inf,
76                           closeIt = TextIO.closeIn,                           closeIt = ci,
77                           work = workIn,                           work = workIn,
78                           cleanup = fn () => () }                           cleanup = fn () => () }
79      end      end
80    
81        val copyTextFile =
82            copyFile (TextIO.openIn, TextIO.closeIn,
83                      AutoDir.openTextOut, TextIO.closeOut,
84                      TextIO.inputN, TextIO.output, TextIO.endOfStream)
85    
86        val copyBinFile =
87            copyFile (BinIO.openIn, BinIO.closeIn,
88                      AutoDir.openBinOut, BinIO.closeOut,
89                      BinIO.inputN, BinIO.output, BinIO.endOfStream)
90    
91      fun compile deliver dbopt = let      fun compile deliver dbopt = let
92    
93          val dirbase = getOpt (dbopt, BtNames.dirbaseDefault)          val dirbase = getOpt (dbopt, BtNames.dirbaseDefault)
# Line 103  Line 111 
111                              P.toString { isAbs = false, vol = "",                              P.toString { isAbs = false, vol = "",
112                                           arcs = bootdir :: arc1 :: arcn }                                           arcs = bootdir :: arc1 :: arcn }
113                      in                      in
114                          copyFile (p, bootpath)                          copyBinFile (p, bootpath)
115                      end                      end
116                  in                  in
117                      if copy andalso arc0 = bindir then doCopy () else ();                      if copy andalso arc0 = bindir then doCopy () else ();
# Line 262  Line 270 
270                                           cleanup = fn () =>                                           cleanup = fn () =>
271                                             OS.FileSys.remove listfile                                             OS.FileSys.remove listfile
272                                             handle _ => () };                                             handle _ => () };
273                          copyFile (SrcPath.osstring initgspec, cmifile);                          copyTextFile (SrcPath.osstring initgspec, cmifile);
274                          Say.say ["Runtime System PID is: ", rtspid, "\n"])                          Say.say ["Runtime System PID is: ", rtspid, "\n"])
275                        else ();                        else ();
276                        true                        true

Legend:
Removed from v.367  
changed lines
  Added in v.368

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0