2009-02-22 21:47:54 +03:00
/*
Unix SMB / CIFS implementation .
Wrap unix errno around tevent_req
Copyright ( C ) Volker Lendecke 2009
2009-05-29 20:28:36 +04:00
* * NOTE ! The following LGPL license applies to the tevent_unix
* * helper library . This does NOT imply that all of Samba is released
* * under the LGPL
2009-02-22 21:47:54 +03:00
2009-05-29 20:28:36 +04:00
This library is free software ; you can redistribute it and / or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation ; either
version 3 of the License , or ( at your option ) any later version .
This library is distributed in the hope that it will be useful ,
2009-02-22 21:47:54 +03:00
but WITHOUT ANY WARRANTY ; without even the implied warranty of
2009-05-29 20:28:36 +04:00
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
Library General Public License for more details .
2009-02-22 21:47:54 +03:00
2009-05-29 20:28:36 +04:00
You should have received a copy of the GNU Lesser General Public License
2009-02-22 21:47:54 +03:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# include "../replace/replace.h"
2010-09-22 06:08:40 +04:00
# include "tevent_unix.h"
2009-02-22 21:47:54 +03:00
bool tevent_req_is_unix_error ( struct tevent_req * req , int * perrno )
{
enum tevent_req_state state ;
uint64_t err ;
if ( ! tevent_req_is_error ( req , & state , & err ) ) {
return false ;
}
switch ( state ) {
case TEVENT_REQ_TIMED_OUT :
* perrno = ETIMEDOUT ;
break ;
case TEVENT_REQ_NO_MEMORY :
* perrno = ENOMEM ;
break ;
case TEVENT_REQ_USER_ERROR :
* perrno = err ;
break ;
default :
* perrno = EINVAL ;
break ;
}
return true ;
}
2014-11-08 12:00:31 +03:00
int tevent_req_simple_recv_unix ( struct tevent_req * req )
{
int err = 0 ;
/*
* Ignore result of tevent_req_is_unix_error , we ' re only interested in
* the status
*/
tevent_req_is_unix_error ( req , & err ) ;
tevent_req_received ( req ) ;
return err ;
}
2014-07-09 16:50:24 +04:00
bool tevent_req_poll_unix ( struct tevent_req * req , struct tevent_context * ev ,
int * err )
{
bool ret = tevent_req_poll ( req , ev ) ;
if ( ! ret ) {
* err = errno ;
}
return ret ;
}