Subject: bug#9762: tac fails when given multiple non-seekable inputs due to misuse of mkstemp()

From: Paul Eggert <[email-masked]>
Date: Mon, 17 Oct 2011 10:24:19 -0700

On 10/17/11 08:18, Jim Meyering wrote:
>> +      char const * const Template = "tacXXXXXX";

That "const * const" prompted me to suggest a minor
improvement.  Since Template's address is never taken,
better would be

  char const Template[] = "tacXXXXXX";

Hmm, or better yet, get rid of Template entirely:

--- a/src/tac.c
+++ b/src/tac.c
@@ -430,12 +430,11 @@ copy_to_temp (FILE **g_tmp, char **g_tempfile, int input_fd, char const *file)
 
   if (template == NULL)
     {
-      char const * const Template = "tacXXXXXX";
       tempdir = getenv ("TMPDIR");
       if (tempdir == NULL)
         tempdir = DEFAULT_TMPDIR;
 
-      template = file_name_concat (tempdir, Template, NULL);
+      template = file_name_concat (tempdir, "tacXXXXXX", NULL);
     }
 
   /* FIXME: there's a small window between a successful mkstemp call