Blame SOURCES/texinfo-6.1-install-info-use-create-tmp-then-rename-pattern.patch
|
|
4fa268 |
diff -up texinfo-6.1/install-info/install-info.c.orig texinfo-6.1/install-info/install-info.c
|
|
|
4fa268 |
--- texinfo-6.1/install-info/install-info.c.orig 2016-06-22 09:49:38.766013018 +0200
|
|
|
4fa268 |
+++ texinfo-6.1/install-info/install-info.c 2016-06-22 14:11:58.673780736 +0200
|
|
|
4fa268 |
@@ -973,18 +973,23 @@ output_dirfile (char *dirfile, int dir_n
|
|
|
4fa268 |
int n_entries_added = 0;
|
|
|
4fa268 |
int i;
|
|
|
4fa268 |
FILE *output;
|
|
|
4fa268 |
+ char *dirfile_tmp = NULL;
|
|
|
4fa268 |
+
|
|
|
4fa268 |
+ asprintf (&dirfile_tmp, "%s.tmp", dirfile);
|
|
|
4fa268 |
+ if (!dirfile_tmp)
|
|
|
4fa268 |
+ xalloc_die ();
|
|
|
4fa268 |
|
|
|
4fa268 |
if (compression_program)
|
|
|
4fa268 |
{
|
|
|
4fa268 |
- char *command = concat (compression_program, ">", dirfile);
|
|
|
4fa268 |
+ char *command = concat (compression_program, ">", dirfile_tmp);
|
|
|
4fa268 |
output = popen (command, "w");
|
|
|
4fa268 |
}
|
|
|
4fa268 |
else
|
|
|
4fa268 |
- output = fopen (dirfile, "w");
|
|
|
4fa268 |
+ output = fopen (dirfile_tmp, "w");
|
|
|
4fa268 |
|
|
|
4fa268 |
if (!output)
|
|
|
4fa268 |
{
|
|
|
4fa268 |
- perror (dirfile);
|
|
|
4fa268 |
+ perror (dirfile_tmp);
|
|
|
4fa268 |
exit (EXIT_FAILURE);
|
|
|
4fa268 |
}
|
|
|
4fa268 |
|
|
|
4fa268 |
@@ -1095,6 +1100,13 @@ output_dirfile (char *dirfile, int dir_n
|
|
|
4fa268 |
pclose (output);
|
|
|
4fa268 |
else
|
|
|
4fa268 |
fclose (output);
|
|
|
4fa268 |
+
|
|
|
4fa268 |
+ if (rename (dirfile_tmp, dirfile) < 0)
|
|
|
4fa268 |
+ {
|
|
|
4fa268 |
+ perror (dirfile_tmp);
|
|
|
4fa268 |
+ exit (EXIT_FAILURE);
|
|
|
4fa268 |
+ }
|
|
|
4fa268 |
+ free (dirfile_tmp);
|
|
|
4fa268 |
}
|
|
|
4fa268 |
|
|
|
4fa268 |
/* Read through the input LINES, to find the section names and the
|