anchor.diff:  
   absname(Config) when is_list(Config) ->
       case os:type() of
  -	{win32, _} -> 
  -	    ?line [Drive|_] = ?config(priv_dir, Config),
  -	    ?line Temp = filename:join([Drive|":/"], "temp"),
  -	    ?line case file:make_dir(Temp) of
  -		      ok -> ok;
  -		      {error,eexist} -> ok
  -		  end,
  -	    ?line {ok,Cwd} = file:get_cwd(),
  -	    ?line ok = file:set_cwd(Temp),
  -	    ?line [Drive|":/temp/foo"] = filename:absname(foo),
  -	    ?line [Drive|":/temp/foo"] = filename:absname("foo"),
  -	    ?line [Drive|":/temp/../ebin"] = filename:absname("../ebin"),
  -	    ?line [Drive|":/erlang"] = filename:absname("/erlang"),
  -	    ?line [Drive|":/erlang/src"] = filename:absname("/erlang/src"),
  -	    ?line [Drive|":/erlang/src"] = filename:absname("\\erlang\\src"),
  -	    ?line [Drive|":/temp/erlang"] = filename:absname([Drive|":erlang"]),
  -	    ?line [Drive|":/temp/erlang/src"] =
  -		filename:absname([Drive|":erlang/src"]),
  -	    ?line [Drive|":/temp/erlang/src"] =
  -		filename:absname([Drive|":erlang\\src\\"]),
  -	    ?line "a:/erlang" = filename:absname("a:erlang"),
  -	    
  -	    ?line file:set_cwd([Drive|":/"]),
  -	    ?line [Drive|":/foo"] = filename:absname(foo),
  -	    ?line [Drive|":/foo"] = filename:absname("foo"),
  -	    ?line [Drive|":/../ebin"] = filename:absname("../ebin"),
  -	    ?line [Drive|":/erlang"] = filename:absname("/erlang"),
  -	    ?line [Drive|":/erlang/src"] = filename:absname("/erlang/src"),
  -	    ?line [Drive|":/erlang/src"] = filename:absname(["/erlang",'/src']),
  -	    ?line [Drive|":/erlang/src"] = filename:absname("\\erlang\\\\src"),
  -	    ?line [Drive|":/erlang"] = filename:absname([Drive|":erlang"]),
  -	    ?line [Drive|":/erlang/src"] = filename:absname([Drive|":erlang/src"]),
  -	    ?line "a:/erlang" = filename:absname("a:erlang"),
  -	    
  -	    ?line file:set_cwd(Cwd),
  -	    ok;
  -	{unix, _} ->
  -            ?line ok = file:set_cwd("/usr"),
  -            ?line "/usr/foo" = filename:absname(foo),
  -            ?line "/usr/foo" = filename:absname("foo"),
  -            ?line "/usr/../ebin" = filename:absname("../ebin"),
  -	    ?line file:set_cwd("/"),
  -	    ?line "/foo" = filename:absname(foo),
  -	    ?line "/foo" = filename:absname("foo"),
  -	    ?line "/../ebin" = filename:absname("../ebin"),
  -	    ?line "/erlang" = filename:absname("/erlang"),
  -	    ?line "/erlang/src" = filename:absname("/erlang/src"),
  -	    ?line "/erlang/src" = filename:absname(["/erl",'ang/s',"rc"]),
  -	    ?line "/erlang/src" = filename:absname(["/erl",'a','ng',"/",'s',"rc"]),
  -	    ?line "/erlang/src" = filename:absname("/erlang///src"),
  -	    ?line "/file_sorter.erl" = filename:absname([file_sorter|'.erl']),
  -	    ok
  +        {win32, _} -> 
  +            [Drive|_] = ?config(priv_dir, Config),
  +            Temp = filename:join([Drive|":/"], "temp"),
  +            case file:make_dir(Temp) of
  +                ok -> ok;
  +                {error,eexist} -> ok
  +            end,
  +            {ok,Cwd} = file:get_cwd(),
  +            ok = file:set_cwd(Temp),
  +            [Drive|":/temp/foo"] = filename:absname(foo),
  +            [Drive|":/temp/foo"] = filename:absname("foo"),
  +            [Drive|":/temp/../ebin"] = filename:absname("../ebin"),
  +            [Drive|":/erlang"] = filename:absname("/erlang"),
  +            [Drive|":/erlang/src"] = filename:absname("/erlang/src"),
  +            [Drive|":/erlang/src"] = filename:absname("\\erlang\\src"),
  +            [Drive|":/temp/erlang"] = filename:absname([Drive|":erlang"]),
  +            [Drive|":/temp/erlang/src"] =
  +                filename:absname([Drive|":erlang/src"]),
  +            [Drive|":/temp/erlang/src"] =
  +                filename:absname([Drive|":erlang\\src\\"]),
  +            "a:/erlang" = filename:absname("a:erlang"),
  +
  +            file:set_cwd([Drive|":/"]),
  +            [Drive|":/foo"] = filename:absname(foo),
  +            [Drive|":/foo"] = filename:absname("foo"),
  +            [Drive|":/../ebin"] = filename:absname("../ebin"),
  +            [Drive|":/erlang"] = filename:absname("/erlang"),
  +            [Drive|":/erlang/src"] = filename:absname("/erlang/src"),
  +            [Drive|":/erlang/src"] = filename:absname(["/erlang",'/src']),
  +            [Drive|":/erlang/src"] = filename:absname("\\erlang\\\\src"),
  +            [Drive|":/erlang"] = filename:absname([Drive|":erlang"]),
  +            [Drive|":/erlang/src"] = filename:absname([Drive|":erlang/src"]),
  +            "a:/erlang" = filename:absname("a:erlang"),
  +
  +            file:set_cwd(Cwd),
  +            ok;
  +        {unix, _} ->
  +            ok = file:set_cwd("/usr"),
  +            "/usr/foo" = filename:absname(foo),
  +            "/usr/foo" = filename:absname("foo"),
  +            "/usr/../ebin" = filename:absname("../ebin"),
  +
  +            file:set_cwd("/"),
  +            "/foo" = filename:absname(foo),
  +            "/foo" = filename:absname("foo"),
  +            "/../ebin" = filename:absname("../ebin"),
  +            "/erlang" = filename:absname("/erlang"),
  +            "/erlang/src" = filename:absname("/erlang/src"),
  +            "/erlang/src" = filename:absname(["/erl",'ang/s',"rc"]),
  +            "/erlang/src" = filename:absname(["/erl",'a','ng',"/",'s',"rc"]),
  +            "/erlang/src" = filename:absname("/erlang///src"),
  +            "/file_sorter.erl" = filename:absname([file_sorter|'.erl']),
  +            ok
       end.
   
   
  
