root/trunk/texinfo/texinfo-4.8-tempfile_fix-1.patch
| Revision 1184, 2.0 kB (checked in by archaic, 3 years ago) |
|---|
-
texinfo-4.8/util/texindex.c
old new 99 99 /* Directory to use for temporary files. On Unix, it ends with a slash. */ 100 100 char *tempdir; 101 101 102 /* Basename for temp files inside of tempdir. */ 103 char *tempbase; 104 102 105 /* Number of last temporary file. */ 103 106 int tempcount; 104 107 … … 190 193 191 194 decode_command (argc, argv); 192 195 196 /* XXX mkstemp not appropriate, as we need to have somewhat predictable 197 * names. But race condition was fixed, see maketempname. 198 */ 199 tempbase = mktemp ("txidxXXXXXX"); 200 193 201 /* Process input files completely, one by one. */ 194 202 195 203 for (i = 0; i < num_infiles; i++) … … 389 397 static char * 390 398 maketempname (int count) 391 399 { 392 static char *tempbase = NULL;393 400 char tempsuffix[10]; 394 395 if (!tempbase) 396 { 397 int fd; 398 tempbase = concat (tempdir, "txidxXXXXXX"); 399 400 fd = mkstemp (tempbase); 401 if (fd == -1) 402 pfatal_with_name (tempbase); 403 } 401 char *name, *tmp_name; 402 int fd; 404 403 405 404 sprintf (tempsuffix, ".%d", count); 406 return concat (tempbase, tempsuffix); 405 tmp_name = concat (tempdir, tempbase); 406 name = concat (tmp_name, tempsuffix); 407 free(tmp_name); 408 409 fd = open (name, O_CREAT|O_EXCL|O_WRONLY, 0600); 410 if (fd == -1) 411 pfatal_with_name (name); 412 413 close(fd); 414 return name; 407 415 } 408 416 409 417
Note: See TracBrowser for help on using the browser.
