anchor.diff:  
   netmask_to_wildcard(ipv4, Mask) -> ((1 bsl ?MAXBITS_IPV4) - 1) bxor Mask;
   netmask_to_wildcard(ipv6, Mask) -> ((1 bsl ?MAXBITS_IPV6) - 1) bxor Mask.
  +
  +subconfigdir_fold(_File, {error, _Err}=Acc) ->
  +    Acc;
  +subconfigdir_fold(File, {ok, GCp, Csp}=Acc) ->
  +    case is_file(File) of
  +        true ->
  +            error_logger:info_msg("Yaws: Using subconfig file ~s~n", [File]),
  +            case file:open(File, [read]) of
  +                {ok, FD1} ->
  +                    R = (catch fload(FD1,
  +                                     globals,
  +                                     GCp,
  +                                     undefined,
  +                                     Csp,
  +                                     1,
  +                                     io:get_line(FD1, ''))),
  +                    ?Debug("FLOAD: ~p", [R]),
  +                    R;
  +                _ ->
  +                    {error, "Can't open config file " ++ File}
  +            end;
  +        false ->
  +            %% Ignore subdirectories
  +            Acc
  +    end.
  
positive.code: is_special(C) ->
      lists:member(C, [$=, $<, $>, $,]).
  
  %% parse the argument string PLString which can either be the undefined atom
  %% or a proplist. Currently the only supported keys are fullsweep_after and
  %% min_heap_size. Any other key/values are ignored.
  parse_process_options(PLString) ->
      case erl_scan:string(PLString ++ ".") of
          {ok, PLTokens, _} ->
  
negative.code:                 {ok, [Hd|_Tl]=PList} when is_atom(Hd); is_tuple(Hd) ->
                      %% create new safe proplist of desired options
                      {ok, proplists_int_copy([], PList, [fullsweep_after,
                                                          min_heap_size,
                                                          min_bin_vheap_size])};
                  _ ->
                      {error, "Expect undefined or proplist"}
              end;
  