@@ -116,8 +116,7 @@ pub fn chdir(p: &Path) -> IoResult<()> {
116
116
}
117
117
118
118
pub struct SplitPaths < ' a > {
119
- iter : iter:: Map < & ' a [ u8 ] , Path ,
120
- slice:: Split < ' a , u8 , fn ( & u8 ) -> bool > ,
119
+ iter : iter:: Map < slice:: Split < ' a , u8 , fn ( & u8 ) -> bool > ,
121
120
fn ( & ' a [ u8 ] ) -> Path > ,
122
121
}
123
122
@@ -450,7 +449,16 @@ pub fn temp_dir() -> Path {
450
449
}
451
450
452
451
pub fn home_dir ( ) -> Option < Path > {
453
- getenv ( "HOME" . as_os_str ( ) ) . or_else ( || unsafe {
452
+ return getenv ( "HOME" . as_os_str ( ) ) . or_else ( || unsafe {
453
+ fallback ( )
454
+ } ) . map ( |os| {
455
+ Path :: new ( os. into_vec ( ) )
456
+ } ) ;
457
+
458
+ #[ cfg( target_os = "android" ) ]
459
+ unsafe fn fallback ( ) -> Option < OsString > { None }
460
+ #[ cfg( not( target_os = "android" ) ) ]
461
+ unsafe fn fallback ( ) -> Option < OsString > {
454
462
let mut amt = match libc:: sysconf ( c:: _SC_GETPW_R_SIZE_MAX) {
455
463
n if n < 0 => 512 as usize ,
456
464
n => n as usize ,
@@ -470,7 +478,5 @@ pub fn home_dir() -> Option<Path> {
470
478
let bytes = ffi:: c_str_to_bytes ( & ptr) . to_vec ( ) ;
471
479
return Some ( OsStringExt :: from_vec ( bytes) )
472
480
}
473
- } ) . map ( |os| {
474
- Path :: new ( os. into_vec ( ) )
475
- } )
481
+ }
476
482
}
0 commit comments