=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/sdiff/edit.c,v retrieving revision 1.13 retrieving revision 1.14 diff -c -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 **** ! /* $OpenBSD: edit.c,v 1.13 2006/05/10 14:32:51 ray Exp $ */ /* * Written by Raymond Lai . --- 1,4 ---- ! /* $OpenBSD: edit.c,v 1.14 2006/05/25 03:20:32 ray Exp $ */ /* * Written by Raymond Lai . *************** *** 12,17 **** --- 12,18 ---- #include #include #include + #include #include #include "common.h" *************** *** 69,74 **** --- 70,76 ---- { FILE *file; size_t nread, nwritten; + int fd; char *filename; char buf[BUFSIZ], *text; *************** *** 121,128 **** } /* Create temp file. */ ! filename = xmktemp(text); /* text is no longer used. */ free(text); --- 123,144 ---- } /* Create temp file. */ ! 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,171 **** warn("could not delete: %s", filename); fclose(file); - /* filename was malloc()ed in xmktemp(). */ free(filename); return (0); --- 181,186 ----