@@ -116,8 +116,7 @@ pub fn chdir(p: &Path) -> IoResult<()> {
116116}
117117
118118pub 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 > ,
121120 fn ( & ' a [ u8 ] ) -> Path > ,
122121}
123122
@@ -450,7 +449,16 @@ pub fn temp_dir() -> Path {
450449}
451450
452451pub 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 > {
454462 let mut amt = match libc:: sysconf ( c:: _SC_GETPW_R_SIZE_MAX) {
455463 n if n < 0 => 512 as usize ,
456464 n => n as usize ,
@@ -470,7 +478,5 @@ pub fn home_dir() -> Option<Path> {
470478 let bytes = ffi:: c_str_to_bytes ( & ptr) . to_vec ( ) ;
471479 return Some ( OsStringExt :: from_vec ( bytes) )
472480 }
473- } ) . map ( |os| {
474- Path :: new ( os. into_vec ( ) )
475- } )
481+ }
476482}
0 commit comments