$NetBSD: patch-ae,v 1.1 2003/01/24 14:12:04 itohy Exp $ --- wdiff.c.orig Sun Nov 6 16:57:23 1994 +++ wdiff.c Fri Jan 24 22:41:01 2003 @@ -168,6 +168,10 @@ # define L_tmpnam PATH_MAX #endif +#ifdef HAVE_MKSTEMP +# define MKSTEMP_TEMPLATE "/tmp/wdiffXXXXXXXX" +#endif + typedef struct side SIDE; /* all variables for one side */ struct side { @@ -555,6 +559,9 @@ split_file_into_words (SIDE *side) { struct stat stat_buffer; /* for checking if file is directory */ +#ifdef HAVE_MKSTEMP + int fd; +#endif /* Open files. */ @@ -566,10 +573,23 @@ this temporary local file. Once done, prepare it for reading. We do not need the file name itself anymore. */ +#ifdef HAVE_MKSTEMP + strcpy (side->temp_name, MKSTEMP_TEMPLATE); + if ((fd = mkstemp(side->temp_name)) < 0) + error (EXIT_OTHER_REASON, 0, "mkstemp failed"); + side->file = fdopen (fd, "w+"); + if (side->file == NULL) + { + int e = errno; + (void) unlink (side->temp_name); + error (EXIT_OTHER_REASON, e, side->temp_name); + } +#else tmpnam (side->temp_name); side->file = fopen (side->temp_name, "w+"); if (side->file == NULL) error (EXIT_OTHER_REASON, errno, side->temp_name); +#endif if (unlink (side->temp_name) != 0) error (EXIT_OTHER_REASON, errno, side->temp_name); while (side->character = getchar (), side->character != EOF) @@ -593,10 +613,23 @@ side->character = getc (side->file); side->position = 0; +#ifdef HAVE_MKSTEMP + strcpy (side->temp_name, MKSTEMP_TEMPLATE); + if ((fd = mkstemp(side->temp_name)) < 0) + error (EXIT_OTHER_REASON, 0, "mkstemp failed"); + side->temp_file = fdopen (fd, "w"); + if (side->temp_file == NULL) + { + int e = errno; + (void) unlink (side->temp_name); + error (EXIT_OTHER_REASON, e, side->temp_name); + } +#else tmpnam (side->temp_name); side->temp_file = fopen (side->temp_name, "w"); if (side->temp_file == NULL) error (EXIT_OTHER_REASON, errno, side->temp_name); +#endif /* Complete splitting input file into words on output. */ @@ -1135,7 +1168,7 @@ | Main program. | `---------------*/ -void +int main (int argc, char *const argv[]) { int option_char; /* option character */ @@ -1329,5 +1362,5 @@ || count_changed_left || count_changed_right) exit (EXIT_ANY_DIFFERENCE); - exit (EXIT_NO_DIFFERENCES); + return EXIT_NO_DIFFERENCES; }