Module: wine Branch: master Commit: 67f6c6c0c92ac82db7da067fc06fe00fa05b9340 URL: https://source.winehq.org/git/wine.git/?a=commit;h=67f6c6c0c92ac82db7da067fc...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Mar 4 14:46:02 2019 +0100
winebuild: Add a helper function to open a temporary file as output.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
tools/winebuild/build.h | 1 + tools/winebuild/import.c | 27 +++++++++++---------------- tools/winebuild/utils.c | 20 +++++++++++++------- 3 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/tools/winebuild/build.h b/tools/winebuild/build.h index d65af7b..d7b46a6 100644 --- a/tools/winebuild/build.h +++ b/tools/winebuild/build.h @@ -260,6 +260,7 @@ extern FILE *open_input_file( const char *srcdir, const char *name ); extern void close_input_file( FILE *file ); extern void open_output_file(void); extern void close_output_file(void); +extern char *open_temp_output_file( const char *suffix ); extern void dump_bytes( const void *buffer, unsigned int size ); extern int remove_stdcall_decoration( char *name ); extern void assemble_file( const char *src_file, const char *obj_file ); diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c index b3c7121..6ab7765 100644 --- a/tools/winebuild/import.c +++ b/tools/winebuild/import.c @@ -489,22 +489,20 @@ static char *create_undef_symbols_file( DLLSPEC *spec ) char *as_file, *obj_file; int i; unsigned int j; - FILE *f;
- as_file = get_temp_file_name( output_file_name, ".s" ); - if (!(f = fopen( as_file, "w" ))) fatal_error( "Cannot create %s\n", as_file ); - fprintf( f, "\t.data\n" ); + as_file = open_temp_output_file( ".s" ); + output( "\t.data\n" );
for (i = 0; i < spec->nb_entry_points; i++) { ORDDEF *odp = &spec->entry_points[i]; if (odp->type == TYPE_STUB || odp->type == TYPE_ABS || odp->type == TYPE_VARIABLE) continue; if (odp->flags & FLAG_FORWARD) continue; - fprintf( f, "\t%s %s\n", get_asm_ptr_keyword(), asm_name(odp->link_name) ); + output( "\t%s %s\n", get_asm_ptr_keyword(), asm_name(odp->link_name) ); } for (j = 0; j < extra_ld_symbols.count; j++) - fprintf( f, "\t%s %s\n", get_asm_ptr_keyword(), asm_name(extra_ld_symbols.str[j]) ); - fclose( f ); + output( "\t%s %s\n", get_asm_ptr_keyword(), asm_name(extra_ld_symbols.str[j]) ); + fclose( output_file );
obj_file = get_temp_file_name( output_file_name, ".o" ); assemble_file( as_file, obj_file ); @@ -1332,13 +1330,12 @@ void output_imports( DLLSPEC *spec ) }
/* create a new asm temp file */ -static void new_output_as_file( const char *prefix ) +static void new_output_as_file(void) { - char *name = get_temp_file_name( prefix, ".s" ); + char *name;
if (output_file) fclose( output_file ); - if (!(output_file = fopen( name, "w" ))) - fatal_error( "Unable to create output file '%s'\n", name ); + name = open_temp_output_file( ".s" ); strarray_add( &as_files, name, NULL ); }
@@ -1381,9 +1378,7 @@ static void build_windows_import_lib( DLLSPEC *spec ) char *def_file; const char *as_flags, *m_flag;
- def_file = get_temp_file_name( output_file_name, ".def" ); - if (!(output_file = fopen( def_file, "w" ))) - fatal_error( "Unable to create output file '%s'\n", def_file ); + def_file = open_temp_output_file( ".def" ); output_def_file( spec, 0 ); fclose( output_file );
@@ -1442,7 +1437,7 @@ static void build_unix_import_lib( DLLSPEC *spec ) case TYPE_CDECL: case TYPE_STDCALL: prefix = (!odp->name || (odp->flags & FLAG_ORDINAL)) ? import_ord_prefix : import_func_prefix; - new_output_as_file( spec->file_name ); + new_output_as_file(); output( "\t.text\n" ); output( "\n\t.align %d\n", get_alignment( get_ptr_size() )); output( "\t%s\n", func_declaration( name ) ); @@ -1461,7 +1456,7 @@ static void build_unix_import_lib( DLLSPEC *spec )
if (!as_files.count) /* create a dummy file to avoid empty import libraries */ { - new_output_as_file( spec->file_name ); + new_output_as_file(); output( "\t.text\n" ); }
diff --git a/tools/winebuild/utils.c b/tools/winebuild/utils.c index 09b01fa..06c3d39 100644 --- a/tools/winebuild/utils.c +++ b/tools/winebuild/utils.c @@ -734,16 +734,10 @@ void open_output_file(void) if (output_file_name) { if (strendswith( output_file_name, ".o" )) - { - output_file_source_name = get_temp_file_name( output_file_name, ".s" ); - if (!(output_file = fopen( output_file_source_name, "w" ))) - fatal_error( "Unable to create output file '%s'\n", output_file_name ); - } + output_file_source_name = open_temp_output_file( ".s" ); else - { if (!(output_file = fopen( output_file_name, "w" ))) fatal_error( "Unable to create output file '%s'\n", output_file_name ); - } } else output_file = stdout; } @@ -762,6 +756,18 @@ void close_output_file(void)
/******************************************************************* + * open_temp_output_file + */ +char *open_temp_output_file( const char *suffix ) +{ + char *tmp_file = get_temp_file_name( output_file_name, suffix ); + if (!(output_file = fopen( tmp_file, "w" ))) + fatal_error( "Unable to create output file '%s'\n", tmp_file ); + return tmp_file; +} + + +/******************************************************************* * remove_stdcall_decoration * * Remove a possible @xx suffix from a function name.