chiark / gitweb /
systemd-python: wrap sd_login_monitor
[elogind.git] / src / python-systemd / pyutil.c
index 9510acdddbcc76a6dfb072b19dc8c9ac30c102e3..2f047e643ab4f3337e11786c173e54f7611f094c 100644 (file)
@@ -44,3 +44,17 @@ PyObject* absolute_timeout(uint64_t t) {
         return PyLong_FromLong(msec);
     }
 }
+
+int set_error(int r, const char* path, const char* invalid_message) {
+    if (r >= 0)
+        return r;
+    if (r == -EINVAL && invalid_message)
+        PyErr_SetString(PyExc_ValueError, invalid_message);
+    else if (r == -ENOMEM)
+        PyErr_SetString(PyExc_MemoryError, "Not enough memory");
+    else {
+        errno = -r;
+        PyErr_SetFromErrnoWithFilename(PyExc_OSError, path);
+    }
+    return -1;
+}