1
1
// Take a look at the license at the top of the repository in the LICENSE file.
2
2
3
3
#[ cfg( unix) ]
4
- use std:: os:: unix:: io:: { AsRawFd , IntoRawFd , RawFd } ;
4
+ use std:: os:: unix:: io:: { AsFd , AsRawFd , FromRawFd , IntoRawFd , OwnedFd , RawFd } ;
5
5
use std:: { mem, ptr} ;
6
6
7
7
use glib:: { prelude:: * , translate:: * } ;
8
8
#[ cfg( all( not( unix) , docsrs) ) ]
9
- use socket:: { AsRawFd , IntoRawFd , RawFd } ;
9
+ use socket:: { AsFd , AsRawFd , FromRawFd , IntoRawFd , OwnedFd , RawFd } ;
10
10
11
11
use crate :: { ffi, UnixFDList } ;
12
12
@@ -25,12 +25,12 @@ impl UnixFDList {
25
25
26
26
pub trait UnixFDListExtManual : IsA < UnixFDList > + Sized {
27
27
#[ doc( alias = "g_unix_fd_list_append" ) ]
28
- fn append < T : AsRawFd > ( & self , fd : T ) -> Result < i32 , glib:: Error > {
28
+ fn append ( & self , fd : impl AsFd ) -> Result < i32 , glib:: Error > {
29
29
unsafe {
30
30
let mut error = ptr:: null_mut ( ) ;
31
31
let ret = ffi:: g_unix_fd_list_append (
32
32
self . as_ref ( ) . to_glib_none ( ) . 0 ,
33
- fd. as_raw_fd ( ) ,
33
+ fd. as_fd ( ) . as_raw_fd ( ) ,
34
34
& mut error,
35
35
) ;
36
36
if error. is_null ( ) {
@@ -42,12 +42,14 @@ pub trait UnixFDListExtManual: IsA<UnixFDList> + Sized {
42
42
}
43
43
44
44
#[ doc( alias = "g_unix_fd_list_get" ) ]
45
- fn get ( & self , index_ : i32 ) -> Result < RawFd , glib:: Error > {
45
+ fn get ( & self , index_ : i32 ) -> Result < OwnedFd , glib:: Error > {
46
46
unsafe {
47
47
let mut error = ptr:: null_mut ( ) ;
48
- let ret = ffi:: g_unix_fd_list_get ( self . as_ref ( ) . to_glib_none ( ) . 0 , index_, & mut error) ;
48
+ let raw_fd =
49
+ ffi:: g_unix_fd_list_get ( self . as_ref ( ) . to_glib_none ( ) . 0 , index_, & mut error) ;
49
50
if error. is_null ( ) {
50
- Ok ( ret)
51
+ let fd = OwnedFd :: from_raw_fd ( raw_fd) ;
52
+ Ok ( fd)
51
53
} else {
52
54
Err ( from_glib_full ( error) )
53
55
}
0 commit comments