diff options
author | tjr <tjr@FreeBSD.org> | 2002-05-29 14:23:10 +0000 |
---|---|---|
committer | tjr <tjr@FreeBSD.org> | 2002-05-29 14:23:10 +0000 |
commit | 17b5f40eed23a75b6654c07624c233dce287d668 (patch) | |
tree | 44a874a932c53dbf5c36080d29d5fb6731b9b08b /usr.bin | |
parent | b2b3f82524aad49cf7f09630ba0fb063287e33a3 (diff) | |
download | FreeBSD-src-17b5f40eed23a75b6654c07624c233dce287d668.zip FreeBSD-src-17b5f40eed23a75b6654c07624c233dce287d668.tar.gz |
Use mkstemp(3) to avoid /tmp race.
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/gencat/gencat.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/usr.bin/gencat/gencat.c b/usr.bin/gencat/gencat.c index 7826dfe..1d6c41e 100644 --- a/usr.bin/gencat/gencat.c +++ b/usr.bin/gencat/gencat.c @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include <sys/file.h> #include <sys/stat.h> #include <err.h> +#include <paths.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -136,7 +137,7 @@ main(int argc, char *argv[]) static void writeIfChanged(char *fname, int lang, int orConsts) { - char tmpname[32]; + char tmpname[] = _PATH_TMP"/gencat.XXXXXX"; char buf[BUFSIZ], tbuf[BUFSIZ], *cptr, *tptr; int fd, tfd; int diff = FALSE; @@ -153,9 +154,8 @@ writeIfChanged(char *fname, int lang, int orConsts) } /* If it does exist, create a temp file for now */ - sprintf(tmpname, "/tmp/gencat.%d", (int) getpid()); - if ((tfd = open(tmpname, O_RDWR|O_CREAT, 0666)) < 0) - errx(1, "unable to open temporary file: %s", tmpname); + if ((tfd = mkstemp(tmpname)) < 0) + err(1, "mkstemp"); unlink(tmpname); /* Write to the temp file and rewind */ |