summaryrefslogtreecommitdiff
path: root/node/Utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/Utils.cpp')
-rw-r--r--node/Utils.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/node/Utils.cpp b/node/Utils.cpp
index b9db07b9..7b2a17af 100644
--- a/node/Utils.cpp
+++ b/node/Utils.cpp
@@ -28,6 +28,7 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <stdarg.h>
#include "Utils.hpp"
#include "Mutex.hpp"
@@ -530,4 +531,20 @@ std::string Utils::trim(const std::string &s)
return s.substr(start,end - start);
}
+void Utils::stdsprintf(std::string &s,const char *fmt,...)
+ throw(std::bad_alloc,std::length_error)
+{
+ char buf[65536];
+ va_list ap;
+
+ va_start(ap,fmt);
+ int n = vsnprintf(buf,sizeof(buf),fmt,ap);
+ va_end(ap);
+
+ if ((n >= (int)sizeof(buf))||(n < 0))
+ throw std::length_error("printf result too large");
+
+ s.append(buf);
+}
+
} // namespace ZeroTier