Introduce tevent_req_poll_ntstatus
authorVolker Lendecke <vl@samba.org>
Sat, 14 Nov 2009 09:01:44 +0000 (10:01 +0100)
committerVolker Lendecke <vl@samba.org>
Sat, 14 Nov 2009 10:03:28 +0000 (11:03 +0100)
lib/util/tevent_ntstatus.c
lib/util/tevent_ntstatus.h

index 4be45754994fd1eef1a982510cb62131e83ab48d..e6b37f64b6084169fd3e776a38f3d752e38f598f 100644 (file)
@@ -74,3 +74,20 @@ void tevent_req_simple_finish_ntstatus(struct tevent_req *subreq,
        }
        tevent_req_done(req);
 }
+
+/*
+ * We have to declare map_nt_error_from_unix here, both s3 and s4 have their
+ * (different) implementations of it.
+ */
+NTSTATUS map_nt_error_from_unix(int sys_errno);
+
+bool tevent_req_poll_ntstatus(struct tevent_req *req,
+                             struct tevent_context *ev,
+                             NTSTATUS *status)
+{
+       bool ret = tevent_req_poll(req, ev);
+       if (!ret) {
+               *status = map_nt_error_from_unix(errno);
+       }
+       return ret;
+}
index 4cf593a454ad9f66a23bd70667a7629ba098deb8..7f312b707bde14808be919dc755c9795f3fad22a 100644 (file)
@@ -36,4 +36,12 @@ NTSTATUS tevent_req_simple_recv_ntstatus(struct tevent_req *req);
 void tevent_req_simple_finish_ntstatus(struct tevent_req *subreq,
                                       NTSTATUS subreq_status);
 
+/*
+ * Wrapper for tevent_req_poll that grabs NTSTATUS directly in case of a
+ * failure
+ */
+bool tevent_req_poll_ntstatus(struct tevent_req *req,
+                             struct tevent_context *ev,
+                             NTSTATUS *status);
+
 #endif