Use shell=False on non-Windows for gn-format.py

I don't exactly know why, but it wouldn't work for me on Mac with
shell=True. (I guess there must be few users other than me as no one
else noticed I guess.)

R=thakis@chromium.org

Review-Url: https://codereview.chromium.org/2296633003
Cr-Original-Commit-Position: refs/heads/master@{#415416}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 38182d4aa014f32cb1298a230514dea181b1b1c0
diff --git a/tools/gn/bin/gn-format.py b/tools/gn/bin/gn-format.py
index 4769640..561c76c 100644
--- a/tools/gn/bin/gn-format.py
+++ b/tools/gn/bin/gn-format.py
@@ -27,18 +27,19 @@
   buf = vim.current.buffer
   text = '\n'.join(buf)
 
+  is_win = sys.platform.startswith('win32')
   # Avoid flashing an ugly cmd prompt on Windows when invoking gn.
   startupinfo = None
-  if sys.platform.startswith('win32'):
+  if is_win:
     startupinfo = subprocess.STARTUPINFO()
     startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
     startupinfo.wShowWindow = subprocess.SW_HIDE
 
-  # Call formatter.
+  # Call formatter. Needs shell=True on Windows due to gn.bat in depot_tools.
   p = subprocess.Popen([binary, 'format', '--stdin'],
                        stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                        stdin=subprocess.PIPE, startupinfo=startupinfo,
-                       shell=True, universal_newlines=True)
+                       shell=is_win, universal_newlines=True)
   stdout, stderr = p.communicate(input=text)
   if p.returncode != 0:
     print 'Formatting failed, please report to gn-dev@chromium.org.'