diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-13 11:00:00 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-13 11:00:00 +0100 |
| commit | 31beb216a8a8cd2fc2bc21999c61be9c73394937 (patch) | |
| tree | 1df5d18b5e3804c9916d35572219f2c935c9ae16 /src | |
| parent | 9aa762dce663ce40df3a890a88d23b4df734e5ae (diff) | |
| parent | 090eee48366f13314f7b86584c0a7977f322d96a (diff) | |
| download | rabbitmq-server-git-31beb216a8a8cd2fc2bc21999c61be9c73394937.tar.gz | |
merge default into bug23596
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_misc.erl | 8 | ||||
| -rw-r--r-- | src/rabbit_prelaunch.erl | 36 |
2 files changed, 11 insertions, 33 deletions
diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index ae28722ab2..0b39a20927 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -749,7 +749,7 @@ recursive_delete(Files) -> end, ok, Files). recursive_delete1(Path) -> - case filelib:is_dir(Path) of + case filelib:is_dir(Path) and not(is_symlink(Path)) of false -> case file:delete(Path) of ok -> ok; {error, enoent} -> ok; %% Path doesn't exist anyway @@ -777,6 +777,12 @@ recursive_delete1(Path) -> end end. +is_symlink(Name) -> + case file:read_link(Name) of + {ok, _} -> true; + _ -> false + end. + recursive_copy(Src, Dest) -> case filelib:is_dir(Src) of false -> case file:copy(Src, Dest) of diff --git a/src/rabbit_prelaunch.erl b/src/rabbit_prelaunch.erl index 92829e4918..2c095aaad5 100644 --- a/src/rabbit_prelaunch.erl +++ b/src/rabbit_prelaunch.erl @@ -136,38 +136,10 @@ determine_version(App) -> {App, Vsn}. delete_recursively(Fn) -> - case filelib:is_dir(Fn) and not(is_symlink(Fn)) of - true -> - case file:list_dir(Fn) of - {ok, Files} -> - case lists:foldl(fun ( Fn1, ok) -> delete_recursively( - Fn ++ "/" ++ Fn1); - (_Fn1, Err) -> Err - end, ok, Files) of - ok -> case file:del_dir(Fn) of - ok -> ok; - {error, E} -> {error, - {cannot_delete, Fn, E}} - end; - Err -> Err - end; - {error, E} -> - {error, {cannot_list_files, Fn, E}} - end; - false -> - case filelib:is_file(Fn) of - true -> case file:delete(Fn) of - ok -> ok; - {error, E} -> {error, {cannot_delete, Fn, E}} - end; - false -> ok - end - end. - -is_symlink(Name) -> - case file:read_link(Name) of - {ok, _} -> true; - _ -> false + case rabbit_misc:recursive_delete([Fn]) of + ok -> ok; + {error, {Path, E}} -> {error, {cannot_delete, Path, E}}; + Error -> Error end. unpack_ez_plugins(SrcDir, DestDir) -> |