positive.code:     "/b" = filename_join("/a/","/b/"),
      "/a/b" = filename_join("/a/","b/"),
  
      ?line case os:type() of
  	      {win32, _} ->
  		  ?line "d:/" = filename:join(["D:/"]),
  		  ?line "d:/" = filename:join(["D:\\"]),
  		  "d:/abc" = filename_join("D:/", "abc"),
  		  "d:abc" = filename_join("D:", "abc"),
  		  ?line "a/b/c/d/e/f/g" =
  		      filename:join(["a//b\\c//\\/\\d/\\e/f\\g"]),
  		  ?line "a:usr/foo.erl" =
  		      filename:join(["A:","usr","foo.erl"]),
  		  ?line "/usr/foo.erl" =
  		      filename:join(["A:","/usr","foo.erl"]),
  		  "c:usr" = filename_join("A:","C:usr"),
  		  "a:usr" = filename_join("A:","usr"),
  		  "c:/usr" = filename_join("A:", "C:/usr"),
  		  ?line "c:/usr/foo.erl" =
  		      filename:join(["A:","C:/usr","foo.erl"]),
  		  ?line "c:usr/foo.erl" =
  		      filename:join(["A:","C:usr","foo.erl"]),
  		  ?line "d:/foo" = filename:join([$D, $:, $/, []], "foo"),
  		  ok;
  	      _ ->
  		  ok
  	  end.
  
  %% Make sure join([A,B]) is equivalent to join(A,B) (OTP-12158)
  filename_join(A,B) ->
  
negative.code: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      
  join_bin(Config) when is_list(Config) ->
      <<"/">> = filename:join([<<"/">>]),
      <<"/">> = filename:join([<<"//">>]),
      <<"usr/foo.erl">> = filename:join(<<"usr">>,<<"foo.erl">>),
      <<"/src/foo.erl">> = filename:join(usr, <<"/src/foo.erl">>),
      <<"/src/foo.erl">> = filename:join([<<"/src/">>,'foo.erl']),
      <<"/src/foo.erl">> = filename:join(<<"usr">>, ["/sr", 'c/foo.erl']),
      <<"/src/foo.erl">> = filename:join(<<"usr">>, <<"/src/foo.erl">>),
  
      %% Make sure that redundant slashes work too.
      <<"a/b/c/d/e/f/g">> = filename:join([<<"a//b/c/////d//e/f/g">>]),
      <<"a/b/c/d/e/f/g">> = filename:join([<<"a//b/c/">>, <<"d//e/f/g">>]),
      <<"a/b/c/d/e/f/g">> = filename:join([<<"a//b/c">>, <<"d//e/f/g">>]),
      <<"/d/e/f/g">> = filename:join([<<"a//b/c">>, <<"/d//e/f/g">>]),
      <<"/d/e/f/g">> = filename:join([<<"a//b/c">>, <<"//d//e/f/g">>]),
  
      <<"foo/bar">> = filename:join([$f,$o,$o,$/,[]], <<"bar">>),
  
      %% Single dots - should be removed if in the middle of the path,
      %% but not at the end of the path.
  