Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Clear errno when throwing an errno exception
[simgrid.git] / include / xbt / system_error.hpp
index 4a2ae7a..4b0bbf2 100644 (file)
@@ -43,6 +43,15 @@ std::error_code errno_code(int errnum)
   return std::error_code(errnum, errno_category());
 }
 
   return std::error_code(errnum, errno_category());
 }
 
+/** Create an `error_code` from `errno` (and clear it) */
+inline
+std::error_code errno_code()
+{
+  int errnum = errno;
+  errno = 0;
+  return errno_code(errnum);
+}
+
 /** Create a `system_error` from an `errno` value
  *
  *  This is expected to to whatever is right to create a
 /** Create a `system_error` from an `errno` value
  *
  *  This is expected to to whatever is right to create a
@@ -60,6 +69,19 @@ std::system_error errno_error(int errnum, const char* what)
   return std::system_error(errno_code(errnum), what);
 }
 
   return std::system_error(errno_code(errnum), what);
 }
 
+/** Create a `system_code` from `errno` (and clear it) */
+inline
+std::system_error errno_error()
+{
+  return std::system_error(errno_code());
+}
+
+inline
+std::system_error errno_error(const char* what)
+{
+  return std::system_error(errno_code(), what);
+}
+
 }
 }
 
 }
 }