-/* Copyright (c) 2016. The SimGrid Team.
+/* Copyright (c) 2016-2021. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
/** A `error_category` suitable to be used with `errno`
*
* It is not clear which error we are supposed to generate
- * when getting a errno:
+ * when getting an errno:
*
* * `system_error` clearly cannot be used for this on Windows;
*
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
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);
+}
+
}
}