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/cm-boot.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/cm-boot.sml

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

revision 360, Tue Jun 29 09:21:02 1999 UTC revision 361, Wed Jun 30 06:44:04 1999 UTC
# Line 126  Line 126 
126            val fnpolicy = FilenamePolicy.colocate            val fnpolicy = FilenamePolicy.colocate
127                { os = os, arch = HostMachDepVC.architecture }                { os = os, arch = HostMachDepVC.architecture }
128    
129            val pcmodeRef = ref (PathConfig.hardwire [])            val pcmode = PathConfig.new ()
130    
131            val theValues = ref (NONE: kernelValues option)            val theValues = ref (NONE: kernelValues option)
132    
133        in        in
134              fun initPaths () = let
135                  val p =
136                      case OS.Process.getEnv "HOME" of
137                          NONE => []
138                        | SOME h => [OS.Path.concat (h, ".smlnj-pathconfig")]
139                  val p = EnvConfig.getSet StdConfig.pathcfgspec NONE :: p
140                  fun processOne f = PathConfig.processSpecFile (pcmode, f)
141                      handle _ => ()
142              in
143                  app processOne p
144              end
145    
146            fun param () = let            fun param () = let
147                val v = valOf (!theValues)                val v = valOf (!theValues)
148                    handle Option =>                    handle Option =>
# Line 138  Line 150 
150            in            in
151                { primconf = #primconf v,                { primconf = #primconf v,
152                  fnpolicy = fnpolicy,                  fnpolicy = fnpolicy,
153                  pcmode = !pcmodeRef,                  pcmode = pcmode,
154                  symenv = SSV.env,                  symenv = SSV.env,
155                  keep_going = EnvConfig.getSet StdConfig.keep_going NONE,                  keep_going = EnvConfig.getSet StdConfig.keep_going NONE,
156                  pervasive = #pervasive v,                  pervasive = #pervasive v,
# Line 148  Line 160 
160    
161            fun autoload s = let            fun autoload s = let
162                val c = SrcPath.cwdContext ()                val c = SrcPath.cwdContext ()
               val pcmode = !pcmodeRef  
163                val p = SrcPath.standard pcmode { context = c, spec = s }                val p = SrcPath.standard pcmode { context = c, spec = s }
164            in            in
165                case Parse.parse (SOME al_greg) (param ()) NONE p of                case Parse.parse (SOME al_greg) (param ()) NONE p of
# Line 168  Line 179 
179            fun al_manager' (ast, _, ter) = al_manager (ast, ter)            fun al_manager' (ast, _, ter) = al_manager (ast, ter)
180    
181            fun initTheValues bootdir = let            fun initTheValues bootdir = let
182                val pcmode = PathConfig.bootcfg bootdir                val _ = let
183                val _ = pcmodeRef := pcmode                    fun listDir ds = let
184                          fun loop l =
185                              case OS.FileSys.readDir ds of
186                                  "" => l
187                                | x => loop (x :: l)
188                      in
189                          loop []
190                      end
191                      val fileList = SafeIO.perform
192                          { openIt = fn () => OS.FileSys.openDir bootdir,
193                            closeIt = OS.FileSys.closeDir,
194                            work = listDir,
195                            cleanup = fn () => () }
196                      fun isDir x =
197                          OS.FileSys.isDir x handle _ => false
198                      fun subDir x = let
199                          val d = OS.Path.concat (bootdir, x)
200                      in
201                          if isDir d then SOME (x, d) else NONE
202                      end
203                      val pairList = List.mapPartial subDir fileList
204                  in
205                      app (fn (x, d) => PathConfig.set (pcmode, x, d)) pairList
206                  end
207                val initgspec =                val initgspec =
208                    SrcPath.standard pcmode { context = SrcPath.cwdContext (),                    SrcPath.standard pcmode { context = SrcPath.cwdContext (),
209                                              spec = BtNames.initgspec }                                              spec = BtNames.initgspec }
# Line 268  Line 302 
302      fun init (bootdir, de) =      fun init (bootdir, de) =
303          (warmup_hook := SOME de;          (warmup_hook := SOME de;
304           initTheValues bootdir;           initTheValues bootdir;
305           warmup_hook := NONE)           warmup_hook := NONE;
306             Cleanup.install initPaths)
307    end    end
308  end  end
309    

Legend:
Removed from v.360  
changed lines
  Added in v.361

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