summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJan Klötzke <jan.kloetzke@freenet.de>2011-08-25 19:55:26 +0200
committerTuncer Ayaz <tuncer.ayaz@gmail.com>2011-09-02 19:40:30 +0200
commit3fa6f6ab7caaa8d797df9717ce7239096a2851a9 (patch)
tree5bb46587b25ff896625bc53439722496b584e5ab /src
parent3ceabfa47c0f9a6f0b537b563f5539079b67fa89 (diff)
Quote paths before passing them to the shell
Diffstat (limited to 'src')
-rw-r--r--src/rebar_file_utils.erl15
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