summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@lshift.net>2009-03-26 16:27:22 +0000
committerMatthias Radestock <matthias@lshift.net>2009-03-26 16:27:22 +0000
commit4dfb80bf318aee02858c8afc34539826214a12e1 (patch)
treea532d6d7909da8e11246dd20f9a731bcd0c7f66b /src
parentc5086603d1b37f9ca233c9399b6e24d4b92fb94c (diff)
downloadrabbitmq-server-git-4dfb80bf318aee02858c8afc34539826214a12e1.tar.gz
on windows, write to stdout in stderr to avoid buffering
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_misc.erl16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl
index 5730fdc003..b15ad68ef4 100644
--- a/src/rabbit_misc.erl
+++ b/src/rabbit_misc.erl
@@ -372,6 +372,16 @@ ensure_parent_dirs_exist(Filename) ->
end.
format_stderr(Fmt, Args) ->
- Port = open_port({fd, 0, 2}, [out]),
- port_command(Port, io_lib:format(Fmt, Args)),
- port_close(Port).
+ case os:type() of
+ {unix, _} ->
+ Port = open_port({fd, 0, 2}, [out]),
+ port_command(Port, io_lib:format(Fmt, Args)),
+ port_close(Port);
+ {win32, _} ->
+ %% stderr on Windows is buffered and I can't figure out a
+ %% way to trigger a fflush(stderr) in Erlang. So rather
+ %% than risk losing output we write to stdout instead,
+ %% which appears to be unbuffered.
+ io:format(Fmt, Args)
+ end,
+ ok.