win: Make console output work on cygwin.
authorCheng Zhao <zcbenz@gmail.com>
Tue, 19 Nov 2013 12:56:22 +0000 (20:56 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Tue, 19 Nov 2013 12:56:22 +0000 (20:56 +0800)
app/atom_main.cc

index 5795418..2b0366d 100644 (file)
@@ -34,15 +34,19 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd, int) {
   int argc = 0;
   wchar_t** wargv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
 
-  // Attach to the parent console if we've got one so that stdio works
-  AttachConsole(ATTACH_PARENT_PROCESS);
+  scoped_ptr<base::Environment> env(base::Environment::Create());
 
-  FILE* dontcare;
-  freopen_s(&dontcare, "CON", "w", stdout);
-  freopen_s(&dontcare, "CON", "w", stderr);
-  freopen_s(&dontcare, "CON", "r", stdin);
+  // Make output work in console if we are not in cygiwn.
+  std::string os;
+  if (env->GetVar("OS", &os) && os != "cygwin") {
+    AttachConsole(ATTACH_PARENT_PROCESS);
+
+    FILE* dontcare;
+    freopen_s(&dontcare, "CON", "w", stdout);
+    freopen_s(&dontcare, "CON", "w", stderr);
+    freopen_s(&dontcare, "CON", "r", stdin);
+  }
 
-  scoped_ptr<base::Environment> env(base::Environment::Create());
   std::string node_indicator;
   if (env->GetVar("ATOM_SHELL_INTERNAL_RUN_AS_NODE", &node_indicator) &&
       node_indicator == "1") {