Commit 5991ab7 1 parent 6dd9ea7 commit 5991ab7 Copy full SHA for 5991ab7
File tree 1 file changed +7
-20
lines changed
src/libstd/sys/unix/backtrace
1 file changed +7
-20
lines changed Original file line number Diff line number Diff line change @@ -104,28 +104,15 @@ pub mod gnu {
104
104
105
105
#[ cfg( any( target_os = "macos" , target_os = "ios" ) ) ]
106
106
pub fn get_executable_filename ( ) -> io:: Result < ( Vec < c_char > , fs:: File ) > {
107
- use ptr;
108
- use slice;
109
- use ffi:: OsStr ;
107
+ use env;
110
108
use os:: unix:: ffi:: OsStrExt ;
111
- use libc:: c_int;
112
109
113
- extern {
114
- fn _NSGetExecutablePath ( buf : * mut c_char ,
115
- bufsize : * mut u32 ) -> c_int ;
116
- }
117
- unsafe {
118
- let mut bufsize: u32 = 0 ;
119
- _NSGetExecutablePath ( ptr:: null_mut ( ) , & mut bufsize) ;
120
- if bufsize == 0 { return Err ( io:: Error :: last_os_error ( ) ) ; }
121
- let mut buffer: Vec < c_char > = Vec :: with_capacity ( bufsize as usize ) ;
122
- let ret = _NSGetExecutablePath ( buffer. as_mut_ptr ( ) , & mut bufsize) ;
123
- if ret != 0 { return Err ( io:: Error :: last_os_error ( ) ) ; }
124
- buffer. set_len ( bufsize as usize ) ;
125
- let file = fs:: File :: open ( OsStr :: from_bytes (
126
- slice:: from_raw_parts ( buffer. as_ptr ( ) as * const u8 , buffer. len ( ) -1 ) ) ) ?;
127
- Ok ( ( buffer, file) )
128
- }
110
+ let filename = env:: current_exe ( ) ?;
111
+ let file = fs:: File :: open ( & filename) ?;
112
+ let mut filename_cstr: Vec < _ > = filename. as_os_str ( ) . as_bytes ( ) . iter ( )
113
+ . map ( |& x| x as c_char ) . collect ( ) ;
114
+ filename_cstr. push ( 0 ) ; // Null terminate
115
+ Ok ( ( filename_cstr, file) )
129
116
}
130
117
}
131
118
You can’t perform that action at this time.
0 commit comments