anchor.diff:          E -> E
       end.
   
  +-spec format_timestamp() -> binary().
   format_timestamp() ->
       {Date, Time} = calendar:now_to_local_time(now()),
       DateStr = io_lib:fwrite("~w/~.2.0w/~.2.0w ", tuple_to_list(Date)),
       TimeStr = io_lib:fwrite("~.2.0w:~.2.0w:~.2.0w", tuple_to_list(Time)),
       list_to_binary([DateStr, TimeStr]).
   
  +% FIXME: Figure out why dialyzer doesn't like hashdir().
   hashdir(Name, Node, Mode, Root, Vol) ->
       <<D0:8, _/binary>> = erlang:md5(Name),
       [D1] = io_lib:format("~.16b", [D0]),
  
positive.code: 
  -include("config.hrl").
  
  is_valid_name([]) -> false;
  is_valid_name(Name) when length(Name) > ?NAME_MAX -> false;
  is_valid_name(Name) ->
      Ok = ":@-_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
      not lists:any(fun(C) -> string:chr(Ok, C) == 0 end, Name).
  
  replace(Str, A, B) ->
      replace(lists:flatten(Str), A, B, []).
  replace([], _, _, L) ->
      lists:reverse(L);
  replace([C|R], A, B, L) when C == A ->
  
negative.code:             {error, invalid_output}
      end.
  
  -spec fold_files(string(), fun((string(), string(), T) -> T), T) -> T.
  fold_files(Dir, Fun, Acc0) ->
      {ok, L} = prim_file:list_dir(Dir),
      lists:foldl(fun(F, Acc) ->
  