@@ -2182,24 +2182,24 @@ pub struct User {
2182
2182
pub expire : libc:: time_t
2183
2183
}
2184
2184
2185
- impl From < libc:: passwd > for User {
2186
- fn from ( pw : libc:: passwd ) -> User {
2185
+ impl From < * mut libc:: passwd > for User {
2186
+ fn from ( pw : * mut libc:: passwd ) -> User {
2187
2187
unsafe {
2188
2188
User {
2189
- name : CStr :: from_ptr ( pw . pw_name ) . to_string_lossy ( ) . into_owned ( ) ,
2190
- passwd : CString :: new ( CStr :: from_ptr ( pw . pw_passwd ) . to_bytes ( ) ) . unwrap ( ) ,
2189
+ name : CStr :: from_ptr ( ( * pw ) . pw_name ) . to_string_lossy ( ) . into_owned ( ) ,
2190
+ passwd : CString :: new ( CStr :: from_ptr ( ( * pw ) . pw_passwd ) . to_bytes ( ) ) . unwrap ( ) ,
2191
2191
#[ cfg( not( target_os = "android" ) ) ]
2192
- gecos : CString :: new ( CStr :: from_ptr ( pw . pw_gecos ) . to_bytes ( ) ) . unwrap ( ) ,
2193
- dir : PathBuf :: from ( OsStr :: from_bytes ( CStr :: from_ptr ( pw . pw_dir ) . to_bytes ( ) ) ) ,
2194
- shell : PathBuf :: from ( OsStr :: from_bytes ( CStr :: from_ptr ( pw . pw_shell ) . to_bytes ( ) ) ) ,
2195
- uid : Uid :: from_raw ( pw . pw_uid ) ,
2196
- gid : Gid :: from_raw ( pw . pw_gid ) ,
2192
+ gecos : CString :: new ( CStr :: from_ptr ( ( * pw ) . pw_gecos ) . to_bytes ( ) ) . unwrap ( ) ,
2193
+ dir : PathBuf :: from ( OsStr :: from_bytes ( CStr :: from_ptr ( ( * pw ) . pw_dir ) . to_bytes ( ) ) ) ,
2194
+ shell : PathBuf :: from ( OsStr :: from_bytes ( CStr :: from_ptr ( ( * pw ) . pw_shell ) . to_bytes ( ) ) ) ,
2195
+ uid : Uid :: from_raw ( ( * pw ) . pw_uid ) ,
2196
+ gid : Gid :: from_raw ( ( * pw ) . pw_gid ) ,
2197
2197
#[ cfg( not( any( target_os = "linux" , target_os = "android" ) ) ) ]
2198
- class : CString :: new ( CStr :: from_ptr ( pw . pw_class ) . to_bytes ( ) ) . unwrap ( ) ,
2198
+ class : CString :: new ( CStr :: from_ptr ( ( * pw ) . pw_class ) . to_bytes ( ) ) . unwrap ( ) ,
2199
2199
#[ cfg( not( any( target_os = "linux" , target_os = "android" ) ) ) ]
2200
- change : pw . pw_change ,
2200
+ change : ( * pw ) . pw_change ,
2201
2201
#[ cfg( not( any( target_os = "linux" , target_os = "android" ) ) ) ]
2202
- expire : pw . pw_expire
2202
+ expire : ( * pw ) . pw_expire
2203
2203
}
2204
2204
}
2205
2205
}
@@ -2216,13 +2216,13 @@ pub struct Group {
2216
2216
pub mem : Vec < String >
2217
2217
}
2218
2218
2219
- impl From < libc:: group > for Group {
2220
- fn from ( gr : libc:: group ) -> Group {
2219
+ impl From < * mut libc:: group > for Group {
2220
+ fn from ( gr : * mut libc:: group ) -> Group {
2221
2221
unsafe {
2222
2222
Group {
2223
- name : CStr :: from_ptr ( gr . gr_name ) . to_string_lossy ( ) . into_owned ( ) ,
2224
- gid : Gid :: from_raw ( gr . gr_gid ) ,
2225
- mem : Group :: members ( gr . gr_mem )
2223
+ name : CStr :: from_ptr ( ( * gr ) . gr_name ) . to_string_lossy ( ) . into_owned ( ) ,
2224
+ gid : Gid :: from_raw ( ( * gr ) . gr_gid ) ,
2225
+ mem : Group :: members ( ( * gr ) . gr_mem )
2226
2226
}
2227
2227
}
2228
2228
}
@@ -2332,20 +2332,24 @@ impl Queryable<UserQuery> for User {
2332
2332
let mut pwd: libc:: passwd = unsafe { mem:: zeroed ( ) } ;
2333
2333
let mut res = ptr:: null_mut ( ) ;
2334
2334
2335
- let i = unsafe {
2336
- Errno :: clear ( ) ;
2335
+ let i = {
2336
+ unsafe { Errno :: clear ( ) ; }
2337
2337
2338
2338
match q {
2339
2339
UserQuery :: UidWithBufsize ( Uid ( uid) , _) |
2340
2340
UserQuery :: Uid ( Uid ( uid) ) => {
2341
- libc:: getpwuid_r ( uid, & mut pwd,
2342
- cbuf. as_mut_ptr ( ) ,
2343
- cbuf. len ( ) , & mut res)
2341
+ unsafe {
2342
+ libc:: getpwuid_r ( uid, & mut pwd,
2343
+ cbuf. as_mut_ptr ( ) ,
2344
+ cbuf. len ( ) , & mut res)
2345
+ }
2344
2346
} ,
2345
2347
UserQuery :: NameWithBufsize ( name, _) |
2346
2348
UserQuery :: Name ( name) => {
2347
- libc:: getpwnam_r ( CString :: new ( name) . unwrap ( ) . as_ptr ( ) ,
2348
- & mut pwd, cbuf. as_mut_ptr ( ) , cbuf. len ( ) , & mut res)
2349
+ unsafe {
2350
+ libc:: getpwnam_r ( CString :: new ( name) . unwrap ( ) . as_ptr ( ) ,
2351
+ & mut pwd, cbuf. as_mut_ptr ( ) , cbuf. len ( ) , & mut res)
2352
+ }
2349
2353
} ,
2350
2354
}
2351
2355
@@ -2354,7 +2358,7 @@ impl Queryable<UserQuery> for User {
2354
2358
match i {
2355
2359
0 => {
2356
2360
if !res. is_null ( ) {
2357
- unsafe { Some ( Ok ( User :: from ( * res) ) ) }
2361
+ Some ( Ok ( User :: from ( res) ) )
2358
2362
} else {
2359
2363
None
2360
2364
}
@@ -2379,20 +2383,24 @@ impl Queryable<GroupQuery> for Group {
2379
2383
let mut grp: libc:: group = unsafe { mem:: zeroed ( ) } ;
2380
2384
let mut res = ptr:: null_mut ( ) ;
2381
2385
2382
- let i = unsafe {
2383
- Errno :: clear ( ) ;
2386
+ let i = {
2387
+ unsafe { Errno :: clear ( ) ; }
2384
2388
2385
2389
match q {
2386
2390
GroupQuery :: GidWithBufsize ( Gid ( gid) , _) |
2387
- GroupQuery :: Gid ( Gid ( gid) ) => {
2388
- libc:: getgrgid_r ( gid, & mut grp,
2389
- cbuf. as_mut_ptr ( ) ,
2390
- cbuf. len ( ) , & mut res)
2391
+ GroupQuery :: Gid ( Gid ( gid) ) => {
2392
+ unsafe {
2393
+ libc:: getgrgid_r ( gid, & mut grp,
2394
+ cbuf. as_mut_ptr ( ) ,
2395
+ cbuf. len ( ) , & mut res)
2396
+ }
2391
2397
} ,
2392
2398
GroupQuery :: NameWithBufsize ( name, _) |
2393
2399
GroupQuery :: Name ( name) => {
2394
- libc:: getgrnam_r ( CString :: new ( name) . unwrap ( ) . as_ptr ( ) ,
2395
- & mut grp, cbuf. as_mut_ptr ( ) , cbuf. len ( ) , & mut res)
2400
+ unsafe {
2401
+ libc:: getgrnam_r ( CString :: new ( name) . unwrap ( ) . as_ptr ( ) ,
2402
+ & mut grp, cbuf. as_mut_ptr ( ) , cbuf. len ( ) , & mut res)
2403
+ }
2396
2404
} ,
2397
2405
}
2398
2406
@@ -2401,7 +2409,7 @@ impl Queryable<GroupQuery> for Group {
2401
2409
match i {
2402
2410
0 => {
2403
2411
if !res. is_null ( ) {
2404
- unsafe { Some ( Ok ( Group :: from ( * res) ) ) }
2412
+ Some ( Ok ( Group :: from ( res) ) )
2405
2413
} else {
2406
2414
None
2407
2415
}
@@ -2480,7 +2488,7 @@ mod usergroupiter {
2480
2488
2481
2489
match i {
2482
2490
0 if !res. is_null ( ) => {
2483
- unsafe { Some ( Ok ( User :: from ( * res) ) ) }
2491
+ Some ( Ok ( User :: from ( res) ) )
2484
2492
} ,
2485
2493
libc:: ERANGE => { Some ( Err ( Error :: Sys ( Errno :: last ( ) ) ) ) } ,
2486
2494
_ => None
@@ -2545,7 +2553,7 @@ mod usergroupiter {
2545
2553
2546
2554
match i {
2547
2555
0 if !res. is_null ( ) => {
2548
- unsafe { Some ( Ok ( Group :: from ( * res) ) ) }
2556
+ Some ( Ok ( Group :: from ( res) ) )
2549
2557
} ,
2550
2558
libc:: ERANGE => { Some ( Err ( Error :: Sys ( Errno :: last ( ) ) ) ) } ,
2551
2559
_ => None
0 commit comments