@@ -71,19 +71,16 @@ fn create(args: CreateArgs) -> Result<()> {
7171 let mut identifiers = Vec :: with_capacity ( files. len ( ) ) ;
7272 let mut symbol_table = BTreeMap :: new ( ) ;
7373 for path in & files {
74- let file_name = path. file_name ( ) . ok_or_else ( || {
75- Error :: msg ( format ! ( "'{}' is not a file path" , path. to_string_lossy( ) ) )
76- } ) ?;
77- let file_name = file_name. to_str ( ) . ok_or_else ( || {
78- Error :: msg ( format ! ( "'{}' is not valid UTF-8" , file_name. to_string_lossy( ) ) )
74+ let path_str = path. to_str ( ) . ok_or_else ( || {
75+ Error :: msg ( format ! ( "'{}' is not valid UTF-8" , path. to_string_lossy( ) ) )
7976 } ) ?;
80- let identifier = file_name . as_bytes ( ) . to_vec ( ) ;
77+ let identifier = path_str . as_bytes ( ) . to_vec ( ) ;
8178 identifiers. push ( identifier. clone ( ) ) ;
8279
8380 let entries = match symbol_table. entry ( identifier) {
8481 Entry :: Vacant ( e) => e. insert ( Vec :: new ( ) ) ,
8582 Entry :: Occupied ( _) => {
86- return Err ( Error :: msg ( format ! ( "Duplicate file name '{file_name }'" ) ) )
83+ return Err ( Error :: msg ( format ! ( "Duplicate file name '{path_str }'" ) ) )
8784 }
8885 } ;
8986 let object_file = File :: open ( path)
@@ -103,7 +100,11 @@ fn create(args: CreateArgs) -> Result<()> {
103100 let mut builder =
104101 ar:: GnuBuilder :: new ( out, identifiers, ar:: GnuSymbolTableFormat :: Size32 , symbol_table) ?;
105102 for path in files {
106- builder. append_path ( path) ?;
103+ let path_str = path. to_str ( ) . ok_or_else ( || {
104+ Error :: msg ( format ! ( "'{}' is not valid UTF-8" , path. to_string_lossy( ) ) )
105+ } ) ?;
106+ let mut file = File :: open ( & path) ?;
107+ builder. append_file ( path_str. as_bytes ( ) , & mut file) ?;
107108 }
108109 builder. into_inner ( ) ?. flush ( ) ?;
109110 Ok ( ( ) )
0 commit comments