anchor.diff:  %% ===================================================================
   
   %% -------------------------------------------------------------------
  -%% @spec full_path(Uri) ->
  -%%				FullPath |
  -%%				undefined
  -%% @doc Get the full path for the specified uri.
  -%% @end
  -%% -------------------------------------------------------------------
  -full_path(Uri) when is_list(Uri) ->
  +%% @spec get_fs_path(Uri) ->
  +%%				FsPath |
  +%%				undefined
  +%% @doc Get the relative filesystem path for the Uri.
  +%% @end
  +%% -------------------------------------------------------------------
  +get_fs_path(Uri) when is_list(Uri) ->
   	case cleanup(Uri) of
   		undefined ->
   			undefined;
   		CleanUri ->
  -			filename:join([filename:absname(""), priv, CleanUri])
  -	end.
  -
  -
  -%% -------------------------------------------------------------------
  -%% @spec full_path(Subdir, Uri) ->
  +			FsPrefix = app_util:get_env(sws, www_root, priv),
  +			filename:join([FsPrefix, CleanUri])
  +	end.
  +
  +
  +%% -------------------------------------------------------------------
  +%% @spec get_fs_path(SubDir, Uri) ->
   %%				FullPath |
   %%				undefined
  -%% @doc Get the full path for the specified sub directory and uri.
  -%% @end
  -%% -------------------------------------------------------------------
  -full_path(SubDir, Uri) when is_list(SubDir), is_list(Uri) ->
  +%% @doc Get the relative filesystem path for SubDir and Uri.
  +%% @end
  +%% -------------------------------------------------------------------
  +get_fs_path(SubDir, Uri) when is_list(SubDir), is_list(Uri) ->
   	case cleanup(SubDir) of
   		undefined ->
   			undefined;
  
positive.code: 				undefined ->
  					undefined;
  				CleanUri ->
  					filename:join([filename:absname(""), priv, CleanSubDir, CleanUri])
  			end
  	end.
  
  
negative.code: 
  
  page_full_path_test() ->
  	?assertEqual(filename:join([priv, "pages/home.html"]), page_full_path([])),
  	?assertEqual(filename:join([priv, "pages/home.html"]), page_full_path(undefined)),
  	?assertEqual(filename:join([priv, "pages/home.html"]), page_full_path("")),
  	?assertEqual(filename:join([priv, "pages/home.html"]), page_full_path("/")),
  	?assertEqual(filename:join([priv, "pages/home.html"]), page_full_path("/home")),
  	?assertEqual(filename:join([priv, "pages/docs.html"]), page_full_path("/docs")),
  	?assertEqual(filename:join([priv, "pages/docs/index.html"]), page_full_path("/docs/")),
  	?assertEqual(filename:join([priv, "pages/doc/toc.html"]), page_full_path("/doc/toc")),
  	?assertEqual(undefined, page_full_path("/../home")),
  	?assertEqual(undefined, page_full_path("../home")).
  
  
  static_full_path_test() ->
  	?assertEqual(filename:join([priv, "lib/css/site.css"]), static_full_path("/lib/css/site.css", lib)),
  	?assertEqual(filename:join([priv, "lib/css/site.css"]), static_full_path("lib/css/site.css", lib)),
  	?assertEqual(filename:join([priv, "lib/image/logo.jpg"]), static_full_path("/lib/image/logo.jpg", lib)),
  	?assertEqual(filename:join([priv, "lib/image/logo.jpg"]), static_full_path("lib/image/logo.jpg", lib)),
  	?assertEqual(filename:join([priv, "lib/js/test.js"]), static_full_path("/lib/js/test.js", lib)),
  	?assertEqual(filename:join([priv, "lib/js/test.js"]), static_full_path("lib/js/test.js", lib)),
  	?assertEqual(filename:join([priv, "files/test.jpg"]), static_full_path("/files/test.jpg", file)),
  	?assertEqual(filename:join([priv, "files/test.jpg"]), static_full_path("files/test.jpg", file)),
  	?assertEqual(filename:join([priv, "files/doc/doc.doc"]), static_full_path("/files/doc/doc.doc", file)),
  	?assertEqual(filename:join([priv, "files/doc/doc.doc"]), static_full_path("files/doc/doc.doc", file)),
  	?assertEqual(filename:join([priv, "misc/favicon.ico"]), static_full_path("/favicon.ico", misc)),
  	?assertEqual(filename:join([priv, "misc/favicon.ico"]), static_full_path("favicon.ico", misc)),
  	?assertEqual(filename:join([priv, "misc/robots.txt"]), static_full_path("/robots.txt", misc)),
  	?assertEqual(filename:join([priv, "misc/robots.txt"]), static_full_path("robots.txt", misc)),
  	?assertEqual(undefined, static_full_path("/../files/test.jpg", file)),
  	?assertEqual(undefined, static_full_path("/files/test.jpg", foobar)).
  
  
  template_full_path_test() ->
  	?assertEqual(filename:join([priv, "templates"]), template_full_path()).
  
  
  get_fs_path_test() ->
  	% get_fs_path/1
  	?assertEqual(filename:join([priv, "home"]), get_fs_path("/home")),
  	?assertEqual(filename:join([priv, "home"]), get_fs_path("home")),
  	?assertEqual(filename:join([priv, "home/dir"]), get_fs_path("/home/dir")),
  	?assertEqual(undefined, get_fs_path("/../home")),
  	?assertEqual(undefined, get_fs_path("../home")),
  	% get_fs_path/2
  	?assertEqual(filename:join([priv, "files/home"]), get_fs_path("files", "/home")),
  	?assertEqual(filename:join([priv, "files/home"]), get_fs_path("files", "home")),
  	?assertEqual(filename:join([priv, "files/home/dir"]), get_fs_path("files", "/home/dir")),
  	?assertEqual(undefined, get_fs_path("files", "/../home")),
  	?assertEqual(undefined, get_fs_path("files", "../home")).
  
  
  cleanup_test() ->
  