anchor.diff:  				   end,
   			io:format("~s ~s~s\n", [Code, URL, Spec]),
   			case {?ENABLED(follow_dirs), ?ENABLED(follow_redirs), ?ENABLED(parse_body), Contents} of
  -				{true, _, _, dir} -> Server ! {bust, URL ++ "/"};
  -				{_, true, _, {redir, Target}} -> Server ! {bust, {URL, Target}};
  +				{true, _, _, dir} -> Server ! {bust_dir, URL ++ "/"};
  +				{_, true, _, {redir, Target}} -> Server ! {bust_file, {URL, Target}};
   				{_, _, true, Body} when Code =/= error, Body =/= "", is_list(Body) ->
   					spawn_link(?MODULE, parse_body, [Body, URL, Server]);
   				_ -> ok
  
positive.code: 	URLs = ets:new(dirbusterl_urls, [named_table]),
  	Waiter = spawn_link(?MODULE, waiter, [self(), Config]),
  	{ok, WordList} = file:open(?WORDLIST, [read, raw, read_ahead, binary]),
  	bust(URL, Waiter, WordList, Config),
  	file:close(WordList),
  	ets:delete(URLs).
  
  bust(URL, Waiter, WordList, Config) ->
  	BaseURL = ensure_ends_with_slash(URL),
  	spawn_worker(URL, Waiter),
  	file:position(WordList, bof),
  	burst_wordlist(BaseURL, WordList, Waiter),
  	Waiter ! finished,
  	receive
  		{bust, {Base, Path}} -> bust(urljoin(ensure_ends_with_slash(Base), Path),
  									Waiter, WordList, Config);
  		{bust, Target} -> bust(Target, Waiter, WordList, Config);
  		done -> done
  	end.
  
  
negative.code: parse_body_values([], _, _) -> ok;
  parse_body_values([Result | Rest], URL, Server) ->
  	Value = string:sub_word(lists:last(Result), 1, $?), %% remove ?foo=bar&...
  	Server ! {bust_file, {URL, Value}},
  	parse_body_values(Rest, URL, Server).
  
  ensure_ends_with_slash(Str) ->
  