Merge pull request #133 from hughbe/ninjabuild-command-consolidate

Consolidate common code between NinjaBuildCommand.cpp and LaneBasedExecutionQueue.cpp
diff --git a/.gitignore b/.gitignore
index 9815d1a..c50f022 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,3 +25,6 @@
 # Don't check in Xcode user data.
 xcuserdata
 
+# Visual Studio cache/options directory
+.vs/
+
diff --git a/lib/Basic/PlatformUtility.cpp b/lib/Basic/PlatformUtility.cpp
index fba346f..2498e96 100644
--- a/lib/Basic/PlatformUtility.cpp
+++ b/lib/Basic/PlatformUtility.cpp
@@ -106,7 +106,13 @@
 
 int sys::symlink(const char *source, const char *target) {
 #if defined(_WIN32)
-  return ::_symlink(source, target);
+  DWORD attributes = GetFileAttributesA(source);
+  if (attributes != INVALID_FILE_ATTRIBUTES &&
+      (attributes & FILE_ATTRIBUTE_DIRECTORY) != 0) {
+    return ::CreateSymbolicLinkA(source, target, SYMBOLIC_LINK_FLAG_DIRECTORY);
+  }
+
+  return ::CreateSymbolicLinkA(source, target, 0);
 #else
   return ::symlink(source, target);
 #endif