aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/common')
-rw-r--r--src/common/download.cpp14
-rw-r--r--src/common/perf_timer.h4
-rw-r--r--src/common/threadpool.cpp1
-rw-r--r--src/common/updates.cpp2
-rw-r--r--src/common/util.cpp15
5 files changed, 27 insertions, 9 deletions
diff --git a/src/common/download.cpp b/src/common/download.cpp
index f07d6798d..2b6a3f9d3 100644
--- a/src/common/download.cpp
+++ b/src/common/download.cpp
@@ -107,13 +107,17 @@ namespace tools
MINFO("Content-Length: " << length);
content_length = length;
boost::filesystem::path path(control->path);
- boost::filesystem::space_info si = boost::filesystem::space(path);
- if (si.available < (size_t)content_length)
+ try
{
- const uint64_t avail = (si.available + 1023) / 1024, needed = (content_length + 1023) / 1024;
- MERROR("Not enough space to download " << needed << " kB to " << path << " (" << avail << " kB available)");
- return false;
+ boost::filesystem::space_info si = boost::filesystem::space(path);
+ if (si.available < (size_t)content_length)
+ {
+ const uint64_t avail = (si.available + 1023) / 1024, needed = (content_length + 1023) / 1024;
+ MERROR("Not enough space to download " << needed << " kB to " << path << " (" << avail << " kB available)");
+ return false;
+ }
}
+ catch (const std::exception &e) { MWARNING("Failed to check for free space: " << e.what()); }
}
if (offset > 0)
{
diff --git a/src/common/perf_timer.h b/src/common/perf_timer.h
index ea2237348..29a37e655 100644
--- a/src/common/perf_timer.h
+++ b/src/common/perf_timer.h
@@ -84,7 +84,7 @@ void set_performance_timer_log_level(el::Level level);
#define PERF_TIMER_START_UNIT(name, unit) std::unique_ptr<tools::LoggingPerformanceTimer> PERF_TIMER_NAME(name)(new tools::LoggingPerformanceTimer(#name, "perf." MONERO_DEFAULT_LOG_CATEGORY, unit, el::Level::Info))
#define PERF_TIMER_START(name) PERF_TIMER_START_UNIT(name, 1000000)
#define PERF_TIMER_STOP(name) do { PERF_TIMER_NAME(name).reset(NULL); } while(0)
-#define PERF_TIMER_PAUSE(name) PERF_TIMER_NAME(name)->pause()
-#define PERF_TIMER_RESUME(name) PERF_TIMER_NAME(name)->resume()
+#define PERF_TIMER_PAUSE(name) PERF_TIMER_NAME(name).pause()
+#define PERF_TIMER_RESUME(name) PERF_TIMER_NAME(name).resume()
}
diff --git a/src/common/threadpool.cpp b/src/common/threadpool.cpp
index 18204eeee..753bf238c 100644
--- a/src/common/threadpool.cpp
+++ b/src/common/threadpool.cpp
@@ -71,6 +71,7 @@ void threadpool::recycle() {
}
void threadpool::create(unsigned int max_threads) {
+ const boost::unique_lock<boost::mutex> lock(mutex);
boost::thread::attributes attrs;
attrs.set_stack_size(THREAD_STACK_SIZE);
max = max_threads ? max_threads : tools::get_max_concurrency();
diff --git a/src/common/updates.cpp b/src/common/updates.cpp
index 0bc6ff63c..f620bb53a 100644
--- a/src/common/updates.cpp
+++ b/src/common/updates.cpp
@@ -101,7 +101,7 @@ namespace tools
{
const char *base = user ? "https://downloads.getmonero.org/" : "https://updates.getmonero.org/";
#ifdef _WIN32
- static const char *extension = strncmp(buildtag.c_str(), "install-", 8) ? ".zip" : ".exe";
+ static const char *extension = strncmp(buildtag.c_str(), "source", 6) ? (strncmp(buildtag.c_str(), "install-", 8) ? ".zip" : ".exe") : ".tar.bz2";
#else
static const char extension[] = ".tar.bz2";
#endif
diff --git a/src/common/util.cpp b/src/common/util.cpp
index 57e747837..747235646 100644
--- a/src/common/util.cpp
+++ b/src/common/util.cpp
@@ -1239,7 +1239,7 @@ std::string get_nix_version_display_string()
return get_string_prefix_by_width(s, 999999999).second;
};
- std::vector<std::pair<std::string, size_t>> split_string_by_width(const std::string &s, size_t columns)
+ std::vector<std::pair<std::string, size_t>> split_line_by_width(const std::string &s, size_t columns)
{
std::vector<std::string> words;
std::vector<std::pair<std::string, size_t>> lines;
@@ -1279,4 +1279,17 @@ std::string get_nix_version_display_string()
return lines;
}
+ std::vector<std::pair<std::string, size_t>> split_string_by_width(const std::string &s, size_t columns)
+ {
+ std::vector<std::string> lines;
+ std::vector<std::pair<std::string, size_t>> all_lines;
+ boost::split(lines, s, boost::is_any_of("\n"), boost::token_compress_on);
+ for (const auto &e: lines)
+ {
+ std::vector<std::pair<std::string, size_t>> new_lines = split_line_by_width(e, columns);
+ for (auto &l: new_lines)
+ all_lines.push_back(std::move(l));
+ }
+ return all_lines;
+ }
}