initial code repo
[stor4nfv.git] / src / ceph / src / common / errno.cc
diff --git a/src/ceph/src/common/errno.cc b/src/ceph/src/common/errno.cc
new file mode 100644 (file)
index 0000000..69e5425
--- /dev/null
@@ -0,0 +1,28 @@
+#include "common/errno.h"
+#include "acconfig.h"
+
+#include <sstream>
+#include <string.h>
+
+std::string cpp_strerror(int err)
+{
+  char buf[128];
+  char *errmsg;
+
+  if (err < 0)
+    err = -err;
+  std::ostringstream oss;
+  buf[0] = '\0';
+
+  // strerror_r returns char * on Linux, and does not always fill buf
+#ifdef STRERROR_R_CHAR_P
+  errmsg = strerror_r(err, buf, sizeof(buf));
+#else
+  strerror_r(err, buf, sizeof(buf));
+  errmsg = buf;
+#endif
+
+  oss << "(" << err << ") " << errmsg;
+
+  return oss.str();
+}