浏览代码

Replace getline with fgets since getline does not seems to work properly on Mac OSX

Andy Cedilnik 23 年之前
父节点
当前提交
d1fbb556eb
共有 1 个文件被更改,包括 7 次插入2 次删除
  1. 7 2
      Source/cmakewizard.cxx

+ 7 - 2
Source/cmakewizard.cxx

@@ -18,6 +18,11 @@
 #include "cmake.h"
 #include "cmCacheManager.h"
 
+
+// On Mac OSX getline looks like it is broken, so we have to use
+// fgets. This is why we are including stdio.h.
+#include <stdio.h>
+
 cmakewizard::cmakewizard()
 {
   m_ShowAdvanced = false;
@@ -33,7 +38,7 @@ void cmakewizard::AskUser(const char* key, cmCacheManager::CacheIterator& iter)
   std::cout << "New Value (Enter to keep current value): ";
   char buffer[4096];
   buffer[0] = 0;
-  std::cin.getline(buffer, sizeof(buffer));
+  fgets(buffer, sizeof(buffer)-1, stdin);
   if(buffer[0])
     {
     std::string value = buffer;
@@ -59,7 +64,7 @@ bool cmakewizard::AskAdvanced()
   std::cout << "Would you like to see advanced options? [No]:";  
   char buffer[4096];
   buffer[0] = 0;
-  std::cin.getline(buffer, sizeof(buffer));
+  fgets(buffer, sizeof(buffer)-1, stdin);
   if(buffer[0])
     {
     if(buffer[0] == 'y' || buffer[0] == 'Y')