anchor.diff:      exit(normal);
   
   handle_out_reply({ssi, File,Delimiter,Bindings}, LineNo, YawsFile, _UT,A) ->
  -    case ssi(File, Delimiter, Bindings) of
  +    case ssi(A, File, Delimiter, Bindings) of
   	{error, Rsn} ->
   	    L = ?F("yaws code at~s:~p had the following err:~n~p",
   		   [YawsFile, LineNo, Rsn]),
  
positive.code: 		     
  
  
  expand_parts([{data, D} |T], Bs, Ack) ->	    
      expand_parts(T, Bs, [D|Ack]);
  expand_parts([{var, V} |T] , Bs, Ack) ->
      case lists:keysearch(V, 1, Bs) of
  	{value, {_, Val}} ->
  	    expand_parts(T, Bs, [Val|Ack]);
  	false ->
  	    {error, ?F("No variable binding found for ~p", [V])}
      end;
  expand_parts([], _,Ack) ->
      lists:reverse(Ack).
  
  	    
  
negative.code: 
  
  %% fast server side include with macrolike variable bindings expansion
  ssi(A, File, Delimiter, Bindings) ->
      ssi(A, File, Delimiter, Bindings, get(sc)).
  ssi(A, File, Delimiter, Bindings, SC) ->
      Key = {ssi, File, Delimiter},
      FullPath = [SC#sconf.docroot, [$/|File]],
      Mtime = path_to_mtime(FullPath),
      case ets:lookup(SC#sconf.ets, Key) of
  	[{_, Parts, Mtime}] ->
  	    expand_parts(A, Parts, Bindings, []);
  	_ ->
  	    case prim_file:read_file(FullPath) of
  		{ok, Bin} ->
  		    D =delim_split_file(Delimiter,binary_to_list(Bin),data,[]),
  		    ets:insert(SC#sconf.ets,{Key,D, Mtime}),
  		    ssi(A, File, Delimiter, Bindings, SC);
  		{error, Rsn} ->
  		    {error,Rsn}
  	    end
  