diff options
author | Jan Klötzke <jan.kloetzke@freenet.de> | 2011-08-25 19:55:26 +0200 |
---|---|---|
committer | Tuncer Ayaz <tuncer.ayaz@gmail.com> | 2011-09-02 19:40:30 +0200 |
commit | 3fa6f6ab7caaa8d797df9717ce7239096a2851a9 (patch) | |
tree | 5bb46587b25ff896625bc53439722496b584e5ab /src | |
parent | 3ceabfa47c0f9a6f0b537b563f5539079b67fa89 (diff) |
Quote paths before passing them to the shell
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar_file_utils.erl | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/rebar_file_utils.erl b/src/rebar_file_utils.erl index 56877e3..af0b5d3 100644 --- a/src/rebar_file_utils.erl +++ b/src/rebar_file_utils.erl @@ -43,7 +43,9 @@ rm_rf(Target) -> case os:type() of {unix, _} -> - {ok, []} = rebar_utils:sh(?FMT("rm -rf ~s", [Target]), + EscTarget = re:replace(Target, " ", "\\\\ ", + [global, {return, list}]), + {ok, []} = rebar_utils:sh(?FMT("rm -rf ~s", [EscTarget]), [{use_stdout, false}, return_on_error]), ok; {win32, _} -> @@ -60,7 +62,8 @@ cp_r(Sources, Dest) -> case os:type() of {unix, _} -> SourceStr = string:join(Sources, " "), - {ok, []} = rebar_utils:sh(?FMT("cp -R ~s ~s", [SourceStr, Dest]), + {ok, []} = rebar_utils:sh(?FMT("cp -R \"~s\" \"~s\"", + [SourceStr, Dest]), [{use_stdout, false}, return_on_error]), ok; {win32, _} -> @@ -72,12 +75,12 @@ cp_r(Sources, Dest) -> mv(Source, Dest) -> case os:type() of {unix, _} -> - {ok, []} = rebar_utils:sh(?FMT("mv ~s ~s", [Source, Dest]), + {ok, []} = rebar_utils:sh(?FMT("mv \"~s\" \"~s\"", [Source, Dest]), [{use_stdout, false}, return_on_error]), ok; {win32, _} -> {ok, R} = rebar_utils:sh( - ?FMT("cmd " "/c move /y ~s ~s 1> nul", + ?FMT("cmd " "/c move /y \"~s\" \"~s\" 1> nul", [filename:nativename(Source), filename:nativename(Dest)]), [{use_stdout, false}, return_on_error]), @@ -110,14 +113,14 @@ delete_each([File | Rest]) -> delete_each_dir_win32([]) -> ok; delete_each_dir_win32([Dir | Rest]) -> - {ok, []} = rebar_utils:sh(?FMT("cmd /c rd /q /s ~s", + {ok, []} = rebar_utils:sh(?FMT("cmd /c rd /q /s \"~s\"", [filename:nativename(Dir)]), [{use_stdout, false}, return_on_error]), delete_each_dir_win32(Rest). xcopy_win32(Source,Dest)-> {ok, R} = rebar_utils:sh( - ?FMT("cmd /c xcopy ~s ~s /q /y /e 2> nul", + ?FMT("cmd /c xcopy \"~s\" \"~s\" /q /y /e 2> nul", [filename:nativename(Source), filename:nativename(Dest)]), [{use_stdout, false}, return_on_error]), case length(R) > 0 of |