File tree 3 files changed +14
-15
lines changed 3 files changed +14
-15
lines changed Original file line number Diff line number Diff line change @@ -39,14 +39,14 @@ impl ArchiveRO {
39
39
///
40
40
/// If this archive is used with a mutable method, then an error will be
41
41
/// raised.
42
- pub fn open ( dst : & Path ) -> Option < ArchiveRO > {
42
+ pub fn open ( dst : & Path ) -> Result < ArchiveRO , String > {
43
43
return unsafe {
44
44
let s = path2cstr ( dst) ;
45
45
let ar = :: LLVMRustOpenArchive ( s. as_ptr ( ) ) ;
46
46
if ar. is_null ( ) {
47
- None
47
+ Err ( :: last_error ( ) . unwrap_or ( "failed to open archive" . to_string ( ) ) )
48
48
} else {
49
- Some ( ArchiveRO { ptr : ar } )
49
+ Ok ( ArchiveRO { ptr : ar } )
50
50
}
51
51
} ;
52
52
Original file line number Diff line number Diff line change @@ -126,7 +126,7 @@ impl<'a> ArchiveBuilder<'a> {
126
126
Some ( ref src) => src,
127
127
None => return None ,
128
128
} ;
129
- self . src_archive = Some ( ArchiveRO :: open ( src) ) ;
129
+ self . src_archive = Some ( ArchiveRO :: open ( src) . ok ( ) ) ;
130
130
self . src_archive . as_ref ( ) . unwrap ( ) . as_ref ( )
131
131
}
132
132
@@ -186,9 +186,8 @@ impl<'a> ArchiveBuilder<'a> {
186
186
where F : FnMut ( & str ) -> bool + ' static
187
187
{
188
188
let archive = match ArchiveRO :: open ( archive) {
189
- Some ( ar) => ar,
190
- None => return Err ( io:: Error :: new ( io:: ErrorKind :: Other ,
191
- "failed to open archive" ) ) ,
189
+ Ok ( ar) => ar,
190
+ Err ( e) => return Err ( io:: Error :: new ( io:: ErrorKind :: Other , e) ) ,
192
191
} ;
193
192
self . additions . push ( Addition :: Archive {
194
193
archive : archive,
Original file line number Diff line number Diff line change @@ -31,21 +31,21 @@ impl MetadataLoader for LlvmMetadataLoader {
31
31
// just keeping the archive along while the metadata is in use.
32
32
let archive = ArchiveRO :: open ( filename)
33
33
. map ( |ar| OwningRef :: new ( box ar) )
34
- . ok_or_else ( | | {
35
- debug ! ( "llvm didn't like `{}`" , filename. display( ) ) ;
36
- format ! ( "failed to read rlib metadata: '{}'" , filename. display( ) )
37
- } ) ?;
34
+ . map_err ( |e | {
35
+ debug ! ( "llvm didn't like `{}`: {} " , filename. display( ) , e ) ;
36
+ format ! ( "failed to read rlib metadata in '{}': {} " , filename. display( ) , e )
37
+ } ) ?;
38
38
let buf: OwningRef < _ , [ u8 ] > = archive
39
39
. try_map ( |ar| {
40
40
ar. iter ( )
41
41
. filter_map ( |s| s. ok ( ) )
42
42
. find ( |sect| sect. name ( ) == Some ( METADATA_FILENAME ) )
43
43
. map ( |s| s. data ( ) )
44
44
. ok_or_else ( || {
45
- debug ! ( "didn't find '{}' in the archive" , METADATA_FILENAME ) ;
46
- format ! ( "failed to read rlib metadata: '{}'" ,
47
- filename. display( ) )
48
- } )
45
+ debug ! ( "didn't find '{}' in the archive" , METADATA_FILENAME ) ;
46
+ format ! ( "failed to read rlib metadata: '{}'" ,
47
+ filename. display( ) )
48
+ } )
49
49
} ) ?;
50
50
Ok ( buf. erase_owner ( ) )
51
51
}
You can’t perform that action at this time.
0 commit comments