=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/sdiff/edit.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- src/usr.bin/sdiff/edit.c 2006/05/10 14:32:51 1.13 +++ src/usr.bin/sdiff/edit.c 2006/05/25 03:20:32 1.14 @@ -1,4 +1,4 @@ -/* $OpenBSD: edit.c,v 1.13 2006/05/10 14:32:51 ray Exp $ */ +/* $OpenBSD: edit.c,v 1.14 2006/05/25 03:20:32 ray Exp $ */ /* * Written by Raymond Lai . @@ -12,6 +12,7 @@ #include #include #include +#include #include #include "common.h" @@ -69,6 +70,7 @@ { FILE *file; size_t nread, nwritten; + int fd; char *filename; char buf[BUFSIZ], *text; @@ -121,8 +123,22 @@ } /* Create temp file. */ - filename = xmktemp(text); + if (asprintf(&filename, "%s/sdiff.XXXXXXXXXX", tmpdir) == -1) + err(2, "asprintf"); + if ((fd = mkstemp(filename)) == -1) + err(2, "mkstemp"); + if (text != NULL) { + size_t len; + len = strlen(text); + if ((nwritten = write(fd, text, len)) == -1 || + nwritten != len) { + warn("error writing to temp file"); + cleanup(filename); + } + } + close(fd); + /* text is no longer used. */ free(text); @@ -165,7 +181,6 @@ warn("could not delete: %s", filename); fclose(file); - /* filename was malloc()ed in xmktemp(). */ free(filename); return (0);