11// Take a look at the license at the top of the repository in the LICENSE file.
22
33#[ cfg( unix) ]
4- use std:: os:: unix:: io:: { AsRawFd , IntoRawFd , RawFd } ;
4+ use std:: os:: unix:: io:: { AsFd , AsRawFd , FromRawFd , IntoRawFd , OwnedFd , RawFd } ;
55use std:: { mem, ptr} ;
66
77use glib:: { prelude:: * , translate:: * } ;
88#[ cfg( all( not( unix) , docsrs) ) ]
9- use socket:: { AsRawFd , IntoRawFd , RawFd } ;
9+ use socket:: { AsFd , AsRawFd , FromRawFd , IntoRawFd , OwnedFd , RawFd } ;
1010
1111use crate :: { ffi, UnixFDList } ;
1212
@@ -25,12 +25,12 @@ impl UnixFDList {
2525
2626pub trait UnixFDListExtManual : IsA < UnixFDList > + Sized {
2727 #[ 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 > {
2929 unsafe {
3030 let mut error = ptr:: null_mut ( ) ;
3131 let ret = ffi:: g_unix_fd_list_append (
3232 self . as_ref ( ) . to_glib_none ( ) . 0 ,
33- fd. as_raw_fd ( ) ,
33+ fd. as_fd ( ) . as_raw_fd ( ) ,
3434 & mut error,
3535 ) ;
3636 if error. is_null ( ) {
@@ -42,12 +42,14 @@ pub trait UnixFDListExtManual: IsA<UnixFDList> + Sized {
4242 }
4343
4444 #[ 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 > {
4646 unsafe {
4747 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) ;
4950 if error. is_null ( ) {
50- Ok ( ret)
51+ let fd = OwnedFd :: from_raw_fd ( raw_fd) ;
52+ Ok ( fd)
5153 } else {
5254 Err ( from_glib_full ( error) )
5355 }
0 commit comments