From 20fcbf2a05ee6542aba942f6006d149db70fb9ce Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 2 Sep 2017 10:03:37 -0700
Subject: [PATCH 02/10] Use long long instead of int64_t

Fixes
error: call to member function 'appendNumber' is ambiguous
since this function expects long long as parameter and not int64_t

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 src/mongo/util/procparser.cpp | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/mongo/util/procparser.cpp b/src/mongo/util/procparser.cpp
index c574a3f..5ea66b7 100644
--- a/src/mongo/util/procparser.cpp
+++ b/src/mongo/util/procparser.cpp
@@ -261,7 +261,7 @@ Status parseProcStat(const std::vector<StringData>& keys,
 
                     StringData stringValue((*partIt).begin(), (*partIt).end() - (*partIt).begin());
 
-                    uint64_t value;
+                    long long  value;
 
                     if (!parseNumberFromString(stringValue, &value).isOK()) {
                         value = 0;
@@ -273,7 +273,7 @@ Status parseProcStat(const std::vector<StringData>& keys,
             } else {
                 StringData stringValue((*partIt).begin(), (*partIt).end() - (*partIt).begin());
 
-                uint64_t value;
+                long long value;
 
                 if (!parseNumberFromString(stringValue, &value).isOK()) {
                     value = 0;
@@ -366,7 +366,7 @@ Status parseProcMemInfo(const std::vector<StringData>& keys,
 
             StringData stringValue((*partIt).begin(), (*partIt).end());
 
-            uint64_t value;
+            long long value;
 
             if (!parseNumberFromString(stringValue, &value).isOK()) {
                 value = 0;
@@ -522,7 +522,7 @@ Status parseProcDiskStats(const std::vector<StringData>& disks,
                           StringData data,
                           BSONObjBuilder* builder) {
     bool foundKeys = false;
-    std::vector<uint64_t> stats;
+    std::vector<long long> stats;
     stats.reserve(kDiskFieldCount);
 
     using string_split_iterator = boost::split_iterator<StringData::const_iterator>;
@@ -597,7 +597,7 @@ Status parseProcDiskStats(const std::vector<StringData>& disks,
 
                 StringData stringValue((*partIt).begin(), (*partIt).end());
 
-                uint64_t value;
+                long long value;
 
                 if (!parseNumberFromString(stringValue, &value).isOK()) {
                     value = 0;
-- 
2.7.4

