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/paths/abspath.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/paths/abspath.sml

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

revision 631, Fri Apr 28 08:30:52 2000 UTC revision 632, Sat Apr 29 15:50:42 2000 UTC
# Line 298  Line 298 
298                  fresh (context,                  fresh (context,
299                         P.toString { isAbs = false, vol = "",                         P.toString { isAbs = false, vol = "",
300                                      arcs = map transl arcs })                                      arcs = map transl arcs })
301          in  
302              case String.fields delim spec of              fun anchored (a, arcs, otherwise) =
303                  [""] => impossible "AbsPath.standard: zero-length name"                  case PathConfig.configAnchor mode a of
304                | "" :: arcs => mk (arcs, ROOT "")                      NONE => otherwise ()
               | [] => impossible "AbsPath.standard: no fields"  
               | arcs as (arc1 :: _) =>  
                     (case PathConfig.configAnchor mode arc1 of  
                          NONE => mk (arcs, context)  
305                         | SOME fetch => let                         | SOME fetch => let
306                               val anchorcontext =                               val anchorcontext =
307                                   CONFIG_ANCHOR { fetch = fetch,                                   CONFIG_ANCHOR { fetch = fetch,
308                                                   cache = ref NONE,                                                   cache = ref NONE,
309                                                   config_name = arc1 }                                              config_name = a }
310                           in                           in
311                               mk (arcs, anchorcontext)                               mk (arcs, anchorcontext)
312                           end)                      end
313            in
314                case String.fields delim spec of
315                    [""] => impossible "AbsPath.standard: zero-length name"
316                  | "" :: arcs => mk (arcs, ROOT "")
317                  | [] => impossible "AbsPath.standard: no fields"
318                  | ["$"] => raise BadAnchor ""
319                  | "$" :: "" :: _ => raise BadAnchor ""
320                  (* $-anchored paths using default anchor... *)
321                  | "$" :: (arcs as (arc1 :: _)) =>
322                    anchored (arc1, arcs, fn () => raise BadAnchor arc1)
323                  | arcs as (arc1 :: arcn) =>
324                    (if String.sub (arc1, 0) = #"$" then
325                         (* $-anchored paths with specified anchor *)
326                         let val a = String.extract (arc1, 1, NONE)
327                             val arcn = case arcn of [] => [a] | _ => arcn
328                         in
329                             anchored (a, arcn, fn () => raise BadAnchor a)
330                         end
331                     else anchored (arc1, arcs, fn () => mk (arcs, context)))
332          end          end
333    
334          (* make a pickle-string *)          (* make a pickle-string *)

Legend:
Removed from v.631  
changed lines
  Added in v.632

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