From ae585729aaf02fa3a3e9f59a17d92d9103fff42f Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 22 Oct 2018 18:08:51 +0300 Subject: [PATCH] Ignore EAGAIN in mkdir (happens in Android). GitOrigin-RevId: 1d5ab4e698de8b74d61d06e84d4ac27d84020e91 --- tdutils/td/utils/port/path.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tdutils/td/utils/port/path.cpp b/tdutils/td/utils/port/path.cpp index 7516dd95..10003328 100644 --- a/tdutils/td/utils/port/path.cpp +++ b/tdutils/td/utils/port/path.cpp @@ -91,7 +91,14 @@ Status rmrf(CSlice path) { #if TD_PORT_POSIX Status mkdir(CSlice dir, int32 mode) { - int mkdir_res = detail::skip_eintr([&] { return ::mkdir(dir.c_str(), static_cast(mode)); }); + int mkdir_res = [&] { + int res; + do { + errno = 0; // just in case + res = ::mkdir(dir.c_str(), static_cast(mode)); + } while (res < 0 && (errno == EINTR || errno == EAGAIN)); + return res; + }(); if (mkdir_res == 0) { return Status::OK(); }