1/*
2   Unix SMB/CIFS implementation.
3   Wrap unix errno around tevent_req
4   Copyright (C) Volker Lendecke 2009
5
6     ** NOTE! The following LGPL license applies to the tevent_unix
7     ** helper library. This does NOT imply that all of Samba is released
8     ** under the LGPL
9
10   This library is free software; you can redistribute it and/or
11   modify it under the terms of the GNU Lesser General Public
12   License as published by the Free Software Foundation; either
13   version 3 of the License, or (at your option) any later version.
14
15   This library is distributed in the hope that it will be useful,
16   but WITHOUT ANY WARRANTY; without even the implied warranty of
17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18   Library General Public License for more details.
19
20   You should have received a copy of the GNU Lesser General Public License
21   along with this program.  If not, see <http://www.gnu.org/licenses/>.
22*/
23
24#include "tevent_unix.h"
25#include "../replace/replace.h"
26
27bool tevent_req_is_unix_error(struct tevent_req *req, int *perrno)
28{
29	enum tevent_req_state state;
30	uint64_t err;
31
32	if (!tevent_req_is_error(req, &state, &err)) {
33		return false;
34	}
35	switch (state) {
36	case TEVENT_REQ_TIMED_OUT:
37		*perrno = ETIMEDOUT;
38		break;
39	case TEVENT_REQ_NO_MEMORY:
40		*perrno = ENOMEM;
41		break;
42	case TEVENT_REQ_USER_ERROR:
43		*perrno = err;
44		break;
45	default:
46		*perrno = EINVAL;
47		break;
48	}
49	return true;
50}
51