]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
wall: use xmkstemp for temporary file
authorSami Kerola <kerolasa@iki.fi>
Wed, 29 Feb 2012 14:59:42 +0000 (15:59 +0100)
committerSami Kerola <kerolasa@iki.fi>
Sun, 18 Mar 2012 13:28:04 +0000 (14:28 +0100)
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
term-utils/Makefile.am
term-utils/wall.c

index 49ad5ff2fbc3e882335ee658516fffeb0a873aed..378676f80902befec8e7653f18efe342d361cd4f 100644 (file)
@@ -51,7 +51,7 @@ endif
 
 if BUILD_WALL
 usrbin_exec_PROGRAMS += wall
-wall_SOURCES = wall.c ttymsg.c ttymsg.h $(top_srcdir)/lib/strutils.c
+wall_SOURCES = wall.c ttymsg.c ttymsg.h $(top_srcdir)/lib/strutils.c $(top_srcdir)/lib/fileutils.c
 dist_man_MANS += wall.1
 wall_CFLAGS = $(SUID_CFLAGS) $(AM_CFLAGS)
 wall_LDFLAGS = $(SUID_LDFLAGS) $(AM_LDFLAGS)
index 70898260320ba0ecbc9e4382699c1fc96aa0dc35..b9f53212ae952df0247934db6ac2f4befbb14052 100644 (file)
@@ -66,6 +66,7 @@
 #include "pathnames.h"
 #include "carefulputc.h"
 #include "c.h"
+#include "fileutils.h"
 
 #define        IGNOREUSER      "sleeper"
 #define WRITE_TIME_OUT 300             /* in seconds */
@@ -188,24 +189,15 @@ makemsg(char *fname, size_t *mbufsize, int print_banner)
        struct stat sbuf;
        time_t now;
        FILE *fp;
-       int fd;
-       char *p, *whom, *where, *hostname, *lbuf, *tmpname, *tmpenv, *mbuf;
+       char *p, *whom, *where, *hostname, *lbuf, *tmpname, *mbuf;
        long line_max;
 
        hostname = xmalloc(sysconf(_SC_HOST_NAME_MAX) + 1);
        line_max = sysconf(_SC_LINE_MAX);
        lbuf = xmalloc(line_max);
 
-       tmpname = xmalloc(PATH_MAX);
-       tmpenv = getenv("TMPDIR");
-       if ((tmpenv))
-               snprintf(tmpname, PATH_MAX, "%s/%s.XXXXXX", tmpenv,
-                       program_invocation_short_name);
-       else
-               snprintf(tmpname, PATH_MAX, "%s/%s.XXXXXX", _PATH_TMP,
-                       program_invocation_short_name);
-       if (!(fd = mkstemp(tmpname)) || !(fp = fdopen(fd, "r+")))
-               err(EXIT_FAILURE, _("can't open temporary file %s"), tmpname);
+       if ((fp = xmkstemp(&tmpname)) == NULL)
+               err(EXIT_FAILURE, _("can't open temporary file"));
        unlink(tmpname);
        free(tmpname);
 
@@ -280,7 +272,7 @@ makemsg(char *fname, size_t *mbufsize, int print_banner)
        free(lbuf);
        rewind(fp);
 
-       if (fstat(fd, &sbuf))
+       if (fstat(fileno(fp), &sbuf))
                err(EXIT_FAILURE, _("fstat failed"));
 
        *mbufsize = (size_t) sbuf.st_size;
@@ -289,7 +281,6 @@ makemsg(char *fname, size_t *mbufsize, int print_banner)
        if (fread(mbuf, 1, *mbufsize, fp) != *mbufsize)
                err(EXIT_FAILURE, _("fread failed"));
 
-       close(fd);
        fclose(fp);
        return mbuf;
 }