anchor.diff:  	    fload(FD, globals, GC, undefined, [C|Cs], Lno+1, Next);
   	[H|T] ->
   	    {error, ?F("Unexpected input ~p at line ~w", [[H|T], Lno])}
  -    end.
  +    end;
  +
  +	
  +
  +fload(FD, ssl, GC, C, Cs, Lno, Chars) ->
  +    Next = io:get_line(FD, ''),
  +    case toks(Chars) of
  +	[] ->
  +	    fload(FD, ssl, GC, C, Cs, Lno+1, Next);
  +
  +	%% A bunch of ssl options
  +
  +	["keyfile", '=', Val] ->
  +	    case is_file(Val) of
  +		true when  record(C#sconf.ssl, ssl) ->
  +		    C2 = C#sconf{ssl = (C#sconf.ssl)#ssl{keyfile = Val}},
  +		    fload(FD, ssl, GC, C2, Cs, Lno+1, Next);
  +		true ->
  +		    {error, ?F("Need to set option ssl to true before line ~w",
  +			       [Lno])};
  +		_ ->
  +		    {error, ?F("Expect existing file at line ~w", [Lno])}
  +	    end;
  +	["certfile", '=', Val] ->
  +	    case is_file(Val) of
  +		true when  record(C#sconf.ssl, ssl) ->
  +		    C2 = C#sconf{ssl = (C#sconf.ssl)#ssl{certfile = Val}},
  +		    fload(FD, ssl, GC, C2, Cs, Lno+1, Next);
  +		true ->
  +		    {error, ?F("Need to set option ssl to true before line ~w",
  +			       [Lno])};
  +		_ ->
  +		    {error, ?F("Expect existing file at line ~w", [Lno])}
  +	    end;
  +	["cacertfile", '=', Val] ->
  +	    case is_file(Val) of
  +		true when  record(C#sconf.ssl, ssl) ->
  +		    C2 = C#sconf{ssl = (C#sconf.ssl)#ssl{cacertfile = Val}},
  +		    fload(FD, ssl, GC, C2, Cs, Lno+1, Next);
  +		true ->
  +		    {error, ?F("Need to set option ssl to true before line ~w",
  +			       [Lno])};
  +		_ ->
  +		    {error, ?F("Expect existing file at line ~w", [Lno])}
  +	    end;
  +	["verify", '=', Val] ->
  +	    case lists:member(Val, [1,2,3]) of
  +		true when  record(C#sconf.ssl, ssl) ->
  +		    C2 = C#sconf{ssl = (C#sconf.ssl)#ssl{verify = Val}},
  +		    fload(FD, ssl, GC, C2, Cs, Lno+1, Next);
  +		true ->
  +		    {error, ?F("Need to set option ssl to true before line ~w",
  +			       [Lno])};
  +		_ ->
  +		    {error, ?F("Expect integer at line ~w", [Lno])}
  +	    end;
  +	["depth", '=', Val] ->
  +	    case lists:member(Val, [1,2,3,4,5,6,7]) of
  +		true when  record(C#sconf.ssl, ssl) ->
  +		    C2 = C#sconf{ssl = (C#sconf.ssl)#ssl{depth = Val}},
  +		    fload(FD, ssl, GC, C2, Cs, Lno+1, Next);
  +		true ->
  +		    {error, ?F("Need to set option ssl to true before line ~w",
  +			       [Lno])};
  +		_ ->
  +		    {error, ?F("Expect reasonable integer at line ~w", [Lno])}
  +	    end;
  +	["password", '=', Val] ->
  +	    if 
  +		record(C#sconf.ssl, ssl) ->
  +		    C2 = C#sconf{ssl = (C#sconf.ssl)#ssl{password = Val}},
  +		    fload(FD, ssk, GC, C2, Cs, Lno+1, Next);
  +		true ->
  +		    {error, ?F("Need to set option ssl to true before line ~w",
  +			       [Lno])}
  +	    end;
  +	["ciphers", '=', Val] ->
  +	    if 
  +		record(C#sconf.ssl, ssl) ->
  +		    C2 = C#sconf{ssl = (C#sconf.ssl)#ssl{ciphers = Val}},
  +		    fload(FD, ssl, GC, C2, Cs, Lno+1, Next);
  +		true ->
  +		    {error, ?F("Need to set option ssl to true before line ~w",
  +			       [Lno])}
  +	    end;
  +	['<', "/ssl", '>'] ->
  +	    fload(FD, server, GC, C, Cs, Lno+1, Next);
  +	
  +	[H|T] ->
  +	    {error, ?F("Unexpected input ~p at line ~w", [[H|T], Lno])}
  +    end.
  +
  +
  +
  +
  +
  +
  +
  +
  +fload(FD, server_auth, GC, C, Cs, Lno, eof, Auth) ->
  +    file:close(FD),
  +    {error, ?F("Unexpected end of file at line ~w", [Lno])};
   
   fload(FD, server_auth, GC, C, Cs, Lno, Chars, Auth) ->
       %?Debug("Chars: ~s", [Chars]),
       Next = io:get_line(FD, ''),
       case toks(Chars) of
   	[] ->
  -	    fload(FD, server, GC, C, Cs, Lno+1, Next);
  +	    fload(FD, server_auth, GC, C, Cs, Lno, Chars, Auth);
   	["dir", '=', Dir] ->
       	    case is_dir(Dir) of
   		true ->
  
positive.code: 	[H|T] ->
  	    {error, ?F("Unexpected input ~p at line ~w", [[H|T], Lno])}
      end.
  	    
  
  is_bool("true") ->
      {true, true};
  
negative.code: 
  	
  fload(FD, server, GC, C, Cs, Lno, Chars) ->
      Next = io:get_line(FD, ''),
      case toks(Chars) of
  	[] ->
  