anchor.diff:      false.
   
   
  +%%% Compensate for '&gt' which really is just one character.
  +trim(L,N) ->
  +    case trim(L,N,[]) of
  +	{truncated,R} -> {R,length(R)-2};
  +	R -> {R,length(R)}
  +    end.
   
  -
  -trim([_H|_T], 5) ->
  -    "..&gt";
  -trim([H|T], I) ->
  -    [H|trim(T,I-1)];
  -trim([], _) ->
  -    [].
  +trim([_H|_T], 4, Acc) ->
  +    {truncated,lists:reverse(Acc) ++ "...&gt"};
  +trim([H|T], I, Acc) ->
  +    trim(T, I-1, [H|Acc]);
  +trim([], _, Acc) ->
  +    lists:reverse(Acc).
   
   
   datestr(FI) ->
       yaws:time_to_string(FI#file_info.mtime, []).
  +
   sizestr(FI) when FI#file_info.size > 1000000 ->
  -    ?F("~.1f M", [FI#file_info.size / 1000000]);
  +    ?F("~.1fM", [FI#file_info.size / 1000000]);
   sizestr(FI) when FI#file_info.size > 1000 ->
  -    ?F("~w k", [trunc(FI#file_info.size / 1000)]);
  +    ?F("~wk", [trunc(FI#file_info.size / 1000)]);
   sizestr(FI) ->
  -    ?F("~w ", [FI#file_info.size]).
  +    ?F("1k", []). % As apache does it...
   
   
   list_gif(directory, ".") ->
  
positive.code:     ?Debug("file_entry(~p) ", [Name]),
      Ext = filename:extension(Name),
      {Gif, Alt} = list_gif(FI#file_info.type, Ext),
      Trim = trim(Name, 20),
      Entry = ?F("<img SRC=~p  ALT=~p> <a HREF=~p>~s</a> ~s~s          ~s~n",
  	       ["/icons/" ++ Gif,
  		Alt,
  		Name, 
  		Trim,
  		lists:duplicate(20 - length(Trim), $\s),
  		datestr(FI), 
  		sizestr(FI)]),
      ?Debug("Entry:~p", [Entry]),
  
negative.code: list_head() ->
      "    <pre><img SRC=\"/icons/blank.gif\" ALT=\"     \"> "
      "<a HREF=\"?N=D\">Name</a>                   "
      "<a HREF=\"?M=A\">Last modified</a>                 "
      " <a HREF=\"?S=A\">Size</a>   "
      "<a HREF=\"?D=A\">Description</a> \n"
      "<hr> \n".
  
  