* Make temp file names more descriptive. * Add a way to identify failing mkstemps by using specialized log messages for each call to mkstemps.
Signed-off-by: Andrew Boyarshin andrew.boyarshin@gmail.com --- First part of the 199498 patch split into 2 separate patches. --- tools/widl/parser.l | 15 +++++++++++---- tools/widl/widl.c | 9 ++++++--- 2 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/tools/widl/parser.l b/tools/widl/parser.l index 4d3b9d683e82..278042520585 100644 --- a/tools/widl/parser.l +++ b/tools/widl/parser.l @@ -536,6 +536,7 @@ int do_import(char *fname) struct imports *import; int ptr = import_stack_ptr; int ret, fd; + char *base_fname = dup_basename(fname, ".idl");
import = first_import; while (import && strcmp(import->name, fname)) @@ -564,9 +565,15 @@ int do_import(char *fname) input_name = path; line_number = 1;
- name = xstrdup( "widl.XXXXXX" ); + name = xmalloc( strlen(base_fname) + 15); + + strcpy( name, base_fname ); + strcat( name, "_import.XXXXXX" ); + + free(base_fname); + if((fd = mkstemps( name, 0 )) == -1) - error("Could not generate a temp name from %s\n", name); + error("Could not generate an import temp name from %s\n", name);
temp_name = name; if (!(f = fdopen(fd, "wt"))) @@ -605,9 +612,9 @@ static void switch_to_acf(void) acf_name = NULL; line_number = 1;
- name = xstrdup( "widl.XXXXXX" ); + name = xstrdup( "widl_acf.XXXXXX" ); if((fd = mkstemps( name, 0 )) == -1) - error("Could not generate a temp name from %s\n", name); + error("Could not generate an ACF temp name from %s\n", name);
temp_name = name; if (!(f = fdopen(fd, "wt"))) diff --git a/tools/widl/widl.c b/tools/widl/widl.c index b40745a49f8e..b3b60da00169 100644 --- a/tools/widl/widl.c +++ b/tools/widl/widl.c @@ -967,13 +967,16 @@ int main(int argc,char *argv[]) { FILE *output; int fd; - char *name = xmalloc( strlen(header_name) + 8 ); + char *base_input_name = dup_basename(input_name, ".idl"); + char *name = xmalloc(strlen(base_input_name) + 8);
- strcpy( name, header_name ); + strcpy( name, base_input_name ); strcat( name, ".XXXXXX" );
+ free(base_input_name); + if ((fd = mkstemps( name, 0 )) == -1) - error("Could not generate a temp name from %s\n", name); + error("Could not generate a root temp name from %s\n", name);
temp_name = name; if (!(output = fdopen(fd, "wt")))